Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
3fcf9ac
Add v2 to v3 migration guide
nginx-seanmoloney Apr 9, 2026
1188708
Improve instructions when running with a mounted file
nginx-seanmoloney Apr 13, 2026
ab21ecc
Refactor the update page
nginx-seanmoloney Apr 16, 2026
e6137ae
docs(agent): migrate v2→v3 upgrade guide; update installation docs; a…
nginx-seanmoloney Apr 16, 2026
c6c4de1
Update content/nginx-one-console/agent/install-upgrade/migration/dock…
nginx-seanmoloney Apr 20, 2026
7fa3b98
Update content/nginx-one-console/agent/install-upgrade/migration/dock…
nginx-seanmoloney Apr 20, 2026
1d62582
Update content/nginx-one-console/agent/install-upgrade/migration/dock…
nginx-seanmoloney Apr 20, 2026
d014b58
Update content/nginx-one-console/agent/install-upgrade/migration/dock…
nginx-seanmoloney Apr 20, 2026
c4a552a
Update content/nginx-one-console/agent/install-upgrade/migration/dock…
nginx-seanmoloney Apr 20, 2026
840ec70
Update content/nginx-one-console/agent/install-upgrade/migration/kube…
nginx-seanmoloney Apr 20, 2026
241c6c1
Update content/nginx-one-console/agent/install-upgrade/update.md
nginx-seanmoloney Apr 20, 2026
2ce3655
Feedback from pr
nginx-seanmoloney Apr 20, 2026
76790e3
Update content/nginx-one-console/agent/install-upgrade/migration/kube…
nginx-seanmoloney Apr 20, 2026
c52cb11
Update content/nginx-one-console/agent/install-upgrade/migration/kube…
nginx-seanmoloney Apr 20, 2026
b78b317
Update content/nginx-one-console/agent/install-upgrade/migration/vm.md
nginx-seanmoloney Apr 20, 2026
672a005
Update content/nginx-one-console/agent/install-upgrade/migration/vm.md
nginx-seanmoloney Apr 20, 2026
61a6fea
Update content/nginx-one-console/agent/install-upgrade/migration/vm.md
nginx-seanmoloney Apr 20, 2026
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
2 changes: 1 addition & 1 deletion content/includes/agent/installation/update.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The same steps apply if you are **upgrading from NGINX Agent v2 to NGINX Agent v
successfully:

- `/etc/nginx-agent`
- Every configuration directory specfied in `/etc/nginx-agent/nginx-agent.conf` as a `config_dirs` value
- Every configuration directory specified in `/etc/nginx-agent/nginx-agent.conf` as a `config_dirs` value

1. Install the updated version of NGINX Agent:

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Migrate NGINX Agent v2 to v3
weight: 590
toc: true
nd-docs: DOCS-1227
nd-content-type: how-to
nd-product: NAGENT
aliases:
- /nginx-one-console/agent/install-upgrade/upgrade-v2-v3/
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Breaking Changes
weight: 590
toc: true
nd-docs: DOCS-1227
nd-content-type: how-to
nd-product: NAGENT
aliases:
- /nginx-one-console/agent/install-upgrade/upgrade-v2-v3/
---

Use this section to choose the environment‑specific guide for migrating from NGINX Agent v2 to NGINX Agent v3.

{{< call-out class="warning" title="Breaking changes" >}}

- Environment variables renamed (v2 → v3):
- NGINX_AGENT_SERVER_HOST → NGINX_AGENT_COMMAND_SERVER_HOST
- NGINX_AGENT_SERVER_GRPCPORT → NGINX_AGENT_COMMAND_SERVER_PORT
- NGINX_AGENT_SERVER_TOKEN → NGINX_AGENT_COMMAND_AUTH_TOKEN
- Ensure the new variables are set correctly before deployment.
- [Complete list of Agent v3 environment variables:]({{< ref "/nginx-one-console/agent/configure-instances/configuration-overview/" >}})


- Config Sync Groups:
- In v3, apply the label using: NGINX_AGENT_LABELS: config-sync-group=<config-sync-group-name>
{{< /call-out >}}

{{< call-out class="caution" title="Plan and test your migration" >}}
Do not run v2 and v3 concurrently on the same host, pod, or container. Test in a non‑production environment first and schedule a maintenance window for production.
{{< /call-out >}}

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: Migrate with Docker Compose
toc: true
weight: 120
nd-content-type: how-to
nd-product: NAGENT
---

## Before you begin
- Ensure you have:
- Docker compose installed
- Registry credentials (if required)
- `NGINX_LICENSE_JWT` and the NGINX Agent command auth token (data plane key)
- Back up your existing docker-compose.yaml.
- Plan a maintenance window and test this procedure in a non‑production environment first.

