Skip to content

Commit 21f6e15

Browse files
committed
docs(gateway): document helm template CRD install to avoid 1MB secret limit
1 parent 96f72b0 commit 21f6e15

1 file changed

Lines changed: 26 additions & 4 deletions

File tree

docs/guide/gateway/gateway.md

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ The LBC is built for Gateway API version v1.5.0.
1818
* For `ip` target type:
1919
* Pods have native AWS VPC networking configured. For more information, see the [Amazon VPC CNI plugin](https://github.com/aws/amazon-vpc-cni-k8s#readme) documentation.
2020
* Installation of Gateway API CRDs — choose one of:
21-
* **Helm (recommended):** enable via Helm values when installing or upgrading the chart:
21+
* **`helm template` (recommended):** render the chart locally and pipe into `kubectl apply --server-side`. The chart bundles Gateway API CRDs under `crds/`, so this installs them without creating a Helm release secret. Enable CRDs in your values file:
2222
```yaml
2323
crds:
2424
gatewayAPI:
@@ -27,10 +27,32 @@ The LBC is built for Gateway API version v1.5.0.
2727
experimental:
2828
enabled: true # optional, required for L4 (TCPRoute, UDPRoute, TLSRoute)
2929
```
30+
Then apply:
31+
```bash
32+
helm template aws-load-balancer-controller eks/aws-load-balancer-controller \
33+
-f values.yaml \
34+
--include-crds \
35+
| kubectl apply --server-side -f -
36+
```
37+
Install or upgrade the controller itself separately with CRDs **disabled** in values to avoid the 1 MB Helm release secret limit (see warning below).
38+
3039
* **Manual:** apply directly from the upstream release:
31-
* Standard: `kubectl apply --server-side=true -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/standard-install.yaml` [REQUIRED]
32-
* Experimental: `kubectl apply --server-side=true -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/experimental-install.yaml` [OPTIONAL: Used for L4 Routes]
33-
* Installation of LBC Gateway API specific CRDs: `kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/config/crd/gateway/gateway-crds.yaml`
40+
* Standard: `kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/standard-install.yaml` [REQUIRED]
41+
* Experimental: `kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/experimental-install.yaml` [OPTIONAL: Used for L4 Routes]
42+
43+
!!! warning "Do not install Gateway API CRDs via `helm install` or `helm upgrade`"
44+
Helm stores a gzip-compressed copy of every rendered manifest in a Kubernetes Secret (capped at 1 MB). Gateway API CRDs are large enough to exceed this limit, causing installs and upgrades to fail:
45+
```
46+
Error: UPGRADE FAILED: create: failed to create: Secret
47+
"sh.helm.release.v1.aws-load-balancer-controller.v2" is invalid:
48+
data: Too long: must have at most 1048576 bytes
49+
```
50+
Use `helm template --include-crds | kubectl apply --server-side` to install CRDs out-of-band. This is the same pattern used by [Envoy Gateway](https://gateway.envoyproxy.io/docs/install/install-helm/) for the same reason.
51+
52+
* Installation of LBC Gateway API specific CRDs:
53+
```bash
54+
kubectl apply --server-side -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/config/crd/gateway/gateway-crds.yaml
55+
```
3456

3557

3658
## Upgrading Gateway API CRDs

0 commit comments

Comments
 (0)