From 2623eecfcab46d2029ae88ac3ee443c869ddca25 Mon Sep 17 00:00:00 2001 From: Story Crater Bot <19826264+Riotpiaole@users.noreply.github.com> Date: Tue, 18 Aug 2026 15:08:02 -0700 Subject: [PATCH] feat(argocd): SOPS CMP plugin decryption for Stage 0 secrets (simplify to directory source) --- k8s/argocd/apps/00-secrets.yaml | 25 ++++++++++++++++++ k8s/argocd/bootstrap/sops-cmp-generate.sh | 32 +++++++++++++++++++++++ k8s/platform/logging/grafana-values.yaml | 9 ++++--- k8s/security/sops-secrets/.gitkeep | 0 k8s/security/sops-secrets/00-README.md | 6 +++++ 5 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 k8s/argocd/apps/00-secrets.yaml create mode 100755 k8s/argocd/bootstrap/sops-cmp-generate.sh create mode 100644 k8s/security/sops-secrets/.gitkeep create mode 100644 k8s/security/sops-secrets/00-README.md diff --git a/k8s/argocd/apps/00-secrets.yaml b/k8s/argocd/apps/00-secrets.yaml new file mode 100644 index 0000000..a56d0e7 --- /dev/null +++ b/k8s/argocd/apps/00-secrets.yaml @@ -0,0 +1,25 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: sops-secrets + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io + annotations: + argocd.argoproj.io/sync-wave: "0" +spec: + project: homelab + revisionHistoryLimit: 3 + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + source: + repoURL: http://forgejo.riotpiao.com:3000/riotpiao.com/homelab.git + targetRevision: main + path: k8s/security/sops-secrets + directory: {} + destination: + server: https://kubernetes.default.svc diff --git a/k8s/argocd/bootstrap/sops-cmp-generate.sh b/k8s/argocd/bootstrap/sops-cmp-generate.sh new file mode 100755 index 0000000..61d6d6f --- /dev/null +++ b/k8s/argocd/bootstrap/sops-cmp-generate.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -e + +export SOPS_AGE_KEY_FILE=/sops-age/keys.txt + +# Decrypt grafana secrets once +GRAFANA_SECRETS=$(sops -d k8s/platform/logging/grafana-secrets.enc.yaml) + +# Stage 0: grafana +OIDC_SECRET=$(echo "$GRAFANA_SECRETS" | yq -r '.env.GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET') +ADMIN_PASSWORD=$(echo "$GRAFANA_SECRETS" | yq -r '.adminPassword') + +cat <