{{< call-out class="caution" title="Do not run v2 and v3 concurrently" >}}
Do not run NGINX Agent v2 and v3 concurrently in the same container or on the same host.
{{< /call-out >}}

## Migrate

1. Update your compose file to use the v3 image and environment variables. Example:
```yaml
version: "3.8"
services:
nginx-agent:
image: <registry>/nginx-plus/agent/debian:<v3-tag>
environment:
NGINX_AGENT_COMMAND_SERVER_HOST: agent.connect.nginx.com
NGINX_AGENT_COMMAND_SERVER_PORT: "443"
NGINX_AGENT_COMMAND_TLS_SKIP_VERIFY: "false"
NGINX_AGENT_COMMAND_AUTH_TOKEN: ${NGINX_AGENT_COMMAND_AUTH_TOKEN}
NGINX_LICENSE_JWT: ${NGINX_LICENSE_JWT}
# Optional: If using Config Sync Groups
# NGINX_AGENT_LABELS: config-sync-group=<config-sync-group-name>
```

2. Restart the service:
```shell
docker compose down
docker compose up -d
```

3. Validate the migration:
```shell
docker logs <nginx-agent-container-name>
```
- Look for: msg="Agent connected"
- Verify the instance is Online in the NGINX One Console.

## Rollback

- Restore the previous docker-compose.yaml and run:
```shell
docker compose down && docker compose up -d
```

## References

- [Agent v3 environment variables:]({{< ref "/nginx-one-console/agent/configure-instances/configuration-overview/" >}})
- [Docker images:]({{< ref "https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/" >}})
- Config conversion script: https://raw.githubusercontent.com/nginx/agent/v3/scripts/packages/upgrade-agent-config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: Migrate in a Docker container
toc: true
weight: 130
nd-content-type: how-to
nd-product: NAGENT
---

## Before you begin
- Ensure you have:
- Docker installed
- Registry access for agent v3 images.
- NGINX_LICENSE_JWT and the NGINX Agent command auth token (data plane key).
- Plan a maintenance window and test this procedure in a non‑production environment first.

{{< call-out class="caution" title="Do not run v2 and v3 concurrently" >}}
Do not run NGINX Agent v2 and v3 concurrently in the same container or on the same host.
{{< /call-out >}}

## Migrate

1. Pull the v3 image:
```shell
docker pull <registry>/nginx-plus/agentv3:debian
```

2. Run the container:
```shell
docker run -d \
--restart=always \
-e NGINX_LICENSE_JWT="<jwt>" \
-e NGINX_AGENT_COMMAND_SERVER_HOST=agent.connect.nginx.com \
-e NGINX_AGENT_COMMAND_SERVER_PORT=443 \
-e NGINX_AGENT_COMMAND_AUTH_TOKEN="<data-plane-key>" \
-e NGINX_AGENT_COMMAND_TLS_SKIP_VERIFY=false \
<registry>/nginx-plus/agentv3:debian
```

3. (Optional) Convert a mounted v2 config file to v3:
```shell
wget https://raw.githubusercontent.com/nginx/agent/v3/scripts/packages/upgrade-agent-config.sh
chmod +x upgrade-agent-config.sh
./upgrade-agent-config.sh --v2-config-file=./nginx-agent-v2.conf --v3-config-file=./nginx-agent-v3.conf
```
- If you used Config Sync Groups in v2, add to the v3 config:
- NGINX_AGENT_LABELS=config-sync-group=<config-sync-group-name>

## Validate

- Check logs for a successful connection message:
```shell
docker logs <container>
```
- Look for: msg="Agent connected"
- Verify the instance is Online in the NGINX One Console.

## Rollback

- Stop/remove the v3 container and run the previous v2 image.

## References

- [Agent v3 environment variables:]({{< ref "/nginx-one-console/agent/configure-instances/configuration-overview/" >}})
- [Docker images:]({{< ref "https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/" >}})
- Config conversion script: https://raw.githubusercontent.com/nginx/agent/v3/scripts/packages/upgrade-agent-config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
title: Migrate on Kubernetes
toc: true
weight: 110
nd-content-type: how-to
nd-product: NAGENT
---

## Before you begin
- Ensure you have:
- kubectl context set to the target cluster and namespace.
- Permissions to deploy to the namespace.
- Required registry credentials available.
- A Secret for NGINX_LICENSE_JWT or that you can create one.
- Plan a maintenance window and test in a non‑production environment first.

Comment thread
nginx-seanmoloney marked this conversation as resolved.
- kubectl context is set to the target cluster and namespace.
- You have permissions to deploy to the namespace.
- Registry credentials are available if required.
- A Secret exists for NGINX_LICENSE_JWT or you can create one.
- Plan a maintenance window and test in a non‑production environment first.

{{< call-out class="caution" title="Do not run v2 and v3 concurrently" >}}
Do not run NGINX Agent v2 and v3 in the same pod or on the same node as part of the migration.
{{< /call-out >}}

