Skip to content

Instantly share code, notes, and snippets.

@amaya382
Last active July 24, 2019 00:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amaya382/c2cf37772f32dba98a0bf33fc2e83835 to your computer and use it in GitHub Desktop.
Save amaya382/c2cf37772f32dba98a0bf33fc2e83835 to your computer and use it in GitHub Desktop.
#!/bin/bash -eu
# Prerequisites: helm-client, kubeseal, yq, GNU grep, and GNU sed
# $1: chart
# $2: values file
# $3: chart name
cat << EOF > $1/templates/secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}
type: Opaque
data:
{{- range \$i, \$e := .Values.secrets }}
{{ \$e.name }}: {{ \$e.value | b64enc -}}
{{ end }}
EOF
for kv in $(yq -y '.spec.encryptedData' <(helm template -x templates/secret.yaml --name $3 -f $2 $1 | kubeseal --format yaml) | sed 's/ //g'); do
k="${kv%:*}"
v="${kv#*:}"
orig=$(cat "$2" | grep -A 1 "name: $k" | grep -oP '(?<= value: ).+')
echo "overwrite: $k"
sed -i'' "/^- name: $k$/,/^ value: .\+$/c- name: $k\n value: $v" "$2"
done
rm $1/templates/secret.yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment