Add possibility to run sidecars with vault (#87)

* Add extra containers

* fix template

* add unit tests

* resolve conflicts

* remove duplicate docs

* fix unit tests
This commit is contained in:
Shahbaz Nazir 2019-11-21 20:07:41 +01:00 committed by Jason O'Donnell
parent 6bef1e19df
commit faf5a84c5e
3 changed files with 88 additions and 0 deletions

View file

@ -99,6 +99,9 @@ spec:
periodSeconds: 3 periodSeconds: 3
successThreshold: 1 successThreshold: 1
timeoutSeconds: 5 timeoutSeconds: 5
{{- if .Values.server.extraContainers }}
{{ toYaml .Values.server.extraContainers | nindent 8}}
{{- end }}
lifecycle: lifecycle:
# Vault container doesn't receive SIGTERM from Kubernetes # Vault container doesn't receive SIGTERM from Kubernetes
# and after the grace period ends, Kube sends SIGKILL. This # and after the grace period ends, Kube sends SIGKILL. This

View file

@ -568,6 +568,87 @@ load _helpers
} }
#-------------------------------------------------------------------- #--------------------------------------------------------------------
# extraContainers
@test "server/standalone-StatefulSet: adds extra containers" {
cd `chart_dir`
# Test that it defines it
local object=$(helm template \
-x templates/server-statefulset.yaml \
--set 'server.extraContainers[0].image=test-image' \
--set 'server.extraContainers[0].name=test-container' \
--set 'server.extraContainers[0].ports[0].name=test-port' \
--set 'server.extraContainers[0].ports[0].containerPort=9410' \
--set 'server.extraContainers[0].ports[0].protocol=TCP' \
--set 'server.extraContainers[0].env[0].name=TEST_ENV' \
--set 'server.extraContainers[0].env[0].value=test_env_value' \
. | tee /dev/stderr |
yq -r '.spec.template.spec.containers[] | select(.name == "test-container")' | tee /dev/stderr)
local actual=$(echo $object |
yq -r '.name' | tee /dev/stderr)
[ "${actual}" = "test-container" ]
local actual=$(echo $object |
yq -r '.image' | tee /dev/stderr)
[ "${actual}" = "test-image" ]
local actual=$(echo $object |
yq -r '.ports[0].name' | tee /dev/stderr)
[ "${actual}" = "test-port" ]
local actual=$(echo $object |
yq -r '.ports[0].containerPort' | tee /dev/stderr)
[ "${actual}" = "9410" ]
local actual=$(echo $object |
yq -r '.ports[0].protocol' | tee /dev/stderr)
[ "${actual}" = "TCP" ]
local actual=$(echo $object |
yq -r '.env[0].name' | tee /dev/stderr)
[ "${actual}" = "TEST_ENV" ]
local actual=$(echo $object |
yq -r '.env[0].value' | tee /dev/stderr)
[ "${actual}" = "test_env_value" ]
}
@test "server/standalone-StatefulSet: add two extra containers" {
cd `chart_dir`
# Test that it defines it
local object=$(helm template \
-x templates/server-statefulset.yaml \
--set 'server.extraContainers[0].image=test-image' \
--set 'server.extraContainers[0].name=test-container' \
--set 'server.extraContainers[1].image=test-image' \
--set 'server.extraContainers[1].name=test-container-2' \
. | tee /dev/stderr |
yq -r '.spec.template.spec.containers' | tee /dev/stderr)
local containers_count=$(echo $object |
yq -r 'length' | tee /dev/stderr)
[ "${containers_count}" = 3 ]
}
@test "server/standalone-StatefulSet: no extra containers added" {
cd `chart_dir`
# Test that it defines it
local object=$(helm template \
-x templates/server-statefulset.yaml \
. | tee /dev/stderr |
yq -r '.spec.template.spec.containers' | tee /dev/stderr)
local containers_count=$(echo $object |
yq -r 'length' | tee /dev/stderr)
[ "${containers_count}" = 1 ]
}
# extra labels # extra labels
@test "server/standalone-StatefulSet: specify extraLabels" { @test "server/standalone-StatefulSet: specify extraLabels" {

View file

@ -54,6 +54,10 @@ server:
# method. https://www.vaultproject.io/docs/auth/kubernetes.html # method. https://www.vaultproject.io/docs/auth/kubernetes.html
authDelegator: authDelegator:
enabled: false enabled: false
# extraContainers is a list of sidecar containers. Specified as a raw YAML string.
extraContainers: null
# extraEnvironmentVars is a list of extra enviroment variables to set with the stateful set. These could be # extraEnvironmentVars is a list of extra enviroment variables to set with the stateful set. These could be
# used to include variables required for auto-unseal. # used to include variables required for auto-unseal.