secret.yaml 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. # App secrets (task 46). PLACEHOLDERS ONLY — never commit real values.
  2. #
  3. # Production rule: this file's keys are replaced by the secret manager
  4. # (external-secrets / sealed-secrets / vault agent). The manifests only ever
  5. # reference keys via `secretKeyRef`; `scripts/check_manifests.py` fails the
  6. # build if a value still looks like a placeholder reached a release, and
  7. # fails if any secret-looking value appears in a ConfigMap, Deployment, or
  8. # Job field.
  9. #
  10. # To provision: `kubectl create secret generic d-oauth-secrets -n d-oauth
  11. # --from-literal=database-url='postgres://...' ...` (or the external-secret
  12. # equivalent), then delete this placeholder file from the applied set.
  13. apiVersion: v1
  14. kind: Secret
  15. metadata:
  16. name: d-oauth-secrets
  17. namespace: d-oauth
  18. labels:
  19. app.kubernetes.io/name: d-oauth-server
  20. app.kubernetes.io/part-of: d-oauth
  21. type: Opaque
  22. stringData:
  23. # Full Postgres URL. Production requires `sslmode=verify-full`.
  24. database-url: "REPLACE_ME__postgres-url-with-sslmode-verify-full"
  25. # Redis single-topology URL (no password embedded for cluster use; prefer
  26. # the password-file mechanism when auth is enabled).
  27. redis-url: "REPLACE_ME__redis-url"
  28. # 256-bit server-side pepper for opaque-token hashing. Losing it invalidates
  29. # every live token; rotate per docs/OPERATIONS.md.
  30. token-pepper: "REPLACE_ME__32-bytes-of-random"
  31. # 256-bit key encrypting TOTP secrets at rest.
  32. totp-encryption-key: "REPLACE_ME__32-bytes-of-random"