FME Flow: 2025.0
Upgrading a Kubernetes Deployment of FME Flow
With little downtime, you can upgrade a Kubernetes deployment of FME Flow to a later version using the following procedure:
- Launch a new FME Flow of the desired build version in a new namespace.
- Backup the current FME Flow and restore it to the new FME Flow.
- Update the ingress hostname from the old FME Flow to the new FME Flow.
- Remove the old FME Flow.
Performing the Upgrade
- Create a new namespace for the new version of FME Flow:
- If your FME Flow uses an external PostgreSQL database for the FME Flow Database, copy the admin password secret, using the namespace of the current version of FME Flow, to the new version. (If your FME Flow uses the PostgreSQL container that is deployed with the Helm chart, skip this step.)
- Make a copy the values .yaml file for the current FME Flow and update the following values:
- deployment.hostname: Set to a temporary hostname. (You will reset it later in this procedure.)
- fmeflow.image.tag: Set to the container image tag you want to deploy for the upgraded FME Flow.
- If your FME Flow uses an external PostgreSQL database for the FME Flow Database, set the following values to be different from the ones in use for the current FME Flow:
- fmeflow.database.name
- fmeflow.database.username
- Update your Helm repository:
- Deploy FME Flow in the new namespace using Helm and the updated values .yaml file.
helm install --namespace <namespace-new-version> -n <helm-deployment-name> safesoftware/fmeflow -f <new-values-filename>
For example:
- From the FME Flow Web User Interface, perform the following:
- Change the DNS of the old FME Flow to a different, temporary URL. Doing so will allow you to update the DNS of the new FME Flow to your production URL.
- In the old values .yaml file, change the value of deployment.hostname.
- Upgrade the Helm chart of the previous deployment.
helm upgrade --namespace <namespace-old-version> <helm-deployment-name> safesoftware/fmeflow -f <old-values-filename>
For example:
helm upgrade --namespace fmeflow fmeflow safesoftware/fmeflow -f values-2024.0.0.yaml
- Update the DNS of the new FME Flow to your production URL.
- In the new values .yaml file, change the value of deployment.hostname.
- Upgrade the Helm chart of the new deployment.
helm upgrade --namespace <namespace-new-version> <helm-deployment-name> safesoftware/fmeflow -f <new-values-filename>
For example:
helm upgrade --namespace fmeflow-2024-1-1 fmeflow safesoftware/fmeflow -f values-2024.1.1.yaml
- Verify that the upgraded FME Flow works as expected. If you find issues, you can switch back thedeployment.hostname values in the old and new values .yaml files so that your production URL points back to the old FME Flow.
- Remove the old version of FME Flow.
- Helm v2: helm del --purge <helm-deployment-name>
- Helm v3: helm uninstall <helm-deployment-name> -n <namespace_name>
- Helm v2: helm del --purge fmeflow
- Helm v3: helm uninstall fmeflow -n fmeflow
- If your FME Flow uses an external PostgreSQL database for the FME Flow Database, drop the database for the old FME Flow.
kubectl create namespace <namespace-new-version>
For example:
kubectl create namespace fmeflow-2024-1-1
kubectl get secret postgresql-admin-password --namespace <namespace-old-version> --export -o yaml | kubectl apply --namespace=<namespace-new-version> -f -
For example:
kubectl get secret postgresql-admin-password --namespace fmeflow --export -o yaml | kubectl apply --namespace=fmeflow-2024-1-1 -f -
helm repo update
helm install --namespace fmeflow-2024-1-1 -n fmeflow safesoftware/fmeflow -f values-2024.1.1.yaml
For example: