Skip to content

Commit 8e45a8d

Browse files
feat(nginx_gateway_fabric): NGF 2.6.5 + HTTP-01/ListenerSet cert flow, wildcard TLS, alias-A base record
- Bump vendored chart 2.4.1 -> 2.6.5 (org image with #5330 fix); raise control-plane resource/replica defaults; imagePullPolicy Always. - HTTP-01 default via ListenerSet listeners; drop the ACK/dns01 wildcard path. Annotate the ListenerSet for the cert-manager listenerset-shim. - Wildcard TLS mode for private/DNS-01 LBs (apex + *.domain, one shim-issued cert). - Base-domain Route53 record: alias-A on AWS (NLB canonical zone id from a static per-region map in nlb_zone_ids.tf) so cnameStrategy:Follow does not chase into amazonaws.com and break DNS-01; plain A/CNAME otherwise; honor the lb_service_record_type override. - README refresh. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c4f4ae0 commit 8e45a8d

6 files changed

Lines changed: 420 additions & 99 deletions

File tree

nginx_gateway_fabric/.terraform.lock.hcl

Lines changed: 165 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nginx_gateway_fabric/README.md

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# nginx_gateway_fabric
22

3-
Cloud-agnostic base module for [NGINX Gateway Fabric](https://github.com/nginxinc/nginx-gateway-fabric) (v2.4.1) using the Kubernetes Gateway API.
3+
Cloud-agnostic base module for [NGINX Gateway Fabric](https://github.com/nginxinc/nginx-gateway-fabric) (v2.6.5) using the Kubernetes Gateway API.
44

55
This module is designed to be called by cloud-specific flavor modules (AWS, GCP, Azure, OVH) that pass their own LB annotations and proxy configuration.
66

@@ -63,23 +63,37 @@ module "nginx_gateway_fabric" {
6363

6464
## What this module creates
6565

66-
- NGINX Gateway Fabric Helm release (chart v2.4.1)
67-
- GatewayClass and Gateway with per-domain HTTPS listeners
68-
- HTTPRoute and GRPCRoute resources from spec rules
69-
- Bootstrap TLS certificates (self-signed, replaced by cert-manager)
70-
- cert-manager ClusterIssuer for HTTP-01 validation
71-
- cert-manager Certificate resources (when mixed cert modes)
66+
- NGINX Gateway Fabric Helm release (chart v2.6.5), with Gateway API experimental
67+
features enabled (required for the ListenerSet CRD)
68+
- GatewayClass and a Gateway carrying only the HTTP (:80) listener, with
69+
`allowedListeners` set so ListenerSets can attach
70+
- `ListenerSet` resources holding the per-hostname HTTPS listeners, chunked at 64
71+
listeners each — this is how the deployment scales past the 64-listeners-per-Gateway
72+
limit
73+
- HTTPRoute and GRPCRoute resources from spec rules (HTTPS routes attach to the
74+
ListenerSet listeners; the HTTP listener stays on the Gateway)
75+
- Bootstrap TLS secrets (self-signed) so each HTTPS listener is valid before
76+
cert-manager issues — the listener-invalid / cert-not-issued deadlock breaker;
77+
cert-manager overwrites them once HTTP-01 succeeds
78+
- cert-manager ClusterIssuer for HTTP-01 validation, annotated onto the ListenerSet
79+
so cert-manager's listenerset-shim issues per-hostname certs
80+
- cert-manager Certificate resources (per hostname, apex/concrete names — HTTP-01
81+
never issues wildcards)
7282
- Basic auth via NGF AuthenticationFilter CRD (optional)
7383
- PodMonitor for Prometheus scraping (optional)
7484
- ReferenceGrant for cross-namespace backends
7585
- ClientSettingsPolicy for body size limits
7686
- Route53 DNS records for base domain and wildcard (AWS only)
7787
- HTTP to HTTPS redirect route (when force_ssl_redirection enabled)
7888

89+
A domain may instead carry a `certificate_reference` (a pre-made TLS secret name) as
90+
an optional escape hatch — that listener uses the supplied secret and cert-manager is
91+
not involved for it.
92+
7993
## What flavor modules provide
8094

8195
| Config | Example (AWS) |
8296
|--------|---------------|
8397
| `service_annotations` | NLB scheme, target type, backend protocol, proxy protocol |
8498
| `nginx_proxy_extra_config` | `rewriteClientIP.mode = "ProxyProtocol"` |
85-
| ACM certificate handling | Detect ACM ARN, create ACK Certificate CRD, rewrite `certificate_reference` to K8s secret name before passing `instance` |
99+
| ACM-at-LB handling | Detect an ACM ARN in `certificate_reference`, set `external_tls_termination` and the NLB `aws-load-balancer-ssl-cert` annotation so the NLB terminates TLS (no in-cluster ACK controller) |
-110 KB
Binary file not shown.
124 KB
Binary file not shown.

0 commit comments

Comments
 (0)