Software upgrade#
This document describes the procedure for an in-place upgrade of the existing Nokia EDA software without redeploying the underlying VMs and/or Kubernetes cluster.
If you already have a working Nokia EDA cluster, the upgrade procedure consists of the following steps:
- Pause NPP interactions.
- Backup the existing Nokia EDA cluster.
- Update the playground repository.
- Uninstall the existing version of EDA.
- Update and install the new EDA
kptpackages (on both active and standby members if running a geo-redundant deployment). - Upgrade Nokia EDA applications.
- Resume NPP interactions.
Nuances for air-gapped and Geo-redundant clusters
Whether your cluster is Internet-connected or air-gapped, the upgrade procedure is the same. For air-gapped installations, upload the target app bundles to the Assets Host before proceeding with an upgrade.
In geo-redundant clusters, cluster members cannot run different versions. Therefore, before the software upgrade, you must first break cluster redundancy and then restore redundancy after the upgrade. To break the redundancy, remove the .spec.cluster.redundant section from the EngineConfig resource as described later in this document.
Version-specific upgrade considerations
When upgrading from versions older than 25.4.1, ensure that the NodeGroup resources used by the nodes contain both gNOI and gNSI services.
Nokia EDA upgrade procedure scope
This is the Nokia EDA software upgrade procedure; it does not cover upgrading Talos Linux or Kubernetes. Nokia EDA does not require upgrading Talos or Kubernetes for every EDA version upgrade, unless explicitly stated in the release notes.
If you want to upgrade Talos Linux, Kubernetes, or both, perform one of the following:
When running Nokia EDA cluster on virtual machines it might be easier to perform a new installation with the desired Talos and Kubernetes versions and restore your existing cluster backup into the new cluster:
- Take a backup of your existing Nokia EDA cluster.
- Download an
edaadmversion that comes with the desired Talos and Kubernetes versions as per the version matrix. - Install a new Nokia EDA cluster following the installation procedure.
- Restore your backup in the new cluster and upgrade your EDA applications if necessary.
Follow the Talos Linux upgrade documentation for the Talos release installed on your cluster (replace v1.11 in the URL with your version when it differs) when upgrading Talos Linux and Kubernetes in a running EDA cluster.
Pausing NPP interactions#
Prior to taking a backup of your cluster, place all TopoNode resources into emulate mode to avoid any ongoing interactions with the network devices during the upgrade process.
In this mode, Nokia EDA does not interact with target devices, effectively pausing the cluster's interaction with your infrastructure. You can still interact with Nokia EDA and the TopoNode resources; changes are pushed upon switching back to normal mode.
To set emulate mode in bulk, run the script from the playground repo directory on a machine where you have kubectl configured with the access to your cluster:
After the script has been run, verify that the TopoNode resources are in emulate mode:
kubectl get toponode -A \
-o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,MODE:.spec.npp.mode'
Backing up a cluster#
Backup role
The cluster backup file is not going to be used in the in-place EDA upgrade procedure as the Git repositories remain intact in the existing cluster. However, Nokia recommends that you take a backup of your cluster regardless.
The backup file can be used to restore your cluster to a previous state in case you would want to deploy a new EDA cluster from scratch.
Backing up your existing cluster is performed using the collect-backup target provided in the Makefile of the playground repository.
This will create a timestamped backup archive and put it in the /tmp/eda-support/logs-<date> directory on your system. The backup archive contains all the necessary information to restore your cluster.
Testing the backup
Nokia highly recommends that you test the backup by restoring it in a test cluster before proceeding with the upgrade of your production cluster.
Updating the Playground repository#
The workflow to upgrade Nokia EDA slightly differs depending on whether you have the original playground repository present in a system that you used to install Nokia EDA originally from or not.
If you have an existing playground repository, ensure it is up to date by running:
This will update the playground repository while keeping any customizations you may have done to the prefs.mk file.
Resolving merge conflicts
The pull operation may result in a merge conflict if your customizations clash with the new changes in the prefs.mk file. For example, you may see the following prompt:
Applying autostash resulted in conflicts.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
And then the prefs.mk file will contain the merge conflict markers. For example:
<<<<<< Updated upstream
# Option 2: If bringing your own Registry, Git or Artifacts hosting
# for anything not being used from the unified asset-host
# define the endpoints as:
# ASSET_HOST_REGISTRY := registry.bastion.corp.com
# ASSET_HOST_GIT := https://git.bastion.corp.com
# ASSET_HOST_ARTIFACTS := https://artifact.bastion.corp.com
# Specify auth as base64 encoded values
# B64_ASSET_HOST_GIT_USERNAME := ""
# B64_ASSET_HOST_GIT_PASSWORD := ""
# B64_ASSET_HOST_ARTIFACTS_USERNAME := ""
# B64_ASSET_HOST_ARTIFACTS_PASSWORD := ""
# B64_ASSET_HOST_REGISTRY_USERNAME := ""
# B64_ASSET_HOST_REGISTRY_PASSWORD := ""
=======
# Specify auth
# ASSET_HOST_GIT_USERNAME := ""
# ASSET_HOST_GIT_PASSWORD := ""
# ASSET_HOST_ARTIFACTS_USERNAME := ""
# ASSET_HOST_ARTIFACTS_PASSWORD := ""
NO_KIND := yes
# Specify auth
USE_ASSET_HOST := 1
ASSET_HOST := 10.0.0.30
ASSET_HOST_GIT_USERNAME := eda
ASSET_HOST_GIT_PASSWORD := eda
ASSET_HOST_ARTIFACTS_USERNAME := eda
ASSET_HOST_ARTIFACTS_PASSWORD := eda
METALLB_VIP = 10.0.0.25/32
EXT_DOMAIN_NAME = 10.0.0.25
EXT_HTTPS_PORT = 443
SINGLESTACK_SVCS = false
EDA_CORE_VERSION=25.12.4
EDA_APPS_VERSION=25.12.4
>>>>>> Stashed changes
The merge conflict markers indicate the lines that have been changed both in the upstream repository from where you pulled the latest playground (marked with <<<<<< Updated upstream) and in your local repository where you have your customizations (marked with >>>>>> Stashed changes).
In this instance, the changes upstream introduced the new variables for the Asset Host credential configuration (prefixed with B64_). You can resolve this conflict by editing the prefs.mk and making the following changes:
- Replacing the old credentials-related variables with the new ones.
- Removing the merge conflict markers from the file.
After aligning the changes, the portion of the file where the conflict occurred may look like this:
# Option 2: If bringing your own Registry, Git or Artifacts hosting
# for anything not being used from the unified asset-host
# define the endpoints as:
# ASSET_HOST_REGISTRY := registry.bastion.corp.com
# ASSET_HOST_GIT := https://git.bastion.corp.com
# ASSET_HOST_ARTIFACTS := https://artifact.bastion.corp.com
# Specify auth as base64 encoded values
B64_ASSET_HOST_GIT_USERNAME := ZWRh
B64_ASSET_HOST_GIT_PASSWORD := ZWRh
B64_ASSET_HOST_ARTIFACTS_USERNAME := ZWRh
B64_ASSET_HOST_ARTIFACTS_PASSWORD := ZWRh
# B64_ASSET_HOST_REGISTRY_USERNAME := ""
# B64_ASSET_HOST_REGISTRY_PASSWORD := ""
NO_KIND := yes
# Specify auth
USE_ASSET_HOST := 1
ASSET_HOST := 10.0.0.30
METALLB_VIP = 10.0.0.25/32
EXT_DOMAIN_NAME = 10.0.0.25
EXT_HTTPS_PORT = 443
SINGLESTACK_SVCS = false
EDA_CORE_VERSION=25.12.4
EDA_APPS_VERSION=25.12.4
After aligning the changes, save and commit the changes to your local repository.
If the original playground repository is missing, you should clone the repository again:
Identify what Nokia EDA version you are running using edactl:
In this example, the cluster reports Nokia EDA version 25.4.1.
Set the EDA_CORE_VERSION and EDA_APPS_VERSION variables in the prefs.mk file to the existing version you noted above if it is not already set. For example:
Apply any other customizations required to the prefs.mk file as explained on the installation page.
With the existing version set and customizations added to the prefs.mk file, download the EDA packages for the currently running EDA system:
Ensure the package inventory is in sync with your existing cluster:
Uninstalling Nokia EDA components#
The existing EDA core components must be uninstalled before installing the new version.
Breaking redundancy (geo-redundant clusters) (optional)#
If you have a geo-redundant installation, on your active cluster member, update your EngineConfig to remove the .spec.cluster.redundant section. This breaks redundancy and allows you to upgrade the active member without affecting the standby member.
Changes on standby members
Do not update the EngineConfig resource on standby members. Although stopped, if the standby members were to start, they must continue to look for the active member (and fail to do so) throughout the upgrade.
Stopping Nokia the EDA platform#
To stop Nokia EDA components, enter the following command:
This command returns no output but stops all pods that are packaged as part of eda-kpt-base and removes them from the cluster.
Nuances for geo-redundant clusters
For geo-redundant clusters, execute the edactl platform stop command on both active and standby members, via their respective eda-toolbox pods.
Uninstalling Nokia EDA core components#
Proceed with uninstalling Nokia EDA core components:
Confirm that core components deployed from eda-kpt are removed. List pods with the following command1:
Stopping Nokia EDA git servers#
Continue with stopping Nokia EDA Git servers by scaling down the Nokia EDA Git deployments:
Version-specific steps#
When upgrading from versions older than 25.12.1, stop the fluentd daemonset:
Updating Nokia EDA kpt packages#
Set the desired Nokia EDA version in the prefs.mk file to match the target version you want to upgrade to. For example, to choose the 26.4.1 version:
Download the tools and packages by executing the following command:
Customizing kpt packages#
If you started with a freshly cloned repository, you want to add customizations to your EDA installation by setting the variables in the prefs.mk file; this process is explained in detail at the installation phase.
At a minimum, ensure
EXT_DOMAIN_NAMEandEXT_HTTPS_PORTare set correctly in yourprefs.mkfile.
Configure the packages downloaded for the target EDA version with the customizations you added to the prefs.mk file:
Installing the new version of Nokia EDA#
Install the new version of Nokia EDA core components by running:
Upgrading your applications#
After installing the new Nokia EDA core in the step above, you need to upgrade Nokia EDA applications as they are kept on their previous versions and may be incompatible with the new version of Nokia EDA core. Use the following command to install applications compatible with the new Nokia EDA core:
Resuming NPP interactions#
To resume NPP interactions, set all TopoNode resources back to the normal mode.
After the script has been run, verify that the TopoNode resources are in normal mode:
kubectl get toponode -A \
-o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,MODE:.spec.npp.mode'
Verifying cluster health#
Check the following to ensure your cluster is healthy:
- All pods are running and healthy.
- All
TopoNoderesources are innormalmode, and have synced with their targets. - No transaction failures exist.
- All cluster members are synchronized.
Restoring a backup in a new cluster#
Optional step
This procedure applies only if you are deploying a new Nokia EDA cluster from scratch either by deploying a new set of VMs or by re-creating the Kubernetes cluster. It does not apply for in-place upgrades.
Copy the collected backup file from your machine back into the eda-toolbox pod of the new cluster:
backupfile=/tmp/eda-support/logs-2025-12-18/eda-platform-backup-2025-12-18-21-37-42.tar.gz
toolboxpod=$(kubectl -n eda-system get pods \
-l eda.nokia.com/app=eda-toolbox -o jsonpath="{.items[0].metadata.name}")
kubectl -n eda-system cp $backupfile \
$toolboxpod:/tmp/eda-backup.tar.gz
Restore your cluster to its previous state by running the following command:
-
Replace with your base namespace if you modified it. ↩