Upgrade the control plane
Move the control plane to a newer release from Settings → Updates or with the installer, confirm it is healthy, update the cluster agents, and go back to the previous release if needed.
An upgrade replaces the control plane container with the new release's image. Pending database migrations run when the new container starts. Clusters and their workloads are not touched.
Before you start
- Take a backup. Neither the console update nor the installer backs up the database. Follow Back up and restore the control plane, and keep the dump with its matching
.env. - Read the changelog for every release between the running version and the target. The changelog announces breaking changes to the HTTP API and to
nebula.toml. - Write down the running version. You need it to go back. It is on Settings > Updates and in the version pill in the header.
- Choose a path. The console path needs the
nebula-updaterservice on the host, and an owner of the Default organization. The installer path needs a shell on the host. The installer path is the only way to choose a version other than the newest. - Know the rollback. If the new release does not come up, the updater puts the previous one back by itself. By hand, you re-run the installer with the previous version and
--allow-downgrade. Migrations are never reversed, so a release that cannot run on the migrated schema needs the backup restored. See If it goes wrong.
The control plane is unreachable for the few seconds it takes to replace its container. The console reconnects by itself.
1. Update the control plane
- Sign in as an owner of the Default organization and open Settings > Updates.
- Read the release notes with Release notes.
- Select Update to vX.Y.Z, then Update to vX.Y.Z again in the confirmation.
The panel moves through Waiting for updater, Updating and Updated. Until the updater picks the request up, Cancel update withdraws it. Only the newest published release is offered, and only when it is newer than the running one.
If the button is replaced by a warning, the warning says what is missing: no updater token, a development build, no updater reporting, or an updater offline for more than two minutes. Below it, How to update shows the installer command.
2. Update the cluster agents
A control plane update does not update any agent. Follow Update a cluster agent for each cluster. Settings > Updates lists the clusters whose agents trail the control plane.
Verify
curl -s http://127.0.0.1:8080/api/v1/version | grep -o '"version":"[^"]*"'Use your listen address if it is not the default.
"version":"0.39.0"- The value is the release you installed.
- Settings > Updates shows the result as Updated to vX.Y.Z.
- Open the console and a project. Clusters show connected after their agents reconnect.
If it goes wrong
The console shows "Update to vX.Y.Z failed and was rolled back". The installer failed, or the new release did not answer with its version, so the updater ran the previous release's installer with --allow-downgrade, and the control plane runs the previous version again. The update history lists it as Rolled back. Read the installer output with Show installer log, fix the cause, then request the update again. On the host the log is /opt/nebula/updater/install-VERSION.log, and the service log is journalctl -u nebula-updater.
The console shows "Update to vX.Y.Z failed". The installer failed and so did the reinstall of the previous release. The message states what the control plane answers now and the command that puts the previous release back:
curl -fsSL https://get.nebulactrl.dev/vPREVIOUS/install.sh | sh -s -- --dir /opt/nebula --version PREVIOUS --allow-downgradeReplace PREVIOUS with the version you wrote down. Run it on the host.
The console shows "Update to vX.Y.Z failed" with "The updater stopped reporting during the update". The updater service went away mid-update, and the control plane wrote the update off after 15 minutes without contact. The control plane runs the version named in the message. Check journalctl -u nebula-updater, then restart the service with sudo systemctl restart nebula-updater.
The updater refuses the update. The message begins The updater refused to install vX.Y.Z and names the reason, such as a version that is not newer than the installed one or one missing from the release index. Nothing was run.
The previous release does not start on the migrated schema. Go back with the command above, then restore the dump you took before the upgrade. Anything written after the dump is lost, and clusters enrolled after it are unknown to the restored database. See Back up and restore the control plane.
The container never becomes healthy. The installer prints the last 40 log lines and stops. .env and the Compose file are already in place, so fix the cause and run the installer again. For the cause, see Control plane troubleshooting.
Requirements
The operating system, software, database, ports, DNS and outbound access that the NebulaCtrl control plane and its cluster nodes need.
Back up and restore the control plane
Dump the control plane database, keep the master key and .env that seal its secrets, and restore both onto the same host or a new one.