@@ -1690,14 +1690,94 @@ postgresql:
16901690# # @param vault.server.extraEnvVars[1].name Address to listen on development mode
16911691# # @param vault.server.extraEnvVars[1].value The address to listen on. Default: [::]:8200
16921692vault :
1693+ extraDeploy :
1694+ - |
1695+ apiVersion: v1
1696+ kind: ConfigMap
1697+ metadata:
1698+ name: {{ include "vault.server.fullname" . }}-init
1699+ namespace: {{ include "common.names.namespace" . | quote }}
1700+ labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }}
1701+ app.kubernetes.io/part-of: vault
1702+ app.kubernetes.io/component: server
1703+ data:
1704+ vault-init.sh: |
1705+ #!/bin/sh
1706+ set -e
1707+
1708+ # Start Vault in background
1709+ vault server -config /bitnami/vault/config/config.hcl &
1710+ PID=$!
1711+
1712+ # Wait for Vault to start
1713+ echo "Waiting for Vault to start..."
1714+ until vault status > /dev/null 2>&1; STATUS=$?; [ $STATUS -eq 0 ] || [ $STATUS -eq 2 ]; do
1715+ sleep 1
1716+ done
1717+
1718+ export VAULT_ADDR='http://127.0.0.1:8200'
1719+
1720+ # Initialize if not already initialized or if init.txt is invalid
1721+ if [ ! -f /bitnami/vault/data/init.txt ] || ! grep -q "Unseal Key 1:" /bitnami/vault/data/init.txt; then
1722+ echo "Initializing Vault..."
1723+ vault operator init -key-shares=1 -key-threshold=1 > /bitnami/vault/data/init.txt
1724+ echo "Vault initialized successfully"
1725+ else
1726+ echo "Vault already initialized, using existing keys"
1727+ fi
1728+
1729+ # Unseal
1730+ echo "Reading unseal key..."
1731+ UNSEAL_KEY=$(grep 'Unseal Key 1:' /bitnami/vault/data/init.txt | awk '{print $NF}')
1732+ if [ -z "$UNSEAL_KEY" ]; then
1733+ echo "ERROR: Failed to read unseal key from init.txt"
1734+ echo "Contents of init.txt:"
1735+ cat /bitnami/vault/data/init.txt || echo "Cannot read init.txt"
1736+ exit 1
1737+ fi
1738+ echo "Unsealing Vault..."
1739+ vault operator unseal "$UNSEAL_KEY"
1740+
1741+ # Login
1742+ ROOT_TOKEN=$(grep 'Initial Root Token:' /bitnami/vault/data/init.txt | awk '{print $NF}')
1743+ export VAULT_TOKEN=$ROOT_TOKEN
1744+
1745+ # Create 'notasecret' token if it doesn't exist
1746+ if ! vault token lookup notasecret > /dev/null 2>&1; then
1747+ echo "Creating 'notasecret' token..."
1748+ vault token create -id="notasecret" -policy="root"
1749+ fi
1750+
1751+ # Enable KV v2 secrets engine (required by controlplane)
1752+ if ! vault secrets list | grep -q "^secret/"; then
1753+ echo "Enabling KV v2 secrets engine at secret/..."
1754+ vault secrets enable -path=secret kv-v2
1755+ else
1756+ echo "Secrets engine already exists at secret/"
1757+ fi
1758+
1759+ # Keep container running
1760+ wait $PID
16931761 server :
1694- args : [
1695- " server" ,
1696- " -dev"
1697- ]
1698- extraEnvVars :
1699- - name : VAULT_DEV_ROOT_TOKEN_ID
1700- value : " notasecret"
1701- - name : VAULT_DEV_LISTEN_ADDRESS
1702- value : " [::]:8200"
1703- config : " storage \" inmem\" {}\n disable_mlock = true\n ui = true\n service_registration \" kubernetes\" {}"
1762+ command : ["/vault-init.sh"]
1763+ args : [""]
1764+ config : |
1765+ disable_mlock = true
1766+ ui = false
1767+ listener "tcp" {
1768+ tls_disable = 1
1769+ address = "[::]:8200"
1770+ cluster_address = "[::]:8201"
1771+ }
1772+ storage "file" {
1773+ path = "/bitnami/vault/data"
1774+ }
1775+ extraVolumes :
1776+ - name : vault-init
1777+ configMap :
1778+ name : ' {{ include "vault.server.fullname" . }}-init'
1779+ defaultMode : 0755
1780+ extraVolumeMounts :
1781+ - name : vault-init
1782+ mountPath : /vault-init.sh
1783+ subPath : vault-init.sh
0 commit comments