Auto-decrypt kubeconfig when loading secrets
Some checks failed
CI / checks (push) Has been cancelled
CI / checks (pull_request) Has been cancelled

This commit is contained in:
Tero Halla-aho 2025-12-15 20:07:45 +02:00
parent b38951b75a
commit 281fffbe4f

View file

@ -7,6 +7,8 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SECRETS_FILE="${SECRETS_FILE:-$ROOT_DIR/creds/secrets.env}" SECRETS_FILE="${SECRETS_FILE:-$ROOT_DIR/creds/secrets.env}"
ENCRYPTED_FILE="${ENCRYPTED_FILE:-$ROOT_DIR/creds/secrets.enc.env}" ENCRYPTED_FILE="${ENCRYPTED_FILE:-$ROOT_DIR/creds/secrets.enc.env}"
KUBECONFIG_FILE="${KUBECONFIG_FILE:-$ROOT_DIR/creds/kubeconfig.yaml}"
KUBECONFIG_ENC_FILE="${KUBECONFIG_ENC_FILE:-$ROOT_DIR/creds/kubeconfig.enc.yaml}"
ensure_decrypted() { ensure_decrypted() {
if [[ -f "$SECRETS_FILE" ]]; then if [[ -f "$SECRETS_FILE" ]]; then
@ -24,8 +26,33 @@ ensure_decrypted() {
} }
ensure_decrypted || exit 0 ensure_decrypted || exit 0
echo "Loading secrets from $SECRETS_FILE" echo "Loading secrets from $SECRETS_FILE"
set -a set -a
source "$SECRETS_FILE" source "$SECRETS_FILE"
set +a set +a
ensure_kubeconfig() {
# If user already set KUBECONFIG, respect it.
if [[ -n "${KUBECONFIG:-}" ]]; then
return 0
fi
if [[ -f "$KUBECONFIG_FILE" ]]; then
export KUBECONFIG="$KUBECONFIG_FILE"
return 0
fi
if [[ -f "$KUBECONFIG_ENC_FILE" ]]; then
if command -v sops >/dev/null 2>&1; then
echo "Decrypting $KUBECONFIG_ENC_FILE -> $KUBECONFIG_FILE"
sops -d "$KUBECONFIG_ENC_FILE" >"$KUBECONFIG_FILE"
export KUBECONFIG="$KUBECONFIG_FILE"
else
echo "sops not found and kubeconfig is missing. Install sops or set KUBECONFIG manually." >&2
return 1
fi
fi
}
ensure_kubeconfig || true