diff --git a/setup_k3s_vault_auth.sh b/setup_k3s_vault_auth.sh new file mode 100755 index 0000000..5aaf821 --- /dev/null +++ b/setup_k3s_vault_auth.sh @@ -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 - <