Adding helm test for vault server (#531)
Also adds acceptance test for 'helm test' and updates the chart-verifier version.
This commit is contained in:
parent
b21b37b07a
commit
3593739160
5 changed files with 93 additions and 10 deletions
|
@ -17,7 +17,7 @@ jobs:
|
||||||
environment:
|
environment:
|
||||||
BATS_VERSION: "1.3.0"
|
BATS_VERSION: "1.3.0"
|
||||||
# Note: the commit SHA is used here since the repo doesn't use release tags
|
# Note: the commit SHA is used here since the repo doesn't use release tags
|
||||||
CHART_VERIFIER_VERSION: "190d532246a5936dc6a7125e2da917d04e38a672"
|
CHART_VERIFIER_VERSION: "e2c03bd1a4aea20deb0a4a03ebfde254b1672050"
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run:
|
- run:
|
||||||
|
|
39
templates/tests/server-test.yaml
Normal file
39
templates/tests/server-test.yaml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{{- if .Values.server.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-server-test"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: {{ .Release.Name }}-server-test
|
||||||
|
image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag | default "latest" }}
|
||||||
|
imagePullPolicy: {{ .Values.server.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: VAULT_ADDR
|
||||||
|
value: {{ include "vault.scheme" . }}://{{ template "vault.fullname" . }}.{{ .Release.Namespace }}.svc:{{ .Values.server.service.port }}
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
echo "Checking for sealed info in 'vault status' output"
|
||||||
|
ATTEMPTS=10
|
||||||
|
n=0
|
||||||
|
until [ "$n" -ge $ATTEMPTS ]
|
||||||
|
do
|
||||||
|
echo "Attempt" $n...
|
||||||
|
vault status -format yaml | grep -E '^sealed: (true|false)' && break
|
||||||
|
n=$((n+1))
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
if [ $n -ge $ATTEMPTS ]; then
|
||||||
|
echo "timed out looking for sealed info in 'vault status' output"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
restartPolicy: Never
|
||||||
|
{{- end }}
|
|
@ -32,3 +32,10 @@ It relies on the helm [schema-gen plugin][schema-gen]. Note that some manual
|
||||||
editing will be required, since several properties accept multiple data types.
|
editing will be required, since several properties accept multiple data types.
|
||||||
|
|
||||||
[schema-gen]: https://github.com/karuppiah7890/helm-schema-gen
|
[schema-gen]: https://github.com/karuppiah7890/helm-schema-gen
|
||||||
|
|
||||||
|
## Helm test
|
||||||
|
|
||||||
|
Vault Helm also contains a simple helm test under
|
||||||
|
[templates/tests/](../templates/tests/) that may be run against a helm release:
|
||||||
|
|
||||||
|
helm test <RELEASE_NAME>
|
||||||
|
|
27
test/acceptance/helm-test.bats
Normal file
27
test/acceptance/helm-test.bats
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
|
load _helpers
|
||||||
|
|
||||||
|
@test "helm/test: running helm test" {
|
||||||
|
cd `chart_dir`
|
||||||
|
|
||||||
|
kubectl delete namespace acceptance --ignore-not-found=true
|
||||||
|
kubectl create namespace acceptance
|
||||||
|
kubectl config set-context --current --namespace=acceptance
|
||||||
|
|
||||||
|
helm install "$(name_prefix)" .
|
||||||
|
wait_for_running $(name_prefix)-0
|
||||||
|
|
||||||
|
helm test "$(name_prefix)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
teardown() {
|
||||||
|
if [[ ${CLEANUP:-true} == "true" ]]
|
||||||
|
then
|
||||||
|
echo "helm/pvc teardown"
|
||||||
|
helm delete vault
|
||||||
|
kubectl delete --all pvc
|
||||||
|
kubectl delete namespace acceptance --ignore-not-found=true
|
||||||
|
fi
|
||||||
|
}
|
|
@ -8,6 +8,9 @@ setup_file() {
|
||||||
export CHART_VOLUME=vault-helm-chart-src
|
export CHART_VOLUME=vault-helm-chart-src
|
||||||
# Note: currently `latest` is the only tag available in the chart-verifier repo.
|
# Note: currently `latest` is the only tag available in the chart-verifier repo.
|
||||||
local IMAGE="quay.io/redhat-certification/chart-verifier:latest"
|
local IMAGE="quay.io/redhat-certification/chart-verifier:latest"
|
||||||
|
# chart-verifier requires an openshift version if a cluster isn't available
|
||||||
|
local OPENSHIFT_VERSION="4.7"
|
||||||
|
local DISABLED_TESTS="chart-testing"
|
||||||
|
|
||||||
local run_cmd="chart-verifier"
|
local run_cmd="chart-verifier"
|
||||||
local chart_src="."
|
local chart_src="."
|
||||||
|
@ -23,8 +26,11 @@ setup_file() {
|
||||||
# Start chart-verifier using this volume
|
# Start chart-verifier using this volume
|
||||||
run_cmd="docker run --rm --volumes-from $CHART_VOLUME $IMAGE"
|
run_cmd="docker run --rm --volumes-from $CHART_VOLUME $IMAGE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$run_cmd verify --output json $chart_src 2>&1 | tee $VERIFY_OUTPUT
|
$run_cmd verify $chart_src \
|
||||||
|
--output json \
|
||||||
|
--openshift-version $OPENSHIFT_VERSION \
|
||||||
|
--disable $DISABLED_TESTS 2>&1 | tee $VERIFY_OUTPUT
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown_file() {
|
teardown_file() {
|
||||||
|
@ -33,8 +39,8 @@ teardown_file() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "has-minkubeversion" {
|
@test "has-kubeversion" {
|
||||||
check_result has-minkubeversion
|
check_result has-kubeversion
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "is-helm-v3" {
|
@test "is-helm-v3" {
|
||||||
|
@ -65,12 +71,16 @@ teardown_file() {
|
||||||
check_result contains-values-schema
|
check_result contains-values-schema
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "contains-test" {
|
||||||
|
check_result contains-test
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "chart-testing" {
|
||||||
|
skip "Skipping since this test requires a kubernetes/openshift cluster"
|
||||||
|
check_result chart-testing
|
||||||
|
}
|
||||||
|
|
||||||
@test "images-are-certified" {
|
@test "images-are-certified" {
|
||||||
skip "Skipping until this has been addressed"
|
skip "Skipping until this has been addressed"
|
||||||
check_result images-are-certified
|
check_result images-are-certified
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "contains-test" {
|
|
||||||
skip "Skipping until this has been addressed"
|
|
||||||
check_result contains-test
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue