Secrets 一元管理チャート secret-manager v0.1.0 を実装
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:
2026-08-31 09:41:41 +09:00
parent 507fd48d11
commit f374cd2e49
16 changed files with 1329 additions and 1 deletions
+47
View File
@@ -0,0 +1,47 @@
secret-manager ({{ .Chart.Version }}) をデプロイしました。
{{- if .Values.distribution.reflector.enabled }}
配布方式 : kubernetes-reflector による自動同期
ソース : ネームスペース "{{ .Release.Namespace }}"
同期先 : /{{ .Values.distribution.reflector.namespaceRegex }}/ に一致する全ネームスペース
{{- else }}
{{- $nsList := splitList "," (include "secret-manager.distributionNamespaces" .) }}
配布方式 : Helm による複製({{ len $nsList }} ネームスペース)
{{- range $nsList }}
- {{ . }}
{{- end }}
{{- end }}
{{- if .Values.distribution.reloader.enabled }}
Reloader : 有効(参照側 Deployment に reloader.stakater.com/auto: "true" を付けると自動再起動)
{{- end }}
生成された Secret(プレフィックス "{{ .Values.common.namePrefix }}"):
{{- $prefix := .Values.common.namePrefix }}
{{- range $name, $p := .Values.mail.providers }}{{- if $p.enabled }}
[mail] {{ $prefix }}{{ $name }} キー: SMTP_HOST/PORT/USERNAME/PASSWORD/FROM ほか, smtp.env{{ if $p.renderMsmtprc }}, msmtprc{{ end }}
{{- end }}{{- end }}
{{- range $name, $c := .Values.api.credentials }}{{- if $c.enabled }}
[api] {{ $prefix }}{{ $name }} キー: {{ keys $c.data | sortAlpha | join ", " }}
{{- end }}{{- end }}
{{- range $name, $g := .Values.generic.secrets }}{{- if $g.enabled }}
[gen] {{ $prefix }}{{ $name }} type: {{ $g.type | default "Opaque" }}
{{- end }}{{- end }}
参照側の Deployment からの使い方:
# まとめて環境変数に注入
envFrom:
- secretRef:
name: {{ .Values.common.namePrefix }}<エントリ名>
# 個別キーを参照
env:
- name: SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.common.namePrefix }}gmail
key: SMTP_PASSWORD
値を変更したいときは values を更新して `helm upgrade` するだけで全ネームスペースに反映されます。