# ========================================================================== # 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): # SMTP_HOST / SMTP_PORT / SMTP_SECURITY (none|starttls|tls) # SMTP_TLS ... "true" if starttls (フレームワーク互換の派生フラグ) # SMTP_SSL ... "true" if 暗黙TLS(tls) (同上) # SMTP_TLS_VERIFY ... 証明書検証 "true"/"false" # SMTP_USERNAME / SMTP_PASSWORD / SMTP_AUTH ("true" if username あり) # 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: false # # 代表的なプロバイダの設定値は examples/ および README.md の一覧表を参照。 mail: providers: {} # gmail: # enabled: true # # msmtprc キーを出力するか(既定 true)。IMAP だけ使いたい等で不要なら false # renderMsmtprc: 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 # tlsVerify: true # false で証明書検証を無効化(社内リレー等) # 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" # # このプロバイダだけ別ネームスペースへ配る場合(省略時は 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----- # ...