Files
secret-manager/values.yaml
T
claude f374cd2e49
Helm Chart Release / release-chart (push) Successful in 6s
Secrets 一元管理チャート secret-manager v0.1.0 を実装
クラスター横断で使う認証情報を1チャートで管理し、複数ネームスペースへ
同一 Secret として配布する仕組みを実装。

- distribution: namespaces への複製 / kubernetes-reflector 自動同期 /
  stakater-Reloader 連携を選択可能
- common: namePrefix・共通ラベル/アノテーション・immutable
- mail.providers: SMTP/IMAP/POP3 のサーバ情報 + パスワードを一元管理。
  source 可能な smtp.env と任意の msmtprc スニペットを Secret に同梱
- api.credentials: 任意のキー/値集合を Opaque Secret 化(envFrom 向け)
- generic.secrets: 任意 type(dockerconfigjson / tls / basic-auth 等)
- values.schema.json による厳格バリデーション
- examples/(Gmail・M365・SendGrid・SES・Mailgun・reflector)
- .gitea/workflows/helm-release.yaml で Package Registry へ自動発行
- README.md にセキュリティモデル・values リファレンス・参照方法を記載
- 平文資格情報の混入防止に .gitignore を整備
2026-08-31 09:41:41 +09:00

149 lines
6.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ==========================================================================
# secret-manager
# --------------------------------------------------------------------------
# クラスター内の複数プロジェクトで横断的に使う「認証情報」を、この1チャートで
# 一元管理する。ここを更新して `helm upgrade` するだけで、配布先の全ネーム
# スペースの Secret がまとめて更新される。
#
# セキュリティ上の注意(必読):
# - この values.yaml には平文の資格情報を "書かない"。Git にコミットしない。
# - 実際の値は次のいずれかで注入する:
# 1) CI(Gitea Actions)から `--set` / `--set-file` で Gitea Secrets を注入
# 2) SOPS で暗号化した values ファイル(helm-secrets プラグイン)
# 3) git 管理外の `secrets.values.yaml` を `-f` で渡す(.gitignore 済み)
# - 詳細は README.md「セキュリティモデル」を参照。
# ==========================================================================
# --------------------------------------------------------------------------
# distribution: 生成した Secret を「どこへ」配るか
# --------------------------------------------------------------------------
distribution:
# 同一 Secret を複製配置するネームスペースのリスト。
# ここに挙げるネームスペースは事前に存在している必要がある。
# リストから外して `helm upgrade` すると、そのネームスペースのコピーは削除される。
namespaces:
- default
# true の場合、リリース先ネームスペース (.Release.Namespace) も配布対象に自動追加する。
includeReleaseNamespace: true
# emberstack/kubernetes-reflector を使った自動同期(任意 / クラスターにコントローラーが必要)
# 有効化すると Secret はリリース先ネームスペースにのみ作成し、reflector アノテーションを
# 付与する。namespaceRegex に一致する全ネームスペースへコントローラーが複製・追従する。
# namespaces の列挙より柔軟だが、外部コンポーネントへの依存が増える。
reflector:
enabled: false
# 同期先ネームスペースを絞る正規表現(例: "team-.*" / "prod|staging")
namespaceRegex: ".*"
# stakater/Reloader 連携(任意 / クラスターにコントローラーが必要)
# 有効化すると各 Secret に `reloader.stakater.com/match: "true"` を付与する。
# 参照側の Deployment/StatefulSet に `reloader.stakater.com/auto: "true"` があれば、
# Secret 更新時に自動でローリング再起動される。
reloader:
enabled: false
# --------------------------------------------------------------------------
# common: 生成する全 Secret に共通の設定
# --------------------------------------------------------------------------
common:
# 生成される Secret 名のプレフィックス。エントリキーの前に付く。
# 例: namePrefix="cred-" + mail プロバイダ "gmail" -> Secret 名 "cred-gmail"
namePrefix: "cred-"
# 全 Secret に付与する追加ラベル
labels: {}
# 全 Secret に付与する追加アノテーション
annotations: {}
# Secret を immutable にする(kind: Secret の immutable: true)。
# 誤編集を防ぎ apiserver 負荷を下げるが、値を変えるには一度 delete が必要。
immutable: false
# --------------------------------------------------------------------------
# mail: 外部メールの接続情報(パスワード + サーバ情報)
# --------------------------------------------------------------------------
# providers.<キー> ごとに 1 つの Secret を生成する。Secret には以下が入る:
# 個別キー:
# SMTP_HOST / SMTP_PORT / SMTP_SECURITY / SMTP_USERNAME / SMTP_PASSWORD
# SMTP_FROM / SMTP_FROM_NAME / SMTP_REPLY_TO / SMTP_AUTH_METHOD
# IMAP_HOST / IMAP_PORT / IMAP_SECURITY / IMAP_USERNAME / IMAP_PASSWORD (imap 定義時)
# POP3_HOST / POP3_PORT / POP3_SECURITY / POP3_USERNAME / POP3_PASSWORD (pop3 定義時)
# まとめ:
# smtp.env ... `export KEY=VALUE` 形式。コンテナ内で `source` して利用可能
# msmtprc ... msmtp / PHP sendmail 用設定(renderMsmtprc: true のとき)
#
# 代表的なプロバイダの設定値は examples/ および README.md の一覧表を参照。
mail:
providers: {}
# gmail:
# enabled: true
# smtp:
# host: "smtp.gmail.com"
# port: 587
# security: "starttls" # none | starttls | tls
# username: "no-reply@example.com"
# password: "APP_PASSWORD" # ← 実値は --set / SOPS 経由で注入する
# from: "no-reply@example.com"
# fromName: "Example"
# replyTo: ""
# authMethod: "plain" # plain | login | cram-md5
# imap:
# host: "imap.gmail.com"
# port: 993
# security: "tls" # none | starttls | tls
# username: "" # 空なら smtp.username を流用
# password: "" # 空なら smtp.password を流用
# # pop3:
# # host: "pop.gmail.com"
# # port: 995
# # security: "tls"
# renderMsmtprc: true
# # このプロバイダだけ別ネームスペースへ配る場合(省略時は distribution 準拠)
# namespacesOverride: []
# # このプロバイダ Secret だけに付ける追加アノテーション
# annotations: {}
# --------------------------------------------------------------------------
# api: API 認証情報(任意のキー/値の集合)
# --------------------------------------------------------------------------
# credentials.<キー> ごとに 1 つの Opaque Secret を生成する。
# data 配下のキーがそのまま Secret のキーになる(`envFrom` でまとめて注入しやすい)。
api:
credentials: {}
# stripe:
# enabled: true
# data:
# STRIPE_SECRET_KEY: "sk_live_xxx"
# STRIPE_WEBHOOK_SECRET: "whsec_xxx"
# namespacesOverride: []
# annotations: {}
# openai:
# enabled: true
# data:
# OPENAI_API_KEY: "sk-xxx"
# --------------------------------------------------------------------------
# generic: 汎用 Secret(type を指定したい場合など)
# --------------------------------------------------------------------------
# 上記カテゴリに当てはまらない資格情報。任意の Secret type を指定できる。
generic:
secrets: {}
# private-registry:
# enabled: true
# type: kubernetes.io/dockerconfigjson
# data:
# .dockerconfigjson: '{"auths":{"registry.example.com":{"auth":"BASE64"}}}'
# namespacesOverride: []
# internal-tls:
# enabled: true
# type: kubernetes.io/tls
# data:
# tls.crt: |
# -----BEGIN CERTIFICATE-----
# ...
# tls.key: |
# -----BEGIN PRIVATE KEY-----
# ...