diff --git a/content/nginx-one/_index.md b/content/nginx-one/_index.md index 85e0d0596..e93ea61e5 100644 --- a/content/nginx-one/_index.md +++ b/content/nginx-one/_index.md @@ -28,6 +28,9 @@ nd-product: NGINX One {{}} Review your deployments in a dashboard {{}} + {{}} + Monitor deployments for control planes + {{}} {{}} Assign responsibilities with role-based access control {{}} @@ -72,4 +75,4 @@ nd-product: NGINX One Defend, adapt, and mitigate against Layer 7 denial-of-service attacks on your apps and APIs. {{}} {{}} -{{}} \ No newline at end of file +{{}} diff --git a/content/nginx-one/api/_index.md b/content/nginx-one/api/_index.md index 5b3284d5e..3a1598f3f 100644 --- a/content/nginx-one/api/_index.md +++ b/content/nginx-one/api/_index.md @@ -1,6 +1,6 @@ --- title: Automate with the NGINX One API description: -weight: 700 +weight: 800 url: /nginx-one/api --- diff --git a/content/nginx-one/changelog.md b/content/nginx-one/changelog.md index 33da1c9d9..63b3942bc 100644 --- a/content/nginx-one/changelog.md +++ b/content/nginx-one/changelog.md @@ -30,6 +30,15 @@ h2 { Stay up-to-date with what's new and improved in the F5 NGINX One Console. +## June 30, 2025 + +### Monitor F5 NGINX Ingress Controller deployments + +You can now monitor your NGINX Ingress Controller deployments. For details, see how +you can [Connect to NGINX One Console]({{< ref "/nginx-one/k8s/add-nic.md" >}}). + +Unlike other NGINX instances, when you connect NGINX Ingress Controller to NGINX One Console, access is read-only. Refer to our [NGINX Ingress Controller]({{< ref "/nic/" >}}) for details on how to modify these instances. + ## May 19, 2025 ### Import and export your Staged Configs diff --git a/content/nginx-one/glossary.md b/content/nginx-one/glossary.md index 4c07b2185..511fd8cda 100644 --- a/content/nginx-one/glossary.md +++ b/content/nginx-one/glossary.md @@ -3,9 +3,8 @@ description: '' nd-docs: DOCS-1396 title: Glossary toc: true -weight: 800 -type: -- reference +weight: 1000 +nd-content-type: reference --- This glossary defines terms used in the F5 NGINX One Console and F5 Distributed Cloud. diff --git a/content/nginx-one/k8s/_index.md b/content/nginx-one/k8s/_index.md new file mode 100644 index 000000000..794456588 --- /dev/null +++ b/content/nginx-one/k8s/_index.md @@ -0,0 +1,8 @@ +--- +title: Connect Kubernetes deployments +description: +weight: 700 +url: /nginx-one/k8s +nd-product: NGINX One +--- + diff --git a/content/nginx-one/k8s/add-nic.md b/content/nginx-one/k8s/add-nic.md new file mode 100644 index 000000000..23619c6d2 --- /dev/null +++ b/content/nginx-one/k8s/add-nic.md @@ -0,0 +1,159 @@ +--- +title: Connect to NGINX One Console +toc: true +weight: 200 +nd-content-type: how-to +nd-product: NGINX One +--- + +This document explains how to connect F5 NGINX Ingress Controller to F5 NGINX One Console using NGINX Agent. +Connecting NGINX Ingress Controller to NGINX One Console enables centralized monitoring of all controller instances. + +Once connected, you'll see a **read-only** configuration of NGINX Ingress Controller. For each instance, you can review: + +- Read-only configuration file +- Unmanaged SSL/TLS certificates for Control Planes + +## Before you begin + +Before connecting NGINX Ingress Controller to NGINX One Console, you need to create a Kubernetes Secret with the data plane key. Use the following command: + +```shell +kubectl create secret generic dataplane-key \ + --from-literal=dataplane.key= \ + -n +``` + +When you create a Kubernetes Secret, use the same namespace where NGINX Ingress Controller is running. +If you use [`-watch-namespace`]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#watch-namespace-string" >}}) or [`watch-secret-namespace`]({{< ref "/nic/configuration/global-configuration/command-line-arguments.md#watch-secret-namespace-string" >}}) arguments with NGINX Ingress Controller, +you need to add the dataplane key secret to the watched namespaces. This secret will take approximately 60 - 90 seconds to reload on the pod. + +{{}} +You can also create a data plane key through the NGINX One Console. Once loggged in, select **Manage > Control Planes > Add Control Plane**, and follow the steps shown. +{{}} + +## Deploy NGINX Ingress Controller with NGINX Agent + +{{}} +{{%tab name="Helm"%}} + +Edit your `values.yaml` file to enable NGINX Agent and configure it to connect to NGINX One Console: + +```yaml +nginxAgent: + enable: true + dataplaneKeySecretName: "" +``` + +The `dataplaneKeySecretName` is used to authenticate the agent with NGINX One Console. See the [NGINX One Console Docs]({{< ref "/nginx-one/connect-instances/create-manage-data-plane-keys.md" >}}) +for instructions on how to generate your dataplane key from the NGINX One Console. + +Follow the [Installation with Helm]({{< ref "/nic/installation/installing-nic/installation-with-helm.md" >}}) instructions to deploy NGINX Ingress Controller. + +{{%/tab%}} +{{%tab name="Manifests"%}} + +Add the following flag to the Deployment/DaemonSet file of NGINX Ingress Controller: + +```yaml +args: +- -agent=true +``` + +Create a `ConfigMap` with an `nginx-agent.conf` file: + +```yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: nginx-agent-config + namespace: +data: + nginx-agent.conf: |- + log: + # set log level (error, info, debug; default "info") + level: info + # set log path. if empty, don't log to file. + path: "" + + allowed_directories: + - /etc/nginx + - /usr/lib/nginx/modules + + features: + - certificates + - connection + - metrics + - file-watcher + + ## command server settings + command: + server: + host: product.connect.nginx.com + port: 443 + auth: + tokenpath: "/etc/nginx-agent/secrets/dataplane.key" + tls: + skip_verify: false +``` + +Make sure to set the namespace in the nginx-agent.config to the same namespace as NGINX Ingress Controller. +Mount the ConfigMap to the Deployment/DaemonSet file of NGINX Ingress Controller: + +```yaml +volumeMounts: +- name: nginx-agent-config + mountPath: /etc/nginx-agent/nginx-agent.conf + subPath: nginx-agent.conf +- name: dataplane-key + mountPath: /etc/nginx-agent/secrets +volumes: +- name: nginx-agent-config + configMap: + name: nginx-agent-config +- name: dataplane-key + secret: + secretName: "" +``` + +Follow the [Installation with Manifests]({{< ref "/nic/installation/installing-nic/installation-with-manifests.md" >}}) instructions to deploy NGINX Ingress Controller. + +{{%/tab%}} +{{}} + +## Verify a connection to NGINX One Console + +After deploying NGINX Ingress Controller 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, go to **Manage > Instances**. You should see your instances listed by name. The instance name matches both the hostname and the pod name. + +## 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 -- nginx-agent -v +``` + +If nginx-agent version is v3, continue with the following steps. +Otherwise, make sure you are using an image that does not include NGINX App Protect. + +Check the NGINX Agent configuration: + +```shell +kubectl exec -it -n -- cat /etc/nginx-agent/nginx-agent.conf +``` + +Check NGINX Agent logs: + +```shell +kubectl exec -it -n -- nginx-agent +``` + +Select the instance associated with your deployment of NGINX Ingress Controller. Under the **Details** tab, you'll see information associated with: + +- Unmanaged SSL/TLS certificates for Control Planes +- Configuration recommendations + +Under the **Configuration** tab, you'll see a **read-only** view of the configuration files. diff --git a/content/nginx-one/k8s/overview.md b/content/nginx-one/k8s/overview.md new file mode 100644 index 000000000..b2da7f2d1 --- /dev/null +++ b/content/nginx-one/k8s/overview.md @@ -0,0 +1,19 @@ +--- +# We use sentence case and present imperative tone +title: "Integrate Kubernetes control planes" +# Weights are assigned in increments of 100: determines sorting order +weight: 100 +# Creates a table of contents and sidebar, useful for large documents +toc: false +# Types have a 1:1 relationship with Hugo archetypes, so you shouldn't need to change this +nd-content-type: concept +# Intended for internal catalogue and search, case sensitive: +# Agent, N4Azure, NIC, NIM, NGF, NAP-DOS, NAP-WAF, NGINX One, NGINX+, Solutions, Unit +nd-product: NGINX One +--- + +You can now include Kubernetes systems through the [control plane](https://www.f5.com/glossary/control-plane). In related documentation, you can learn how to: + +- Set up a connection to F5 NGINX One Console through a data plane key. +- Review the NGINX Ingress Controller instances that are part of your fleet. +