Secrets 一元管理チャート secret-manager v0.1.0 を実装
Helm Chart Release / release-chart (push) Successful in 6s
Helm Chart Release / release-chart (push) Successful in 6s
クラスター横断で使う認証情報を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 を整備
This commit is contained in:
+148
@@ -0,0 +1,148 @@
|
||||
# ==========================================================================
|
||||
# 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-----
|
||||
# ...
|
||||
Reference in New Issue
Block a user