Upgrade Advisory
This documentation is for Flux (v1) and Helm Operator (v1). Both projects are in maintenance mode and will soon reach end-of-life. We strongly recommend you familiarise yourself with the newest Flux and start looking at your migration path.
For documentation regarding the latest Flux, please refer to this section.
Tests
Helm tests are a useful validation mechanism for Helm Releases, and thus are supported by the Helm Operator.
Enabling tests
When tests for a HelmRelease are enabled, the Helm Operator will run them
after any successful installation or upgrade attempt. In the case of a test
failure, the prior installation or upgrade will be treated as failed, resulting
in the release being purged or rolled back
if enabled.
Tests can be enabled by setting .test.enable:
spec:
test:
enable: true
Wait interaction
When tests are enabled,
resource waiting
defaults to true since this is likely needed for test pre-conditions to be satisfied.
Uninstall or rollback release on test failure
The spec.test.ignoreFailures allows the HelmRelease to be left in a released state if the tests fail.
Setting ignoreFailures to false will automatically uninstall or rollback the HelmRelease if any of the tests fail.
If the tests are ignored, the Released condition will be left as true and Tested will be false.
spec:
test:
enable: true
ignoreFailures: false
Test timeout
Test timeout can be set via the .test.timeout option.
spec:
test:
enable: true
timeout: 600
It is defined as the time to wait for any individual Kubernetes operation during
tests in seconds. Defaults to 300 when omitted.
Helm 2 vs 3
In Helm 3, test-specific funcationality was removed in favor of a generic test
hook no different than any other hook. The Helm Operator takes this into account
as detailed below.
Test cleanup
Helm 3 removed the helm test --cleanup flag in favor of
hook delete policies.
For HelmReleases targeting Helm 2, test cleanup is enabled by default since
upgrades are highly likely to cause test pod name conflicts without it.
This flag currently deletes test pods immediately after they are run, but the only
guarantee is that tests are cleaned up before running a subsequent test for the
same HelmRelease, as delaying the deletion would allow time to debug failures,
and thus may be implemented in the future. Test cleanup can be disabled by setting
.test.cleanup to false.
spec:
helmVersion: v2
test:
enable: true
cleanup: false
Test parallelism
Helm 2 supported helm test --parallel --max 10 to run tests in parallel. Helm 3 will
likely
expand this functionality to all hooks. Once the Helm 3 implementation is available
this can be integrated into the Helm Operator, and translated into the equivalent
Helm 2 options for test parallelism as well.