## Migrate

1. Prepare the Deployment manifest for NGINX Agent v3. Example:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-agent
namespace: <namespace>
spec:
replicas: 1
selector:
matchLabels:
app: nginx-agent
template:
metadata:
labels:
app: nginx-agent
spec:
containers:
- name: nginx-agent
image: <registry>/nginx-plus/agent/debian:<v3-tag>
env:
- name: NGINX_AGENT_COMMAND_SERVER_HOST
value: "agent.connect.nginx.com"
- name: NGINX_AGENT_COMMAND_SERVER_PORT
value: "443"
- name: NGINX_AGENT_COMMAND_TLS_SKIP_VERIFY
value: "false"
- name: NGINX_AGENT_COMMAND_AUTH_TOKEN
value: "<auth-token>"
- name: NGINX_LICENSE_JWT
valueFrom:
secretKeyRef:
name: nginx-secret
key: NGINX_LICENSE_JWT
# Optional: If using Config Sync Groups
# - name: NGINX_AGENT_LABELS
# value: "config-sync-group=<config-sync-group-name>"
```

2. Apply the Deployment and monitor the rollout:
```shell
kubectl apply -n <namespace> -f nginx-agent-v3-deployment.yaml
kubectl rollout status deployment/nginx-agent -n <namespace>
```

3. Validate the replacement:
```shell
kubectl get pods -n <namespace>
kubectl logs <pod-name> -n <namespace>
```
- Look for: msg="Agent connected" in the logs.

4. Verify in NGINX One Console:
- The instance appears Online in the Instances view.
- If using Config Sync Groups, confirm group members are Online.

## Troubleshoot

- Describe the pod to verify env vars and image tag:
```shell
kubectl describe pod <pod-name> -n <namespace>
```

## Rollback

- Reapply the previous v2 Deployment manifest:
```shell
kubectl apply -f nginx-agent-v2-deployment.yaml
```

## References
- [Agent v3 environment variables:]({{< ref "/nginx-one-console/agent/configure-instances/configuration-overview/" >}})
- [Docker images:]({{< ref "https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/" >}})
- Config conversion script: https://raw.githubusercontent.com/nginx/agent/v3/scripts/packages/upgrade-agent-config.sh
63 changes: 63 additions & 0 deletions content/nginx-one-console/agent/install-upgrade/migration/vm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
---
title: Migrate on VMs (RPM/DEB)
toc: true
weight: 100
nd-content-type: how-to
nd-product: NAGENT
---

## Before you begin

- Ensure you have the following:
- NGINX_LICENSE_JWT
- NGINX Agent command auth token (data plane key)
- Repository access and package manager permissions for your distribution
- Back up configuration:
- /etc/nginx-agent
- Every configuration directory specified as a `config_dirs` value in /etc/nginx-agent/nginx-agent.conf
- Plan a maintenance window and test this procedure in a non‑production environment first.

{{< call-out class="caution" title="Do not run v2 and v3 concurrently" >}}
Do not run NGINX Agent v2 and v3 concurrently on the same host.
{{< /call-out >}}

## Migrate

1. If you are using a version older than NGINX Agent v2.31.0, stop the agent before upgrading and start it again after the upgrade.
- sudo systemctl stop nginx-agent

2. Upgrade the package to v3.
- CentOS, RHEL (RPM‑based):
```shell
sudo yum -y makecache
sudo yum update -y nginx-agent
```
- Debian, Ubuntu (DEB‑based):
```shell
sudo apt-get update
sudo apt-get install -y --only-upgrade nginx-agent -o Dpkg::Options::="--force-confold"
```

3. If you are using a config file, ensure required values are present. If you used Config Sync Groups in v2, add the following label in v3:
- NGINX_AGENT_LABELS: config-sync-group=<config-sync-group-name>

## Validate

- Check service status and logs for a successful connection, for example: msg="Agent connected".
- Verify the instance appears Online in the NGINX One Console.

## Troubleshoot

- Review the nginx-agent service status and logs for authentication or configuration errors.
- View logs by running: `sudo journalctl -u nginx-agent -xe`
- Confirm that credentials (NGINX_LICENSE_JWT, data plane key) are valid.

## Rollback

- Reinstall the previous v2 package and restore your configuration backup if required.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Reinstall the previous v2 package and restore your configuration backup if required.
- Reinstall the previous v2 package and, if required, restore your configuration backup.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!


## References

- [Agent v3 environment variables:]({{< ref "/nginx-one-console/agent/configure-instances/configuration-overview/" >}})
- [Docker images:]({{< ref "https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/" >}})
- Config conversion script: https://raw.githubusercontent.com/nginx/agent/v3/scripts/packages/upgrade-agent-config.sh
Loading
Loading