End-to-end test conditional remediation
This commit is contained in:
parent
b8853ad7a5
commit
a52ba65c4a
|
@ -75,6 +75,364 @@ jobs:
|
|||
EXPECTED=$(cat config/testdata/valuesfrom/golden.txt)
|
||||
if [ "$RESULT" != "$EXPECTED" ]; then
|
||||
echo -e "$RESULT\n\ndoes not equal\n\n$EXPECTED"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run install fail test
|
||||
run: |
|
||||
test_name=install-fail
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="False" and .Ready=="False"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed and not uninstalled.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run install test fail test
|
||||
run: |
|
||||
test_name=install-test-fail
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Tested=="False" and .Ready=="False"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed and not uninstalled.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run install test fail ignore test
|
||||
run: |
|
||||
test_name=install-test-fail-ignore
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Tested=="False" and .Ready=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed and not uninstalled.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run install fail with remedition test
|
||||
run: |
|
||||
test_name=install-fail-remediate
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="False" and .Ready=="False" and .Uninstalled=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Ensure release does not exist (was uninstalled).
|
||||
HISTORY=$(helm -n helm-system history $test_name 2>&1; exit 0)
|
||||
if [ "$HISTORY" != 'Error: release: not found' ]; then
|
||||
echo -e "Unexpected release history: $HISTORY"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run install fail with retry test
|
||||
run: |
|
||||
test_name=install-fail-retry
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.installFailures == 2 and ( .status.conditions | map( { (.type): .status } ) | add | .Installed=="False" and .Ready=="False" )' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run upgrade fail test
|
||||
run: |
|
||||
test_name=upgrade-fail
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/install.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Ready=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/upgrade.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Upgraded=="False" and .Ready=="False"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was upgraded and not rolled back.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 2 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run upgrade test fail test
|
||||
run: |
|
||||
test_name=upgrade-test-fail
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/install.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Ready=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/upgrade.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Upgraded=="True" and .Tested=="False" and .Ready=="False"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was upgraded and not rolled back.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 2 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run upgrade fail with remediation test
|
||||
run: |
|
||||
test_name=upgrade-fail-remediate
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/install.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Ready=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/upgrade.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Upgraded=="False" and .Ready=="False" and .RolledBack=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was upgraded and then rolled back.
|
||||
HISTORY=$(helm -n helm-system history -o json $test_name)
|
||||
REVISION_COUNT=$(echo "$HISTORY" | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 3 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
fi
|
||||
LAST_REVISION_DESCRIPTION=$(echo "$HISTORY" | jq -r 'last | .description')
|
||||
if [ "$LAST_REVISION_DESCRIPTION" != "Rollback to 1" ]; then
|
||||
echo -e "Unexpected last revision description: $LAST_REVISION_DESCRIPTION"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run upgrade fail retry test
|
||||
run: |
|
||||
test_name=upgrade-fail-retry
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/install.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Ready=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed.
|
||||
REVISION_COUNT=$(helm -n helm-system history -o json $test_name | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/upgrade.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.upgradeFailures == 2 and ( .status.conditions | map( { (.type): .status } ) | add | .Upgraded=="False" and .Ready=="False" and .RolledBack=="True" )' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was upgraded and rolled back twice.
|
||||
HISTORY=$(helm -n helm-system history -o json $test_name)
|
||||
REVISION_COUNT=$(echo "$HISTORY" | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 5 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
fi
|
||||
LAST_REVISION_DESCRIPTION=$(echo "$HISTORY" | jq -r 'last | .description')
|
||||
if [ "$LAST_REVISION_DESCRIPTION" != "Rollback to 3" ]; then
|
||||
echo -e "Unexpected last revision description: $LAST_REVISION_DESCRIPTION"
|
||||
exit 1
|
||||
fi
|
||||
- name: Run upgrade fail with uninstall remediation strategy test
|
||||
run: |
|
||||
test_name=upgrade-fail-remediate-uninstall
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/install.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.conditions | map( { (.type): .status } ) | add | .Installed=="True" and .Ready=="True"' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was installed.
|
||||
HISTORY=$(helm -n helm-system history -o json $test_name)
|
||||
REVISION_COUNT=$(echo "$HISTORY" | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
LAST_REVISION_STATUS=$(echo "$HISTORY" | jq -r 'last | .status')
|
||||
if [ "$LAST_REVISION_STATUS" != "deployed" ]; then
|
||||
echo -e "Unexpected last revision status: $LAST_REVISION_STATUS"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl -n helm-system apply -f config/testdata/$test_name/upgrade.yaml
|
||||
echo -n ">>> Waiting for expected conditions"
|
||||
count=0
|
||||
until [ 'true' == "$( kubectl -n helm-system get helmrelease/$test_name -o json | jq '.status.upgradeFailures == 1 and .status.installFailures == 1 and ( .status.conditions | map( { (.type): .status } ) | add | .Upgraded=="False" and .Uninstalled=="True" and .Installed=="False" and .Ready=="False" )' )" ]; do
|
||||
echo -n '.'
|
||||
sleep 5
|
||||
count=$((count + 1))
|
||||
if [[ ${count} -eq 24 ]]; then
|
||||
echo ' No more retries left!'
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ' done'
|
||||
|
||||
# Validate release was uninstalled/reinstalled.
|
||||
HISTORY=$(helm -n helm-system history -o json $test_name)
|
||||
REVISION_COUNT=$(echo "$HISTORY" | jq 'length')
|
||||
if [ "$REVISION_COUNT" != 1 ]; then
|
||||
echo -e "Unexpected revision count: $REVISION_COUNT"
|
||||
exit 1
|
||||
fi
|
||||
LAST_REVISION_STATUS=$(echo "$HISTORY" | jq -r 'last | .status')
|
||||
if [ "$LAST_REVISION_STATUS" != "failed" ]; then
|
||||
echo -e "Unexpected last revision status: $LAST_REVISION_STATUS"
|
||||
exit 1
|
||||
fi
|
||||
- name: Logs
|
||||
run: |
|
||||
|
@ -90,5 +448,6 @@ jobs:
|
|||
kubectl -n helm-system get helmcharts -oyaml
|
||||
kubectl -n helm-system get helmreleases -oyaml
|
||||
kubectl -n helm-system get all
|
||||
helm ls -n helm-system
|
||||
kubectl -n helm-system logs deploy/source-controller
|
||||
kubectl -n helm-system logs deploy/helm-controller
|
||||
|
|
|
@ -111,6 +111,28 @@ spec:
|
|||
description: DisableWait disables the waiting for resources to
|
||||
be ready after a Helm install has been performed.
|
||||
type: boolean
|
||||
remediation:
|
||||
description: Remediation holds the remediation configuration for
|
||||
when the Helm install action for the HelmRelease fails. The
|
||||
default is to not perform any action.
|
||||
properties:
|
||||
ignoreTestFailures:
|
||||
description: IgnoreTestFailures tells the controller to skip
|
||||
remediation when the Helm tests are run after an install
|
||||
action but fail. Defaults to 'Test.IgnoreFailures'.
|
||||
type: boolean
|
||||
remediateLastFailure:
|
||||
description: RemediateLastFailure tells the controller to
|
||||
remediate the last failure, when no retries remain. Defaults
|
||||
to 'false'.
|
||||
type: boolean
|
||||
retries:
|
||||
description: Retries is the number of retries that should
|
||||
be attempted on failures before bailing. Remediation, using
|
||||
an uninstall, is performed between each attempt. Defaults
|
||||
to '0', a negative integer equals to unlimited retries.
|
||||
type: integer
|
||||
type: object
|
||||
replace:
|
||||
description: Replace tells the Helm install action to re-use the
|
||||
'ReleaseName', but only if that name is a deleted release which
|
||||
|
@ -154,10 +176,6 @@ spec:
|
|||
description: DisableWait disables the waiting for resources to
|
||||
be ready after a Helm rollback has been performed.
|
||||
type: boolean
|
||||
enable:
|
||||
description: Enable enables Helm rollback actions for this HelmRelease
|
||||
after an Helm install or upgrade action failure.
|
||||
type: boolean
|
||||
force:
|
||||
description: Force forces resource updates through a replacement
|
||||
strategy.
|
||||
|
@ -189,6 +207,12 @@ spec:
|
|||
description: Enable enables Helm test actions for this HelmRelease
|
||||
after an Helm install or upgrade action has been performed.
|
||||
type: boolean
|
||||
ignoreFailures:
|
||||
description: IgnoreFailures tells the controller to skip remediation
|
||||
when the Helm tests are run but fail. Can be overwritten for
|
||||
tests run after install or upgrade actions in 'Install.IgnoreTestFailures'
|
||||
and 'Upgrade.IgnoreTestFailures'.
|
||||
type: boolean
|
||||
timeout:
|
||||
description: Timeout is the time to wait for any individual Kubernetes
|
||||
operation during the performance of a Helm test action. Defaults
|
||||
|
@ -243,16 +267,40 @@ spec:
|
|||
description: Force forces resource updates through a replacement
|
||||
strategy.
|
||||
type: boolean
|
||||
maxRetries:
|
||||
description: MaxRetries is the number of retries that should be
|
||||
attempted on failures before bailing. Defaults to '0', a negative
|
||||
integer equals to unlimited retries.
|
||||
type: integer
|
||||
preserveValues:
|
||||
description: PreserveValues will make Helm reuse the last release's
|
||||
values and merge in overrides from 'Values'. Setting this flag
|
||||
makes the HelmRelease non-declarative.
|
||||
type: boolean
|
||||
remediation:
|
||||
description: Remediation holds the remediation configuration for
|
||||
when the Helm upgrade action for the HelmRelease fails. The
|
||||
default is to not perform any action.
|
||||
properties:
|
||||
ignoreTestFailures:
|
||||
description: IgnoreTestFailures tells the controller to skip
|
||||
remediation when the Helm tests are run after an upgrade
|
||||
action but fail. Defaults to 'Test.IgnoreFailures'.
|
||||
type: boolean
|
||||
remediateLastFailure:
|
||||
description: RemediateLastFailure tells the controller to
|
||||
remediate the last failure, when no retries remain. Defaults
|
||||
to 'false' unless 'Retries' is greater than 0.
|
||||
type: boolean
|
||||
retries:
|
||||
description: Retries is the number of retries that should
|
||||
be attempted on failures before bailing. Remediation, using
|
||||
'Strategy', is performed between each attempt. Defaults
|
||||
to '0', a negative integer equals to unlimited retries.
|
||||
type: integer
|
||||
strategy:
|
||||
description: Strategy to use for failure remediation. Defaults
|
||||
to 'rollback'.
|
||||
enum:
|
||||
- rollback
|
||||
- uninstall
|
||||
type: string
|
||||
type: object
|
||||
timeout:
|
||||
description: Timeout is the time to wait for any individual Kubernetes
|
||||
operation (like Jobs for hooks) during the performance of a
|
||||
|
@ -336,14 +384,17 @@ spec:
|
|||
type: object
|
||||
type: array
|
||||
failures:
|
||||
description: Failures is the reconciliation failure count. It is reset
|
||||
after a successful reconciliation.
|
||||
description: Failures is the reconciliation failure count.
|
||||
format: int64
|
||||
type: integer
|
||||
helmChart:
|
||||
description: HelmChart is the namespaced name of the HelmChart resource
|
||||
created by the controller for the HelmRelease.
|
||||
type: string
|
||||
installFailures:
|
||||
description: InstallFailures is the install failure count.
|
||||
format: int64
|
||||
type: integer
|
||||
lastAppliedRevision:
|
||||
description: LastAppliedRevision is the revision of the last successfully
|
||||
applied source.
|
||||
|
@ -364,6 +415,10 @@ spec:
|
|||
description: ObservedGeneration is the last reconciled generation.
|
||||
format: int64
|
||||
type: integer
|
||||
upgradeFailures:
|
||||
description: UpgradeFailures is the upgrade failure count.
|
||||
format: int64
|
||||
type: integer
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- deployment.yaml
|
||||
- deployment.yaml
|
||||
images:
|
||||
- name: fluxcd/helm-controller
|
||||
newName: fluxcd/helm-controller
|
||||
|
|
|
@ -11,10 +11,6 @@ spec:
|
|||
kind: HelmRepository
|
||||
name: webapp
|
||||
interval: 1m
|
||||
test:
|
||||
enable: true
|
||||
rollback:
|
||||
enable: true
|
||||
values:
|
||||
service:
|
||||
grpcService: backend
|
||||
|
|
|
@ -13,10 +13,6 @@ spec:
|
|||
interval: 1m
|
||||
dependsOn:
|
||||
- backend
|
||||
test:
|
||||
enable: true
|
||||
rollback:
|
||||
enable: true
|
||||
values:
|
||||
backend: http://backend-podinfo:9898/echo
|
||||
resources:
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: install-fail-remediate
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
install:
|
||||
remediation:
|
||||
remediateLastFailure: true
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,27 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: install-fail-retry
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
install:
|
||||
remediation:
|
||||
retries: 1
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,24 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: install-fail
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,23 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: install-test-fail-ignore
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
test:
|
||||
enable: true
|
||||
ignoreFailures: true
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
faults:
|
||||
testFail: true
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: install-test-fail
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
test:
|
||||
enable: true
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
faults:
|
||||
testFail: true
|
|
@ -11,10 +11,6 @@ spec:
|
|||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
test:
|
||||
enable: true
|
||||
rollback:
|
||||
enable: true
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail-remediate-uninstall
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
|
@ -0,0 +1,28 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail-remediate-uninstall
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
upgrade:
|
||||
remediation:
|
||||
remediateLastFailure: true
|
||||
strategy: uninstall
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,18 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail-remediate
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
|
@ -0,0 +1,27 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail-remediate
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
upgrade:
|
||||
remediation:
|
||||
remediateLastFailure: true
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,18 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail-retry
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
|
@ -0,0 +1,27 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail-retry
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
upgrade:
|
||||
remediation:
|
||||
retries: 1
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,18 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
|
@ -0,0 +1,24 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-fail
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
# Make wait fail. With single replica helm doesn't actually wait, see:
|
||||
# https://github.com/helm/helm/issues/5814#issuecomment-567130226
|
||||
replicaCount: 2
|
||||
faults:
|
||||
unready: true
|
||||
timeout: 3s
|
|
@ -0,0 +1,18 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-test-fail
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: helm.toolkit.fluxcd.io/v2alpha1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: upgrade-test-fail
|
||||
spec:
|
||||
interval: 5m
|
||||
chart:
|
||||
name: podinfo
|
||||
version: '^4.0.0'
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: podinfo
|
||||
interval: 1m
|
||||
test:
|
||||
enable: true
|
||||
values:
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
faults:
|
||||
testFail: true
|
|
@ -11,10 +11,6 @@ spec:
|
|||
kind: HelmRepository
|
||||
name: valuesfrom
|
||||
interval: 1m
|
||||
test:
|
||||
enable: true
|
||||
rollback:
|
||||
enable: true
|
||||
valuesFrom:
|
||||
- kind: ConfigMap
|
||||
name: valuesfrom-config
|
||||
|
|
Loading…
Reference in New Issue