|
1 | 1 | # nginx_gateway_fabric |
2 | 2 |
|
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. |
4 | 4 |
|
5 | 5 | 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. |
6 | 6 |
|
@@ -63,23 +63,37 @@ module "nginx_gateway_fabric" { |
63 | 63 |
|
64 | 64 | ## What this module creates |
65 | 65 |
|
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) |
72 | 82 | - Basic auth via NGF AuthenticationFilter CRD (optional) |
73 | 83 | - PodMonitor for Prometheus scraping (optional) |
74 | 84 | - ReferenceGrant for cross-namespace backends |
75 | 85 | - ClientSettingsPolicy for body size limits |
76 | 86 | - Route53 DNS records for base domain and wildcard (AWS only) |
77 | 87 | - HTTP to HTTPS redirect route (when force_ssl_redirection enabled) |
78 | 88 |
|
| 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 | + |
79 | 93 | ## What flavor modules provide |
80 | 94 |
|
81 | 95 | | Config | Example (AWS) | |
82 | 96 | |--------|---------------| |
83 | 97 | | `service_annotations` | NLB scheme, target type, backend protocol, proxy protocol | |
84 | 98 | | `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) | |
0 commit comments