-
Notifications
You must be signed in to change notification settings - Fork 103
feat: Set up NGF integration to N1 Console #902
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
2a0030b
961a680
7b2ac9d
01c0d91
b392c5e
e9807b2
e21ebb9
0e72d5b
d2e59f1
154e935
d077a80
51fb9f1
0ad8ac4
a408a90
8a91b9b
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,18 @@ | ||
--- | ||
nd-docs: "DOCS-000" | ||
files: | ||
- content/ngf/install/manifests.md | ||
- content/nginx-one/ngf/add-ngf-manifests.md | ||
--- | ||
|
||
#### Stable release | ||
|
||
```shell | ||
kubectl apply --server-side -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/crds.yaml | ||
``` | ||
|
||
#### Edge version | ||
|
||
```shell | ||
kubectl apply --server-side -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/main/deploy/crds.yaml | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
--- | ||
nd-docs: "DOCS-000" | ||
files: | ||
- content/ngf/install/manifests.md | ||
- content/nginx-one/ngf/add-ngf-manifests.md | ||
--- | ||
|
||
{{< call-out "note" >}} By default, NGINX Gateway Fabric is installed in the **nginx-gateway** namespace. You can deploy in another namespace by modifying the manifest files. {{< /call-out >}} | ||
|
||
{{<tabs name="install-manifests">}} | ||
|
||
{{%tab name="Default"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX OSS. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/default/deploy.yaml | ||
``` | ||
|
||
{{% /tab %}} | ||
|
||
{{%tab name="AWS NLB"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX OSS. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/default/deploy.yaml | ||
``` | ||
|
||
To set up an AWS Network Load Balancer service, add these annotations to your Gateway infrastructure field: | ||
|
||
```yaml | ||
spec: | ||
infrastructure: | ||
annotations: | ||
service.beta.kubernetes.io/aws-load-balancer-type: "external" | ||
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip" | ||
``` | ||
{{% /tab %}} | ||
{{%tab name="Azure"%}} | ||
Deploys NGINX Gateway Fabric with NGINX OSS and `nodeSelector` to deploy on Linux nodes. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/azure/deploy.yaml | ||
``` | ||
|
||
{{% /tab %}} | ||
|
||
{{%tab name="NGINX Plus"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX Plus. The image is pulled from the | ||
NGINX Plus Docker registry, and the `imagePullSecretName` is the name of the Secret to use to pull the image. | ||
The NGINX Plus JWT Secret used to run NGINX Plus is also specified in a volume mount and the `--usage-report-secret` parameter. These Secrets are created as part of the [Before you begin](#before-you-begin) section. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/nginx-plus/deploy.yaml | ||
``` | ||
|
||
{{% /tab %}} | ||
|
||
{{%tab name="Experimental"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX OSS and experimental features. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/experimental/deploy.yaml | ||
``` | ||
|
||
{{< call-out "note" >}} Requires the Gateway APIs installed from the experimental channel. {{< /call-out >}} | ||
|
||
{{% /tab %}} | ||
|
||
{{%tab name="NGINX Plus Experimental"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX Plus and experimental features. The image is pulled from the | ||
NGINX Plus Docker registry, and the `imagePullSecretName` is the name of the Secret to use to pull the image. | ||
The NGINX Plus JWT Secret used to run NGINX Plus is also specified in a volume mount and the `--usage-report-secret` parameter. These Secrets are created as part of the [Before you begin](#before-you-begin) section. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/nginx-plus-experimental/deploy.yaml | ||
``` | ||
|
||
{{< call-out "note" >}} Requires the Gateway APIs installed from the experimental channel. {{< /call-out >}} | ||
|
||
{{% /tab %}} | ||
|
||
{{%tab name="NodePort"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX OSS using a Service type of `NodePort`. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/nodeport/deploy.yaml | ||
``` | ||
|
||
{{% /tab %}} | ||
|
||
{{%tab name="OpenShift"%}} | ||
|
||
Deploys NGINX Gateway Fabric with NGINX OSS on OpenShift. | ||
|
||
```shell | ||
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v{{< version-ngf >}}/deploy/openshift/deploy.yaml | ||
``` | ||
|
||
{{% /tab %}} | ||
|
||
{{</tabs>}} | ||
|
||
### Verify the Deployment | ||
|
||
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 (note that the pod name will include a unique string): | ||
|
||
```text | ||
NAME READY STATUS RESTARTS AGE | ||
nginx-gateway-5d4f4c7db7-xk2kq 1/1 Running 0 112s | ||
``` |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
nd-docs: "DOCS-000" | ||
files: | ||
- content/ngf/install/manifests.md | ||
- content/nginx-one/ngf/add-ngf-manifests.md | ||
--- | ||
|
||
To complete this guide, you'll need to install: | ||
|
||
- [kubectl](https://kubernetes.io/docs/tasks/tools/), a command-line interface for managing Kubernetes clusters. | ||
- [Add certificates for secure authentication]({{< ref "/ngf/install/secure-certificates.md" >}}) in a production environment. | ||
|
||
{{< call-out "important" >}} If you’d like to use NGINX Plus, some additional setup is also required: {{< /call-out >}} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,170 @@ | ||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||
title: Connect NGINX Gateway Fabric with Helm | ||||||||||||||||||||||||||||||||||
toc: true | ||||||||||||||||||||||||||||||||||
weight: 300 | ||||||||||||||||||||||||||||||||||
nd-content-type: how-to | ||||||||||||||||||||||||||||||||||
nd-product: NGINX One | ||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
This document explains how to connect F5 NGINX Gateway Fabric to F5 NGINX One Console with Helm. | ||||||||||||||||||||||||||||||||||
Connecting NGINX Gateway Fabric to NGINX One Console enables centralized monitoring of all controller instances. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Once connected, you'll see a **read-only** configuration of NGINX Gateway Fabric. For each instance, you can review: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
- Read-only configuration file | ||||||||||||||||||||||||||||||||||
- Unmanaged SSL/TLS certificates for Control Planes | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Before you begin | ||||||||||||||||||||||||||||||||||
mjang marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Log in to NGINX One Console. If you need more information, review our [Get started guide]({{< ref "/nginx-one/getting-started.md#before-you-begin" >}}). | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
You also need: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
- Administrator access to a Kubernetes cluster. | ||||||||||||||||||||||||||||||||||
- If you use [Helm](https://helm.sh) and [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl), install them locally. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Create a data plane key | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{< include "/nginx-one/how-to/generate-data-plane-key.md" >}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Create a Kubernetes secret with the data plane key | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To create a Kubernetes secret, you'll need: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
- The Data Plane Key | ||||||||||||||||||||||||||||||||||
- To set up the secret in the same namespace as NGINX Gateway Fabric | ||||||||||||||||||||||||||||||||||
- Use the name `dataplane.key` as shown | ||||||||||||||||||||||||||||||||||
- A namespace. The default NGINX Gateway Fabric namespace is `nginx-gateway` | ||||||||||||||||||||||||||||||||||
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. The namespace needs to be created first before the Secret. We should give them the shell command
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.
Suggested change
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. I think this whole section needs a tweak:
Suggested change
|
||||||||||||||||||||||||||||||||||
- You can create it with the following command: `kubectl create namespace nginx-gateway` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Once you have that information, run the following command: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
kubectl create secret generic dataplane-key \ | ||||||||||||||||||||||||||||||||||
--from-literal=dataplane.key=<Your Dataplane Key> \ | ||||||||||||||||||||||||||||||||||
-n <namespace> | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Install Gateway API resources | ||||||||||||||||||||||||||||||||||
<!-- Corresponds to step 2 in the UX --> | ||||||||||||||||||||||||||||||||||
{{< include "/ngf/installation/install-gateway-api-resources.md" >}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Install from the OCI registry | ||||||||||||||||||||||||||||||||||
<!-- Corresponds to step 3 in the UX --> | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
The following steps install NGINX Gateway Fabric directly from the OCI helm registry. If you prefer, you can [install from sources](#install-from-sources) instead. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{<tabs name="install-helm-oci">}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{%tab name="NGINX"%}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To install the latest stable release of NGINX Gateway Fabric in the **nginx-gateway** namespace, run the following command: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric \ | ||||||||||||||||||||||||||||||||||
--set nginxAgent.dataplaneKeySecretName=<data_plane_key_secret_name> \ | ||||||||||||||||||||||||||||||||||
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.
Suggested change
|
||||||||||||||||||||||||||||||||||
-n nginx-gateway | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{% /tab %}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{%tab name="NGINX Plus"%}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{< note >}} If applicable, replace the F5 Container registry `private-registry.nginx.com` with your internal registry for your NGINX Plus image, and replace `nginx-plus-registry-secret` with your Secret name containing the registry credentials. If your NGINX Plus JWT Secret has a different name than the default `nplus-license`, then define that name using the `nginx.usage.secretName` flag. {{< /note >}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To install the latest stable release of NGINX Gateway Fabric in the **nginx-gateway** namespace, run the following command: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric \ | ||||||||||||||||||||||||||||||||||
--set nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus \ | ||||||||||||||||||||||||||||||||||
--set nginx.plus=true \ | ||||||||||||||||||||||||||||||||||
--set nginx.imagePullSecret=nginx-plus-registry-secret -n nginx-gateway \ | ||||||||||||||||||||||||||||||||||
--set nginxAgent.dataplaneKeySecretName=<data_plane_key_secret_name> | ||||||||||||||||||||||||||||||||||
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.
Suggested change
|
||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{% /tab %}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{</tabs>}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
`ngf` is the name of the release, and can be changed to any name you want. This name is added as a prefix to the Deployment name. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
If you want the latest version from the **main** branch, add `--version 0.0.0-edge` to your install command. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To wait for the Deployment to be ready, you can either add the `--wait` flag to the `helm install` command, or run the following after installing: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
kubectl wait --timeout=5m -n nginx-gateway deployment/ngf-nginx-gateway-fabric --for=condition=Available | ||||||||||||||||||||||||||||||||||
mjang marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
### Install from sources {#install-from-sources} | ||||||||||||||||||||||||||||||||||
<!-- Corresponds to step 4 in the UX --> | ||||||||||||||||||||||||||||||||||
If you prefer to install directly from sources, instead of through the OCI helm registry, use the following steps. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{< include "/ngf/installation/helm/pulling-the-chart.md" >}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{<tabs name="install-helm-src">}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{%tab name="NGINX"%}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To install the chart into the **nginx-gateway** namespace, run the following command: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
helm install ngf . --create-namespace -n nginx-gateway | ||||||||||||||||||||||||||||||||||
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 also needs to data plane key flag (and doesn't need the |
||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{% /tab %}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{%tab name="NGINX Plus"%}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{< note >}} If applicable, replace the F5 Container registry `private-registry.nginx.com` with your internal registry for your NGINX Plus image, and replace `nginx-plus-registry-secret` with your Secret name containing the registry credentials. If your NGINX Plus JWT Secret has a different name than the default `nplus-license`, then define that name using the `nginx.usage.secretName` flag. {{< /note >}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To install the chart into the **nginx-gateway** namespace, run the following command: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
helm install ngf . --set nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus --set nginx.plus=true --set nginx.imagePullSecret=nginx-plus-registry-secret -n nginx-gateway | ||||||||||||||||||||||||||||||||||
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. Ditto |
||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{% /tab %}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
{{</tabs>}} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
`ngf` is the name of the release, and can be changed to any name you want. This name is added as a prefix to the Deployment name. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
To wait for the Deployment to be ready, you can either add the `--wait` flag to the `helm install` command, or run the following after installing: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
kubectl wait --timeout=5m -n nginx-gateway deployment/ngf-nginx-gateway-fabric --for=condition=Available | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Verify a connection to NGINX One Console | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
After deploying NGINX Gateway Fabric with NGINX Agent, you can verify the connection to NGINX One Console. | ||||||||||||||||||||||||||||||||||
Log in to your F5 Distributed Cloud Console account. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
- Select **NGINX One > Visit Service**. | ||||||||||||||||||||||||||||||||||
- In the dashboard, select **Manage > Control Planes**. You should see your Control Planes listed by name, product, and version. Each control plane is associated with one or more instances. | ||||||||||||||||||||||||||||||||||
- Select the name of the Control Plane. In the **Instances** section, select the instance of your choice. You can review instance details, including the name of the **Control Plane**. | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
## Troubleshooting | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
If you encounter issues connecting your instances to NGINX One Console, try the following commands: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Check the NGINX Agent version: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
kubectl exec -it -n <namespace> <nginx_pod_name> -- nginx-agent -v | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Check the NGINX Agent configuration: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
kubectl exec -it -n <namespace> <nginx_pod_name> -- cat /etc/nginx-agent/nginx-agent.conf | ||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
Check NGINX Agent logs: | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
```shell | ||||||||||||||||||||||||||||||||||
kubectl exec -it -n <namespace> <nginx_pod_name> -- nginx-agent | ||||||||||||||||||||||||||||||||||
``` |
Uh oh!
There was an error while loading. Please reload this page.