> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seekr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrade a SeekrFlow deployment

> Back up the databases and move a self-managed deployment to a newer release.

Upgrading moves SeekrFlow to a newer release. Some releases change defaults, or need steps before or after the upgrade. Each release's notes list these under its upgrade considerations. Before you start, read the [release notes](/self-managed/flow/changelog/2026) for every version between yours and the new one.

## Before you upgrade

<Steps>
  <Step title="Back up the databases">
    An upgrade can change the database schema, and rolling back the release doesn't undo that. Restoring this backup does:

    ```bash theme={null}
    sfe db backup -p <profile-name> -r <current-version> --in-cluster -o ./backup-<current-version>
    ```

    The backup holds password hashes and other secrets. Store it as securely as the database itself. It doesn't include files in object storage. On a managed database service, also take a snapshot.
  </Step>

  <Step title="Replace the image pull secret if your registry token changed">
    Registry tokens expire once a year. If yours changed, delete the image pull secret and create it again in both the `seekrflow` and `argo-workflows` namespaces. If you mirrored the images, use your own registry and its credentials instead of Seekr's:

    ```bash theme={null}
    for ns in seekrflow argo-workflows; do
      kubectl delete secret seekrflow-artifacts-pull-access --namespace "$ns"
      kubectl create secret docker-registry seekrflow-artifacts-pull-access \
        --namespace "$ns" \
        --docker-server=seekr.repo.sonatype.app \
        --docker-username="$REGISTRY_USERNAME" \
        --docker-password="$REGISTRY_PASSWORD"
    done
    ```
  </Step>
</Steps>

## Upgrade

<Tabs>
  <Tab title="With the sfe CLI">
    <Steps>
      <Step title="Run preflight">
        ```bash theme={null}
        sfe preflight -p <profile-name> -r <new-version>
        ```

        `sfe upgrade` doesn't run preflight for you.
      </Step>

      <Step title="Upgrade">
        ```bash theme={null}
        sfe upgrade -p <profile-name> -r <new-version>
        ```

        `sfe` downloads the new release's chart and upgrades in place.
      </Step>
    </Steps>

    To apply a changed values file without changing versions, run `sfe upgrade -p <profile-name>` without `-r`.
  </Tab>

  <Tab title="Without the sfe CLI">
    <Steps>
      <Step title="Download the new chart">
        In a new folder, sign in to Seekr's registry, then pull and unpack the new release's chart:

        ```bash theme={null}
        echo "$REGISTRY_PASSWORD" | helm registry login seekr.repo.sonatype.app \
          --username "$REGISTRY_USERNAME" \
          --password-stdin
        helm pull oci://seekr.repo.sonatype.app/seekr-docker-release/seekr/flow-helm-chart --version <new-version>
        tar -xzf flow-helm-chart-<new-version>.tgz
        ```
      </Step>

      <Step title="Preview the changes">
        Install the `helm-diff` plugin, then compare the new release with what's running:

        ```bash theme={null}
        helm plugin install https://github.com/databus23/helm-diff
        helm diff upgrade seekrflow flow-helm-chart --namespace seekrflow -f my-values.yaml
        ```

        The diff shows what the new release changes, including settings it needs that your values file doesn't have yet.
      </Step>

      <Step title="Upgrade">
        ```bash theme={null}
        helm upgrade seekrflow flow-helm-chart --namespace seekrflow -f my-values.yaml
        ```
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Check the upgrade

Run the checks in [Verify the deployment](/self-managed/flow/deploy/verify). SeekrFlow reloads its model catalog during the upgrade.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.