Skip to content

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

Merged
merged 29 commits into from
Aug 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2a0030b
feat: Set up NGF integration to N1 Console
mjang Jul 25, 2025
961a680
delete unneeded file
mjang Jul 29, 2025
7b2ac9d
Apply suggestions from code review
mjang Aug 6, 2025
01c0d91
Apply suggestions from code review
mjang Aug 13, 2025
b392c5e
Update helm install ngf with agent options
mjang Aug 14, 2025
e9807b2
Merge branch 'main' into feat-add-ngf
mjang Aug 14, 2025
e21ebb9
Set up new page for ngf w/manifests. Add includes
mjang Aug 14, 2025
0e72d5b
fix
mjang Aug 14, 2025
d2e59f1
Merge branch 'main' into feat-add-ngf
mjang Aug 14, 2025
154e935
Update commands for nginx-gateway namespace
mjang Aug 14, 2025
d077a80
Apply suggestions from code review
mjang Aug 15, 2025
51fb9f1
Merge branch 'main' into feat-add-ngf
mjang Aug 15, 2025
0ad8ac4
Update content/nginx-one/k8s/add-ngf-manifests.md
mjang Aug 15, 2025
a408a90
Add ref links
mjang Aug 15, 2025
8a91b9b
Merge branch 'main' into feat-add-ngf
ADubhlaoich Aug 18, 2025
8895ad8
Add common k8s secret include
mjang Aug 18, 2025
75fff50
Update dp key update
mjang Aug 18, 2025
1b6bcdb
Apply suggestions from code review
mjang Aug 18, 2025
fd55b91
Apply suggestions from code review
mjang Aug 18, 2025
d6ce67d
Use another include
mjang Aug 18, 2025
e35e6c4
Update content/nginx-one/k8s/add-ngf-manifests.md
mjang Aug 18, 2025
3901ff0
Merge branch 'main' into feat-add-ngf
mjang Aug 18, 2025
bc4ff15
troubleshooting include
mjang Aug 18, 2025
1ef87e4
More feedback
mjang Aug 18, 2025
fa78878
Merge branch 'main' into feat-add-ngf
mjang Aug 18, 2025
4cff9ee
Apply suggestions from code review
mjang Aug 18, 2025
d5a66d7
Include to verify connection
mjang Aug 18, 2025
82ecccc
Merge branch 'main' into feat-add-ngf
mjang Aug 18, 2025
cd4fdea
Move file
mjang Aug 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions content/includes/ngf/installation/deploy-ngf-crds.md
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
```
115 changes: 115 additions & 0 deletions content/includes/ngf/installation/deploy-ngf-manifests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
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>}}

### Provision an NGINX data plane

To deploy the NGINX data plane to connect to the NGINX One Console, follow this guide: [Deploy a Gateway for data plane instances]({{< ref "/ngf/install/deploy-data-plane.md" >}}).

13 changes: 13 additions & 0 deletions content/includes/ngf/installation/install-manifests-prereqs.md
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
Expand Up @@ -3,6 +3,9 @@ docs:
files:
- content/nginx-one/secure-your-fleet/set-up-security-alerts.md
- content/nginx-one/getting-started.md
- content/nginx-one/ngf/add-nic.md
- content/nginx-one/ngf/add-ngf-helm.md
- content/nginx-one/ngf/add-ngf-manifests.md
---

A data plane key is a security token that ensures only trusted NGINX instances can register and communicate with NGINX One.
Expand All @@ -17,3 +20,5 @@ Data plane keys are displayed only once and cannot be retrieved later. Be sure t

Data plane keys expire after one year. You can change this expiration date later by [editing the key]({{< ref "nginx-one/connect-instances/create-manage-data-plane-keys.md#change-expiration-date" >}}). If you [revoke a data plane key]({{< ref "nginx-one/connect-instances/create-manage-data-plane-keys.md#revoke-data-plane-key" >}}) you disconnect all instances registered with that key.
{{</call-out>}}

For more options associated with data plane keys, see [Create and manage data plane keys]({{< ref "/nginx-one/connect-instances/create-manage-data-plane-keys.md" >}}).
20 changes: 20 additions & 0 deletions content/includes/nginx-one/how-to/k8s-secret-dp-key.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
nd-docs: "DOCS-000"
files:
- content/nginx-one/k8s/add-ngf-manifests.md
- content/nginx-one/k8s/add-ngf-helm.md
---

To create a Kubernetes secret, you'll need:

- The Data Plane Key
- The `nginx-gateway` namespace must exist. You can create it with the following command: `kubectl create namespace nginx-gateway`

- Then create the secret with the following command. The key must be named `dataplane.key`:

```shell
kubectl create secret generic dataplane-key \
--from-literal=dataplane.key=<Your Dataplane Key> \
-n nginx-gateway
```

26 changes: 26 additions & 0 deletions content/includes/nginx-one/how-to/ngf-troubleshooting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
nd-docs: "DOCS-000"
files:
- content/nginx-one/k8s/add-ngf-manifests.md
- content/nginx-one/k8s/add-ngf-helm.md
---

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
```
14 changes: 14 additions & 0 deletions content/includes/nginx-one/how-to/verify-connection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
nd-docs: "DOCS-000"
files:
- content/nginx-one/k8s/add-ngf-manifests.md
- content/nginx-one/k8s/add-ngf-helm.md
---

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**.

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ Data plane keys are displayed only once and cannot be retrieved later. Be sure t

Data plane keys expire after one year. You can change this expiration date later by editing the key.

Revoking a data plane key disconnects all instances that were registered with that key.
You can disconnect all instances associated with a data plane key in the following ways:

- Revoke the data plane key
- Let the data plane key expire

Either action disconnects all instances registered with that key.
{{</call-out>}}

## Create a new data plane key
Expand Down
14 changes: 1 addition & 13 deletions content/nginx-one/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,20 +110,9 @@ The following instructions include minimal information, sufficient to "get start

### Generate a data plane key {#generate-data-plane-key}

A data plane key is a security token that ensures only trusted NGINX instances can register and communicate with NGINX One.

To generate a data plane key:

- **For a new key:** In the **Add Instance** pane, select **Generate Data Plane Key**.
- **To reuse an existing key:** If you already have a data plane key and want to use it again, select **Use existing key**. Then, enter the key's value in the **Data Plane Key** box.

{{<call-out "caution" "Data plane key guidelines" "fas fa-key" >}}
Data plane keys are displayed only once and cannot be retrieved later. Be sure to copy and store this key securely.

Data plane keys expire after one year. You can change this expiration date later by [editing the key]({{< ref "nginx-one/connect-instances/create-manage-data-plane-keys.md#change-expiration-date" >}}).
{{< include "/nginx-one/how-to/generate-data-plane-key.md" >}}

[Revoking a data plane key]({{< ref "nginx-one/connect-instances/create-manage-data-plane-keys.md#revoke-data-plane-key" >}}) disconnects all instances that were registered with that key.
{{</call-out>}}

### Add an instance

Expand All @@ -132,7 +121,6 @@ Depending on whether this is your first time using NGINX One Console or you've u
- **For first-time users:** On the welcome screen, select **Add Instance**.
- **For returning users:** If you've added instances previously and want to add more, select **Instances** on the left menu, then select **Add Instance**.


### Install NGINX Agent

After entering your data plane key, you'll see a `curl` command similar to the one below. Copy and run this command on each NGINX instance to install NGINX Agent. Once installed, NGINX Agent typically registers with NGINX One within a few seconds.
Expand Down
Loading
Loading