Skip to content

Upgrading Zarf

Optimally the version of Zarf performing the package create and package deploy operations aligns to the version of Init Package that is installed within the cluster.

Follow CLI Installation steps for installing updates to the version of binary installed on the machine executing zarf commands.

Upgrading the init package is a bit different from upgrading a regular application package because it establishes your cluster’s foundational infrastructure. Follow these steps to upgrade your init package:

  • Default Package: If you’re using the default package, run the following command to fetch the latest init package (if it’s not already present locally):

    Terminal window
    zarf tools download-init
    • Validate: This will download the associated init package to your current working directory unless --output-directory is specified.
  • Manual: The Init Package can also be manually downloaded from the Github releases to a storage location of your choice.

    Terminal window
    VERSION="<target version>"; ARCH="<target architecture>"; curl -LO https://github.com/zarf-dev/zarf/releases/download/${VERSION}/zarf-init-${ARCH}-${VERSION}.tar.zst

  • Init: The init process can be executed to upgrade a cluster from one version to another.

    Terminal window
    zarf init --confirm
  • Deploy: Init Packages can also be deployed directly with package deploy - allowing for explicit deployment specification and the use of custom init packages.

    Terminal window
    zarf package deploy <zarf-init-package tarball> --confirm

    Note: The use of package deploy for zarf init operations will not expose any configuration for external git/registry options.

  • Validate: Ensure the following zarf resources are healthy:

    • Registry (if deployed)
    • Agent pods
    • Git server (if deployed)
    Terminal window
    zarf tools kubectl get pods -n zarf

After the original zarf init has taken place - any following initialize actions will use the values in the zarf-state secret in the zarf namespace to obtain information for Zarf infrastructure such as the registry. For example, the --registry-pull-password flag is ignored on subsequent runs.

See the init command for reference.

In order to update any configuration passed into the zarf init command, you will need to run zarf tools update-creds with the information necessary.