-
Notifications
You must be signed in to change notification settings - Fork 124
feat: Rework Manifest installation cases #1551
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
d014b72
d718d30
30991bc
3735ffb
8853b37
df3490f
ec13f84
5348a6e
92fe573
47d13db
6f0ad96
94d397c
77ef1b8
3a0e6e7
278864c
d39a1fa
3fb8f54
90dc768
9abdbf6
0e0a8de
f9e4db1
6549688
c7d1c36
43630ba
9e2b8e5
2cec96c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| --- | ||
| nd-product: MISCEL | ||
| --- | ||
|
|
||
| If your deployment used NGINX Plus, you should also remove the secrets created for your license and the F5 registry. | ||
|
|
||
| ```shell | ||
| kubectl delete secret nplus-license | ||
| ``` | ||
|
|
||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| secret "nplus-license" deleted | ||
| ``` | ||
|
|
||
| {{< /details >}} | ||
|
|
||
| ```shell | ||
| kubectl delete secret regcred | ||
| ``` | ||
|
|
||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| secret "regcred" deleted | ||
| ``` | ||
|
|
||
| {{< /details >}} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| --- | ||
| --- | ||
|
|
||
| {{< call-out "important" >}} | ||
|
|
||
| You can view the [Milestone Roadmap](https://github.com/orgs/nginx/projects/10/views/5) in the NGINX Gateway Fabric GitHub project to see what API resources will be supported in upcoming releases. | ||
|
|
||
| {{< /call-out >}} | ||
|
|
||
| {{< table >}} | ||
|
|
||
| | Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | | ||
| |---------------------------------------|---------------------|------------------------|---------------------------------------|-------------|---------------------| | ||
| | [GatewayClass]({{< ref "/ngf/overview/gateway-api-compatibility.md#gatewayclass" >}}) | Supported | Not supported | Supported | v1 | Standard | | ||
| | [Gateway]({{< ref "/ngf/overview/gateway-api-compatibility.md#gateway" >}}) | Supported | Partially supported | Not supported | v1 | Standard | | ||
| | [HTTPRoute]({{< ref "/ngf/overview/gateway-api-compatibility.md#httproute" >}}) | Supported | Partially supported | Not supported | v1 | Standard | | ||
| | [GRPCRoute]({{< ref "/ngf/overview/gateway-api-compatibility.md#grpcroute" >}}) | Supported | Partially supported | Not supported | v1 | Standard | | ||
| | [ReferenceGrant]({{< ref "/ngf/overview/gateway-api-compatibility.md#referencegrant" >}}) | Supported | N/A | Not supported | v1beta1 | Standard | | ||
| | [TLSRoute]({{< ref "/ngf/overview/gateway-api-compatibility.md#tlsroute" >}}) | Supported | Not supported | Not supported | v1alpha2 | Experimental | | ||
| | [TCPRoute]({{< ref "/ngf/overview/gateway-api-compatibility.md#tcproute" >}}) | Not supported | Not supported | Not supported | v1alpha2 | Experimental | | ||
| | [UDPRoute]({{< ref "/ngf/overview/gateway-api-compatibility.md#udproute" >}}) | Not supported | Not supported | Not supported | v1alpha2 | Experimental | | ||
| | [BackendTLSPolicy]({{< ref "/ngf/overview/gateway-api-compatibility.md#backendtlspolicy" >}}) | Partially Supported | Supported | Partially supported | v1alpha3 | Experimental | | ||
| | [Custom policies]({{< ref "/ngf/overview/gateway-api-compatibility.md#custom-policies" >}}) | N/A | N/A | Supported | N/A | N/A | | ||
|
|
||
| {{< /table >}} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| --- | ||
| --- | ||
|
|
||
| {{< call-out "note" >}} If you have already installed Gateway API resources in your cluster, ensure they are a version [supported by NGINX Gateway Fabric]({{< ref "/ngf/overview/technical-specifications.md" >}}) {{< /call-out >}} | ||
|
|
||
| To install the Gateway API resources, use `kubectl kustomize`: | ||
|
|
||
| ```shell | ||
| kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v{{< version-ngf >}}" | kubectl apply -f - | ||
| ``` | ||
|
|
||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| customresourcedefinition.apiextensions.k8s.io/gatewayclasses.gateway.networking.k8s.io created | ||
| customresourcedefinition.apiextensions.k8s.io/gateways.gateway.networking.k8s.io created | ||
| customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created | ||
| customresourcedefinition.apiextensions.k8s.io/httproutes.gateway.networking.k8s.io created | ||
| customresourcedefinition.apiextensions.k8s.io/referencegrants.gateway.networking.k8s.io created | ||
| ``` | ||
|
|
||
| {{< /details >}} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| --- | ||
| --- | ||
|
|
||
| Deploy the NGINX Gateway Fabric CRDs using `kubectl apply`: | ||
|
|
||
| ```shell | ||
| kubectl apply --server-side -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/crds.yaml | ||
| ``` | ||
|
|
||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| customresourcedefinition.apiextensions.k8s.io/clientsettingspolicies.gateway.nginx.org serverside-applied | ||
| customresourcedefinition.apiextensions.k8s.io/nginxgateways.gateway.nginx.org serverside-applied | ||
| customresourcedefinition.apiextensions.k8s.io/nginxproxies.gateway.nginx.org serverside-applied | ||
| customresourcedefinition.apiextensions.k8s.io/observabilitypolicies.gateway.nginx.org serverside-applied | ||
| customresourcedefinition.apiextensions.k8s.io/snippetsfilters.gateway.nginx.org serverside-applied | ||
| customresourcedefinition.apiextensions.k8s.io/upstreamsettingspolicies.gateway.nginx.org serverside-applied | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is going to continually change as we add new CRDs. Doesn't seem maintainable.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unless the new CRDs are being added daily, I don't know why there wouldn't be a problem updating the example output periodically. They're meant to give an impression of output, and are hidden by default. |
||
| ``` | ||
|
|
||
| {{< /details >}} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,127 @@ | ||
| --- | ||
| --- | ||
|
|
||
| {{< call-out "note" >}} These steps use a self-signed issuer, which should not be used in production environments. For production environments, you should use a real [CA issuer](https://cert-manager.io/docs/configuration/ca/). {{< /call-out >}} | ||
|
|
||
| First, create a CA (certificate authority) issuer: | ||
|
|
||
| ```yaml | ||
| kubectl apply -f - <<EOF | ||
| apiVersion: cert-manager.io/v1 | ||
| kind: Issuer | ||
| metadata: | ||
| name: selfsigned-issuer | ||
| namespace: nginx-gateway | ||
| spec: | ||
| selfSigned: {} | ||
| --- | ||
| apiVersion: cert-manager.io/v1 | ||
| kind: Certificate | ||
| metadata: | ||
| name: nginx-gateway-ca | ||
| namespace: nginx-gateway | ||
| spec: | ||
| isCA: true | ||
| commonName: nginx-gateway | ||
| secretName: nginx-gateway-ca | ||
| privateKey: | ||
| algorithm: RSA | ||
| size: 2048 | ||
| issuerRef: | ||
| name: selfsigned-issuer | ||
| kind: Issuer | ||
| group: cert-manager.io | ||
| --- | ||
| apiVersion: cert-manager.io/v1 | ||
| kind: Issuer | ||
| metadata: | ||
| name: nginx-gateway-issuer | ||
| namespace: nginx-gateway | ||
| spec: | ||
| ca: | ||
| secretName: nginx-gateway-ca | ||
| EOF | ||
| ``` | ||
|
|
||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| issuer.cert-manager.io/selfsigned-issuer created | ||
| Warning: spec.privateKey.rotationPolicy: In cert-manager >= v1.18.0, the default value changed from `Never` to `Always`. | ||
| certificate.cert-manager.io/nginx-gateway-ca created | ||
| issuer.cert-manager.io/nginx-gateway-issuer created | ||
| ``` | ||
|
|
||
| {{< /details >}} | ||
|
|
||
| You will then need to create a server certificate for the NGINX Gateway Fabric control plane (server): | ||
|
|
||
| {{< call-out "note" >}} | ||
|
|
||
| The default service name is _nginx-gateway_, and the namespace is _nginx-gateway_, so the `dnsNames` value should be `nginx-gateway.nginx-gateway.svc`. | ||
|
|
||
| This value becomes the name of the NGINX Gateway Fabric control plane service. | ||
|
|
||
| {{< /call-out >}} | ||
|
|
||
| ```yaml {hl_lines=[13]} | ||
| kubectl apply -f - <<EOF | ||
| apiVersion: cert-manager.io/v1 | ||
| kind: Certificate | ||
| metadata: | ||
| name: nginx-gateway | ||
| namespace: nginx-gateway | ||
| spec: | ||
| secretName: server-tls | ||
| usages: | ||
| - digital signature | ||
| - key encipherment | ||
| dnsNames: | ||
| - ngf-nginx-gateway-fabric.nginx-gateway.svc | ||
| issuerRef: | ||
| name: nginx-gateway-issuer | ||
| EOF | ||
| ``` | ||
|
|
||
| Since the TLS Secrets are mounted into each pod that uses them, the NGINX agent (client) Secret is duplicated by the NGINX Gateway Fabric control plane into whichever namespace NGINX is deployed into. | ||
|
|
||
| All updates to the source Secret are propagated to the duplicate Secrets. | ||
|
|
||
| Add the certificate for the NGINX agent (client): | ||
|
|
||
| ```yaml | ||
| kubectl apply -f - <<EOF | ||
| apiVersion: cert-manager.io/v1 | ||
| kind: Certificate | ||
| metadata: | ||
| name: nginx | ||
| namespace: nginx-gateway | ||
| spec: | ||
| secretName: agent-tls | ||
| usages: | ||
| - "digital signature" | ||
| - "key encipherment" | ||
| dnsNames: | ||
| - "*.cluster.local" | ||
| issuerRef: | ||
| name: nginx-gateway-issuer | ||
| EOF | ||
| ``` | ||
|
|
||
| `agent-tls` is the default name: if you use a different name, provide it when installing NGINX Gateway Fabric with the `agent-tls-secret` argument. | ||
|
|
||
| You should see the Secrets created in the `nginx-gateway` namespace: | ||
|
|
||
| ```shell | ||
| kubectl -n nginx-gateway get secrets | ||
| ``` | ||
|
|
||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| agent-tls kubernetes.io/tls 3 3s | ||
| nginx-gateway-ca kubernetes.io/tls 3 15s | ||
| server-tls kubernetes.io/tls 3 8s | ||
| ``` | ||
|
|
||
| {{< /details >}} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| --- | ||
| --- | ||
|
|
||
| To confirm that NGINX Gateway Fabric is running, check the pods in the `nginx-gateway` namespace: | ||
|
|
||
| ```shell | ||
| kubectl get pods -n nginx-gateway | ||
| ``` | ||
|
|
||
| The output should look similar to this (The pod name will include a unique string): | ||
|
|
||
| ```text | ||
| NAME READY STATUS RESTARTS AGE | ||
| nginx-gateway-694897c587-bbz62 1/1 Running 0 29s | ||
| ``` |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| --- | ||
|
|
||
| - [Deploy a Gateway for data plane instances]({{< ref "/ngf/install/deploy-data-plane.md" >}}) | ||
| - [Routing traffic to applications]({{< ref "/ngf/traffic-management/basic-routing.md" >}}) | ||
| - [Secure traffic using Let's Encrypt]({{< ref "/ngf/traffic-security/integrate-cert-manager.md" >}}) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,15 +6,29 @@ nd-files: | |
| - content/ngf/install/manifests.md | ||
| --- | ||
|
|
||
| {{< call-out "warning" >}} This will remove all corresponding custom resources in your entire cluster, across all namespaces. Double-check to make sure you don't have any custom resources you need to keep, and confirm that there are no other Gateway API implementations active in your cluster. {{< /call-out >}} | ||
| {{< call-out "warning" >}} This step will remove all corresponding custom resources in your entire cluster, across every namespace. | ||
|
|
||
| Ensure you don't have any custom resources you need to keep, and confirm that there are no other Gateway API implementations active in your cluster. {{< /call-out >}} | ||
|
|
||
| To uninstall the Gateway API resources, run the following: | ||
|
|
||
| ```shell | ||
| kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v{{< version-ngf >}}" | kubectl delete -f - | ||
| ``` | ||
|
|
||
| Alternatively, if you installed the Gateway APIs from the experimental channel, run the following: | ||
| {{< details summary="Example output" >}} | ||
|
|
||
| ```text | ||
| customresourcedefinition.apiextensions.k8s.io "gatewayclasses.gateway.networking.k8s.io" deleted | ||
| customresourcedefinition.apiextensions.k8s.io "gateways.gateway.networking.k8s.io" deleted | ||
| customresourcedefinition.apiextensions.k8s.io "grpcroutes.gateway.networking.k8s.io" deleted | ||
| customresourcedefinition.apiextensions.k8s.io "httproutes.gateway.networking.k8s.io" deleted | ||
| customresourcedefinition.apiextensions.k8s.io "referencegrants.gateway.networking.k8s.io" deleted | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is going to continually change as Gateway API adds new CRDs. Doesn't seem maintainable.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unless the new CRDs are being added daily, I don't know why there wouldn't be a problem updating the example output periodically. They're meant to give an impression of output, and are hidden by default.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When adding a new CRD, nobody is going to remember that they are referenced in some text output in a random doc. It'll only be when someone is looking at the docs at some point and realizes the inconsistency. It's not the end of the world to be innacurate, but inevitably someone is going to get confused why their output doesn't match what's here. |
||
| ``` | ||
|
|
||
| {{< /details >}} | ||
|
|
||
| If you installed the Gateway APIs from the experimental channel, run the following instead: | ||
|
|
||
| ```shell | ||
| kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v{{< version-ngf >}}" | kubectl delete -f - | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is going to continually change as Gateway API adds new CRDs. Doesn't seem maintainable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unless the new CRDs are being added daily, I don't know why there wouldn't be a problem updating the example output periodically.
They're meant to give an impression of output, and are hidden by default.