added vault secret manager for k3s
This commit is contained in:
50
setup_k3s_vault_auth.sh
Executable file
50
setup_k3s_vault_auth.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Umgebungsvariablen prüfen
|
||||
if [ -z "$VAULT_ADDR" ] || [ -z "$VAULT_TOKEN" ]; then
|
||||
echo "Bitte setze VAULT_ADDR und VAULT_TOKEN!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "--- Vault Kubernetes Auth Setup ---"
|
||||
|
||||
# 1. Kubernetes Auth aktivieren (falls nicht aktiv)
|
||||
vault auth enable kubernetes || true
|
||||
|
||||
# 2. Kubernetes Config holen (vom lokalen kubectl Context, muss auf K3s zeigen)
|
||||
# Wir brauchen das CA Cert und die API URL.
|
||||
# HINWEIS: Da wir von außen (VM Management) auf K3s (10.100.40.5) zugreifen, nutzen wir diese URL.
|
||||
|
||||
# Hole ServiceAccount Token vom K3s Cluster (wir erstellen temporär einen SA, um die Config zu holen oder nutzen den default)
|
||||
# Einfacher: Wir nutzen die Config, die Vault braucht, um K3s zu validieren.
|
||||
# Da K3s Token Auth nutzt, müssen wir Vault sagen, wie er Token validiert -> via TokenReview API.
|
||||
|
||||
K8S_HOST="https://10.100.40.5:6443"
|
||||
# Das CA Cert des Clusters (muss man sich besorgen, z.B. aus /etc/rancher/k3s/k3s.yaml auf dem Master)
|
||||
# Wir kopieren es uns einfach kurz via SSH, falls nicht lokal vorhanden.
|
||||
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.40.10 "sudo cat /var/lib/rancher/k3s/server/tls/server-ca.crt" > k3s-ca.crt
|
||||
|
||||
vault write auth/kubernetes/config \
|
||||
kubernetes_host="$K8S_HOST" \
|
||||
kubernetes_ca_cert=@k3s-ca.crt \
|
||||
disable_iss_validation=true
|
||||
|
||||
rm k3s-ca.crt
|
||||
|
||||
# 3. Policy erstellen (Lesezugriff auf alles unter secret/)
|
||||
vault policy write k3s-secrets-reader - <<EOF
|
||||
path "secret/data/*" {
|
||||
capabilities = ["read"]
|
||||
}
|
||||
EOF
|
||||
|
||||
# 4. Rolle erstellen
|
||||
# Erlaubt dem ServiceAccount 'external-secrets' im Namespace 'external-secrets' den Login.
|
||||
vault write auth/kubernetes/role/external-secrets-role \
|
||||
bound_service_account_names=external-secrets \
|
||||
bound_service_account_namespaces=external-secrets \
|
||||
policies=k3s-secrets-reader \
|
||||
ttl=24h
|
||||
|
||||
echo "Vault Kubernetes Auth erfolgreich konfiguriert!"
|
||||
Reference in New Issue
Block a user