fix(argocd): wire SOPS CMP sidecar + grafana-admin secret on repo-server

This commit is contained in:
Story Crater Bot
2026-08-18 15:08:04 -07:00
parent cdf1cdeb18
commit 4753e8510e
3 changed files with 80 additions and 23 deletions
+8 -12
View File
@@ -11,23 +11,19 @@ data:
metadata:
name: sops-secrets-v1.0
spec:
version: v1.0
init:
command: [sh, -c]
args:
- |
# Install sops if not present
if ! command -v sops &> /dev/null; then
wget -qO- https://github.com/getsops/sops/releases/download/v3.9.3/sops-v3.9.3.linux.amd64 > /usr/local/bin/sops
chmod +x /usr/local/bin/sops
fi
generate:
command: [sh, -c]
args:
- |
# Find all .enc.yaml files and decrypt them
# Find all .enc.yaml files and decrypt them, separating multi-doc output.
# Skip files that aren't full K8s manifests (no top-level "kind:") — some
# .enc.yaml files hold raw Helm values, not standalone Secret objects.
find . -name '*.enc.yaml' -type f | while read -r file; do
sops -d "$file"
decrypted=$(sops -d "$file")
if echo "$decrypted" | grep -q '^kind:'; then
echo "---"
echo "$decrypted"
fi
done
discover:
find:
+56 -1
View File
@@ -45,7 +45,7 @@ repoServer:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
cpu: 1000m
memory: 1Gi
# Tolerations for control-plane
@@ -54,6 +54,61 @@ repoServer:
operator: Exists
effect: NoSchedule
# Fetch sops binary into shared emptyDir (runs as root; main containers can't write /usr/local/bin)
initContainers:
- name: install-sops
image: alpine:3.20
command: [sh, -c]
args:
- |
wget -qO /sops-bin/sops https://github.com/getsops/sops/releases/download/v3.9.3/sops-v3.9.3.linux.amd64
chmod +x /sops-bin/sops
volumeMounts:
- mountPath: /sops-bin
name: sops-bin
# SOPS CMP sidecar (decrypts *.enc.yaml via argocd-cmp-cm ConfigMap plugin)
extraContainers:
- name: sops-secrets-v1
command: [/var/run/argocd/argocd-cmp-server]
image: quay.io/argoproj/argocd:v3.4.5
env:
- name: SOPS_AGE_KEY_FILE
value: /sops-age/key.txt
- name: PATH
value: /sops-bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumeMounts:
- mountPath: /var/run/argocd
name: var-files
- mountPath: /home/argocd/cmp-server/plugins
name: plugins
- mountPath: /tmp
name: cmp-tmp
- mountPath: /home/argocd/cmp-server/config/plugin.yaml
subPath: sops-secrets-v1.0.yaml
name: argocd-cmp-cm
- mountPath: /sops-age
name: sops-age
readOnly: true
- mountPath: /sops-bin
name: sops-bin
readOnly: true
securityContext:
runAsNonRoot: true
runAsUser: 999
volumes:
- name: sops-bin
emptyDir: {}
- name: cmp-tmp
emptyDir: {}
- name: argocd-cmp-cm
configMap:
name: argocd-cmp-cm
- name: sops-age
secret:
secretName: sops-age
# Controller configuration
controller:
resources:
+16 -10
View File
@@ -1,18 +1,24 @@
adminPassword: ENC[AES256_GCM,data:qykgCu5Kv5IwzM1JFLXL7wgiAyI=,iv:bAph3Jd4fxuyglS7zrWIwzfUgK/wBwRrcEpKusgFhVk=,tag:ymwdnU/Dxnp54eGur2caoQ==,type:str]
env:
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: ENC[AES256_GCM,data:FwldsYfbOkRYGcycxn5BHZk/dOZsu23e3UCPo7dJKrcyr0n8dXQ9nH5XVSRHDpLOdRk7wbQwl+4Rgb8bGs21/w==,iv:JkNEfbsEIeE9TGouDA1xgjS4fX+v/sDrimaGpc4iaME=,tag:6Z3X29GKbgd2x6ghWA+CUw==,type:str]
apiVersion: ENC[AES256_GCM,data:TMY=,iv:ImbG3BggYpU11BV84Kwt1NrwoSZIrsoiZovqPM2ziWQ=,tag:xbld3DauQbVC7LrOyDgU+w==,type:str]
kind: ENC[AES256_GCM,data:PrsNgt4i,iv:6ICJnhTiMP0QFX2xQxqE59AkbtFXQ3UJwH/v/2KaQdw=,tag:wyWWV21lB+Oy23AoXDdFJQ==,type:str]
metadata:
name: ENC[AES256_GCM,data:yceBbeA92I2IMgwPww==,iv:Aw9oxB0x3eLODe/XVGKd5A4UdKoW1ChbRM7Un0kkwFQ=,tag:wTQfMQlO+ecU0epYGh32zA==,type:str]
namespace: ENC[AES256_GCM,data:MNtEckGs1Q==,iv:mf2ySxEaRrsPLgkwUUjmJuzklo74t8UTeCsUean2nx0=,tag:xvhxXljTD/uKCfwS6I4IZw==,type:str]
type: ENC[AES256_GCM,data:ykoXlXwe,iv:OMjn8JxX8g/jJSsIL911FX4autWEQDk1UGzfnnfKSjQ=,tag:8xhWjuq1jIhS9LxIGCa/PA==,type:str]
stringData:
admin-user: ENC[AES256_GCM,data:TJBiqjs=,iv:UwIdUTnI2soFYGjZz6xj8boacSMYHxTg0Bl1xFLllsU=,tag:zavbhAUpsjOChoGZ17cPRQ==,type:str]
admin-password: ENC[AES256_GCM,data:t+vGIzaybTrLzY001A==,iv:4V3wlpMMfakInQoqD6gxk+0A6lWCm3aPw31gpa0sKss=,tag:cbduSqiUnJFj0uOCjfKDSg==,type:str]
sops:
age:
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQdVNSMWZaVDZuN2RBKyt0
eWJHRm5vRlErZ1UweXA0N2xSNGdESE5leWo4CjQ2TTlONnpJK2VZWmxoamdhdHZN
ZGVMSU84SUZpVTUxREZlek9JcUxaTXcKLS0tIHlNaEpzZG1iaVpvU0E1UTQzbkVk
WnQxSHZ6S3cyZ2hUTlpTNXQyaVZzRU0KwU/0aRJ0D/UsqtFcrJLmuHpNELhTsfYS
4WL2TQ/yaUz261s7LEVQdpKUza8JjQXiKqqNcV2gaqEWurdx20ILzQ==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0ZlZiOWt3SFNiYzhNL252
Vlh1WkNHZXYxV1ZsNG90YXhydlpJTURmS1ZBCmJYOTBvKzUvS3cvRGZRcDlQRFRS
c3pZNjZnbUw1Tml6eVBETnBRQ2xNK3MKLS0tIHU5UFdBSk1TUnBjdlZaODBNRkVy
azBhbjN6a1BRNVh0cUtMU24zK29jMlEK4Y8+P1L/O80xG+qtdF1I8fvfURX/IvtF
dFIn1EF7YRqMy4KWKx6QSewjo8Vx7JuBDZtRDPCGNJKIKJU3R9NK3w==
-----END AGE ENCRYPTED FILE-----
recipient: age1smu533f803gmd0jq60s2zaj9zlznajy0ca6rtewd4r37mr2hs3uqsrldfh
lastmodified: "2026-07-15T23:02:08Z"
mac: ENC[AES256_GCM,data:LeN0mm7i7fsDpwtGQ6La7/UzhHbKfG1f/K30wW7fZJ1XbqPZGh7cdq07kMqrodlR6oWvrq7r4gbyuhcH9ptlxKgN4NuD3OoUjn6/CiPEF+wzgKMMgg2JdqFLsZNxVvGL/Ig3Y5hP5iag91QdtQxXaJmaV6Q9+FF6maYofsOU2rA=,iv:Eik9jEhdu+7qJv1oN7e1Vydnv7rh0pnRpbcBPDhh8e8=,tag:Mkry9bpTsmsf9Xs1jW7b1g==,type:str]
lastmodified: "2026-08-11T21:40:58Z"
mac: ENC[AES256_GCM,data:761EqFteOI+BuznsTV8+wIOoOJAnCYvIPYy9gpdHSkDf+QbW6k3HUCjvPN/sNXfAEtbjIf28W6iW+zhljAbe3lpOXrY2Fy4O9i/e1ltXvsBUND6FWB3TkdSaweycRGoAPTsR9vb74INqecR4O0LITcGHL+Yl3TLPzwSJhxiqpiU=,iv:ug2qqUEhlXharDqegsiPSrlmqV7z0qQBv8Ha96qH+Lo=,tag:JY+xjJgX7o6o83tSvng7eQ==,type:str]
unencrypted_suffix: _unencrypted
version: 3.13.2