Ready-to-apply manifests for the cluster-level prerequisites described in
../CLUSTER-SETUP.md. Edit the FIXME: placeholders (IP ranges, email, namespace, release
name) before applying.
cluster-setup/
├── gatewayclass.yaml # plain Envoy Gateway GatewayClass
├── clusterissuer-letsencrypt.yaml # optional: cert-manager Let's Encrypt issuer
└── metallb-dualstack/ # dual-stack Envoy LB pinned to a MetalLB pool
├── envoyproxy.yaml # references an EXISTING MetalLB pool by name
└── gatewayclass.yaml # GatewayClass wired to the EnvoyProxy
These manifests reference an existing MetalLB
IPAddressPool(by name, inenvoyproxy.yaml); they do not create one. The pool must contain both an IPv4 and an IPv6 range for dual-stack to work.
CRDs and controllers are installed with helm/kubectl per ../CLUSTER-SETUP.md (Gateway API experimental CRDs,
Envoy Gateway, cert-manager, an RWX StorageClass). Once those are in place, apply the manifests here.
Pick one GatewayClass:
A. Plain (no MetalLB customization):
kubectl apply -f cluster-setup/gatewayclass.yamlB. MetalLB pool + dual-stack (applies the EnvoyProxy and a GatewayClass that references it; set the pool name in
envoyproxy.yaml first):
kubectl apply -f cluster-setup/metallb-dualstack/Requires Envoy Gateway's own CRDs (the
EnvoyProxykind). If you installed the controller with--skip-crds, apply them first - see../CLUSTER-SETUP.mdsection 2 - otherwise this fails withno matches for kind "EnvoyProxy".
Optional TLS (after cert-manager is installed):
kubectl apply -f cluster-setup/clusterissuer-letsencrypt.yamlAll variants create a GatewayClass named envoy, so set gateway.className=envoy in your chart values.