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.
Warning  You may have Schedules, Automations workflows, or Notifications that would conflict with themselves during the time that both the new and old FME Flows are running. Disable these tools before proceeding with a backup.

Performing the Upgrade

  1. Create a new namespace for the new version of FME Flow:
  2. kubectl create namespace <namespace-new-version>

    For example:

    kubectl create namespace fmeflow-2024-1-1

  3. 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.)
  4. 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 -

  5. 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
  6. Update your Helm repository:
  7. helm repo update

  8. 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:

  9. helm install --namespace fmeflow-2024-1-1 -n fmeflow safesoftware/fmeflow -f values-2024.1.1.yaml

  10. From the FME Flow Web User Interface, perform the following:
    1. License FME Flow.
    2. Backup the old FME Flow.
    3. Restore the backup to the new FME Flow.
  11. 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.
    1. In the old values .yaml file, change the value of deployment.hostname.
    2. Upgrade the Helm chart of the previous deployment.
    3. 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

  12. Update the DNS of the new FME Flow to your production URL.
    1. In the new values .yaml file, change the value of deployment.hostname.
    2. Upgrade the Helm chart of the new deployment.
    3. 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

  13. 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.
  14. 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>

    For example:

    • Helm v2: helm del --purge fmeflow
    • Helm v3: helm uninstall fmeflow -n fmeflow
  15. If your FME Flow uses an external PostgreSQL database for the FME Flow Database, drop the database for the old FME Flow.