secrets: rotate + de-git Resend key; source from out-of-band Secret/resend-api

Resend send-scoped key was committed in plaintext in manifests/hub.yaml (ConfigMap)
and manifests/felhom.secret.yaml. Rotated to a new key and removed from git.

- hub: new RESEND_API_KEY env override (cmd/hub/main.go), mirrors REGISTRY_TOKEN;
  ConfigMap resend_api_key now an empty placeholder; Deployment injects from
  Secret/resend-api. Image 0.17.0.
- contact-mailer: secretKeyRef repointed contact-mailer-config -> resend-api.
- felhom.secret.yaml: contact-mailer-config Secret removed; healthchecks
  EMAIL_HOST_PASSWORD blanked (workload not deployed).
- documentation/runbooks/secrets.md: out-of-band secret model + create/rotate steps.

Secret/resend-api is created imperatively out-of-band and is NOT committed.
No secret value appears in this repo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-29 07:50:30 +02:00
parent 35c6632a64
commit feea06062a
6 changed files with 122 additions and 16 deletions
+7 -9
View File
@@ -17,19 +17,17 @@ stringData:
EMAIL_HOST: "smtp.resend.com"
EMAIL_PORT: "587"
EMAIL_HOST_USER: "resend"
EMAIL_HOST_PASSWORD: "re_XZZenCJs_LyJnU12jZWfEn9rK85Gc83DK"
# Resend API key — NOT committed. Healthchecks is not currently deployed; when it is, wire its
# EMAIL_HOST_PASSWORD to the out-of-band Secret/resend-api (key RESEND_API_KEY) via secretKeyRef
# instead of inlining a value here. See documentation/runbooks/secrets.md.
EMAIL_HOST_PASSWORD: ""
EMAIL_USE_TLS: "True"
EMAIL_USE_VERIFICATION: "False"
DEFAULT_FROM_EMAIL: "monitoring@felhom.eu"
---
apiVersion: v1
kind: Secret
metadata:
name: contact-mailer-config
namespace: felhom-system
type: Opaque
stringData:
RESEND_API_KEY: 're_XZZenCJs_LyJnU12jZWfEn9rK85Gc83DK'
# NOTE: the Resend API key (formerly Secret/contact-mailer-config RESEND_API_KEY) is no longer
# committed. It lives in the out-of-band Secret/resend-api (key RESEND_API_KEY), created imperatively
# per documentation/runbooks/secrets.md. Both the hub and contact-mailer now read from resend-api.
---
apiVersion: v1
kind: Secret