apiVersion: v1 kind: ConfigMap metadata: name: vault-secrets-config namespace: vault labels: app.kubernetes.io/name: vault app.kubernetes.io/component: secrets app.kubernetes.io/part-of: telecom-platform data: init-secrets.sh: | #!/bin/sh # Wait for Vault to be ready until vault status; do echo "Waiting for Vault to be ready..." sleep 2 done # Initialize Vault vault operator init -key-shares=5 -key-threshold=3 > /tmp/vault-init.txt # Unseal Vault (in production, this should be done manually) VAULT_TOKEN=$(grep 'Initial Root Token:' /tmp/vault-init.txt | awk '{print $4}') export VAULT_TOKEN # Unseal with 3 keys vault operator unseal $(grep 'Key 1:' /tmp/vault-init.txt | awk '{print $3}') vault operator unseal $(grep 'Key 2:' /tmp/vault-init.txt | awk '{print $3}') vault operator unseal $(grep 'Key 3:' /tmp/vault-init.txt | awk '{print $3}') # Enable auth methods vault auth enable kubernetes vault auth enable oidc vault auth enable userpass # Enable secrets engines vault secrets enable kv-v2 vault secrets enable database vault secrets enable transit # Configure Kubernetes auth vault write auth/kubernetes/config \ token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \ kubernetes_host="https://${KUBERNETES_PORT_443_TCP_ADDR}:443" \ kubernetes_ca_cert="$(cat /var/run/secrets/kubernetes.io.serviceaccount/ca.crt)" # Create policies vault policy write telecom-platform - <