Skip to content

Upgrading Guide

For the upgrading guide to a specific version of workflows change the documentation version in the lower right corner of your browser.

Breaking changes typically (sometimes we don't realise they are breaking) have "!" in the commit message, as per the conventional commits.

Upgrading to v4.1

INFORMER_WRITE_BACK environment variable removed

The INFORMER_WRITE_BACK environment variable has been removed. This variable controlled whether to write workflow updates back to the informer cache (true) or sleep for 1 second (false, the default) after persisting updates. Alternative mechanisms now prevent reprocessing, making both behaviors unnecessary. If you have this variable set, it can be safely removed from your configuration.

Upgrading to v4.0

Deprecations

Several features were marked for deprecation in 3.6, and are now removed:

  • The Python SDK is removed, we recommend migrating to Hera
  • schedule in CronWorkflows, podPriority, mutex and semaphore in Workflows and WorkflowTemplates.

For more information on how to migrate these see deprecations

Python SDK Removed

The Python SDK (argo-workflows package on PyPI) has been removed from the repository in version 4.0 as previously announced in v3.6.

If you have the Python SDK installed, it will mostly continue to work with Argo Workflows 4.0, but it will not receive updates, bug fixes, or support. We recommend migrating to Hera, which is the recommended Python SDK for Argo Workflows. Hera provides a more intuitive and Pythonic interface for working with Argo Workflows.

For migration guidance and documentation, see:

Logging levels

The logging levels available have been reduced to debug, info, warn and error. Other levels will be mapped to their equivalent if you use them, although they were previously undocumented.

Full CRDs

The official release manifests now default to using CRDs with full validation information. This enables using Validating Admission Policy and kubectl explain ... on Argo CRDs.

Existing installations using the minimal CRDs will continue to work, but you'll be unable to use features that rely on CRD validation information.

Use the following command to selectively apply the full CRDs for an existing installation:

kubectl apply --server-side --kustomize https://github.com/argoproj/argo-workflows/manifests/base/crds/full?ref=v4.0.0

Go language (Developers)

If you are importing argo-workflows code into your go project you need to be aware of some changes.

Many go-lang functions have changed signature to require a context as the first parameter. In almost all cases you will need to provide a logger in your context. The details are in logging.go

The kubernetes client does not require a context. The API client from apiclient is an exception and will create a logger for you if you don't provide one.

In particular:

  • Your logger must conform to the logging interface Logger from that file.
  • Your logger should be retrievable from the context key logger (util/logging/logging.go LoggerKey)
  • You may wish to use the logger from slog.go

Apiclient no longer provides NewClient or NewClientFromOpts, you must use NewClientFromOptsWithContext.


Have a question?

Search on GitHub Discussions and Slack.