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:
@@ -0,0 +1,56 @@
|
||||
# =========================================================================
|
||||
# API 認証情報 / 汎用 Secret の設定例
|
||||
# -------------------------------------------------------------------------
|
||||
# helm upgrade --install secrets ./secret-manager -n secret-manager \
|
||||
# -f examples/api-and-generic.values.yaml \
|
||||
# --set api.credentials.stripe.data.STRIPE_SECRET_KEY="$STRIPE_SECRET_KEY"
|
||||
# =========================================================================
|
||||
|
||||
distribution:
|
||||
namespaces:
|
||||
- default
|
||||
- web
|
||||
includeReleaseNamespace: true
|
||||
|
||||
api:
|
||||
credentials:
|
||||
|
||||
stripe:
|
||||
enabled: true
|
||||
data:
|
||||
STRIPE_SECRET_KEY: "REPLACE_VIA_--set"
|
||||
STRIPE_WEBHOOK_SECRET: "REPLACE_VIA_--set"
|
||||
|
||||
openai:
|
||||
enabled: true
|
||||
data:
|
||||
OPENAI_API_KEY: "REPLACE_VIA_--set"
|
||||
OPENAI_ORG_ID: "org-xxxxxxxx"
|
||||
# このキーだけ AI ワークロード用ネームスペースに限定配布
|
||||
namespacesOverride:
|
||||
- ml
|
||||
- web
|
||||
|
||||
slack:
|
||||
enabled: true
|
||||
data:
|
||||
SLACK_BOT_TOKEN: "REPLACE_VIA_--set"
|
||||
SLACK_SIGNING_SECRET: "REPLACE_VIA_--set"
|
||||
|
||||
generic:
|
||||
secrets:
|
||||
|
||||
# プライベートコンテナレジストリの pull secret
|
||||
private-registry:
|
||||
enabled: true
|
||||
type: kubernetes.io/dockerconfigjson
|
||||
data:
|
||||
".dockerconfigjson": "REPLACE_VIA_--set-file"
|
||||
|
||||
# Basic 認証(Ingress の auth-secret などで参照)
|
||||
basic-auth:
|
||||
enabled: false
|
||||
type: kubernetes.io/basic-auth
|
||||
data:
|
||||
username: "admin"
|
||||
password: "REPLACE_VIA_--set"
|
||||
@@ -0,0 +1,113 @@
|
||||
# =========================================================================
|
||||
# 代表的な外部メールプロバイダの設定例
|
||||
# -------------------------------------------------------------------------
|
||||
# 使い方:
|
||||
# helm upgrade --install secrets ./secret-manager \
|
||||
# -n secret-manager --create-namespace \
|
||||
# -f examples/mail-providers.values.yaml \
|
||||
# --set mail.providers.gmail.smtp.password="$GMAIL_APP_PASSWORD"
|
||||
#
|
||||
# パスワード等の実値はこのファイルに書かず、--set / SOPS 経由で注入すること。
|
||||
# =========================================================================
|
||||
|
||||
distribution:
|
||||
namespaces:
|
||||
- default
|
||||
- web
|
||||
- batch
|
||||
includeReleaseNamespace: true
|
||||
|
||||
common:
|
||||
namePrefix: "cred-"
|
||||
immutable: false
|
||||
|
||||
mail:
|
||||
providers:
|
||||
|
||||
# ---- Gmail / Google Workspace -----------------------------------------
|
||||
# 事前に「アプリ パスワード」を発行しておくこと(2段階認証必須)。
|
||||
gmail:
|
||||
enabled: true
|
||||
smtp:
|
||||
host: "smtp.gmail.com"
|
||||
port: 587
|
||||
security: "starttls"
|
||||
username: "no-reply@your-domain.com"
|
||||
password: "REPLACE_VIA_--set"
|
||||
from: "no-reply@your-domain.com"
|
||||
fromName: "Your Service"
|
||||
authMethod: "login"
|
||||
imap:
|
||||
host: "imap.gmail.com"
|
||||
port: 993
|
||||
security: "tls"
|
||||
renderMsmtprc: true
|
||||
|
||||
# ---- Microsoft 365 / Exchange Online ---------------------------------
|
||||
m365:
|
||||
enabled: true
|
||||
smtp:
|
||||
host: "smtp.office365.com"
|
||||
port: 587
|
||||
security: "starttls"
|
||||
username: "no-reply@your-domain.com"
|
||||
password: "REPLACE_VIA_--set"
|
||||
from: "no-reply@your-domain.com"
|
||||
authMethod: "login"
|
||||
imap:
|
||||
host: "outlook.office365.com"
|
||||
port: 993
|
||||
security: "tls"
|
||||
renderMsmtprc: true
|
||||
|
||||
# ---- SendGrid -------------------------------------------------------
|
||||
# username は固定文字列 "apikey"、password が API キー本体。
|
||||
sendgrid:
|
||||
enabled: true
|
||||
smtp:
|
||||
host: "smtp.sendgrid.net"
|
||||
port: 587
|
||||
security: "starttls"
|
||||
username: "apikey"
|
||||
password: "REPLACE_VIA_--set"
|
||||
from: "no-reply@your-domain.com"
|
||||
fromName: "Your Service"
|
||||
authMethod: "plain"
|
||||
renderMsmtprc: true
|
||||
|
||||
# ---- Amazon SES ---------------------------------------------------
|
||||
# SES SMTP 認証情報(IAM のアクセスキーとは別物)を使う。リージョンをホスト名に反映。
|
||||
ses:
|
||||
enabled: true
|
||||
smtp:
|
||||
host: "email-smtp.ap-northeast-1.amazonaws.com"
|
||||
port: 587
|
||||
security: "starttls"
|
||||
username: "REPLACE_VIA_--set"
|
||||
password: "REPLACE_VIA_--set"
|
||||
from: "no-reply@your-domain.com"
|
||||
authMethod: "login"
|
||||
renderMsmtprc: true
|
||||
|
||||
# ---- Mailgun -----------------------------------------------------
|
||||
mailgun:
|
||||
enabled: true
|
||||
smtp:
|
||||
host: "smtp.mailgun.org"
|
||||
port: 587
|
||||
security: "starttls"
|
||||
username: "postmaster@mg.your-domain.com"
|
||||
password: "REPLACE_VIA_--set"
|
||||
from: "no-reply@your-domain.com"
|
||||
authMethod: "plain"
|
||||
renderMsmtprc: true
|
||||
|
||||
# ---- 汎用 / 社内 SMTP リレー(認証なし・TLSなし)--------------------
|
||||
internal-relay:
|
||||
enabled: false
|
||||
smtp:
|
||||
host: "mail-relay.svc.cluster.local"
|
||||
port: 25
|
||||
security: "none"
|
||||
from: "no-reply@your-domain.com"
|
||||
renderMsmtprc: true
|
||||
@@ -0,0 +1,35 @@
|
||||
# =========================================================================
|
||||
# kubernetes-reflector を使った自動同期の設定例
|
||||
# -------------------------------------------------------------------------
|
||||
# 前提: クラスターに emberstack/kubernetes-reflector が導入済みであること。
|
||||
# helm repo add emberstack https://emberstack.github.io/helm-charts
|
||||
# helm upgrade --install reflector emberstack/reflector -n kube-system
|
||||
#
|
||||
# この方式では Secret はリリース先ネームスペースにのみ作成され、
|
||||
# namespaceRegex に一致する全ネームスペースへ reflector が複製・追従する。
|
||||
# 新しいネームスペースが増えても values を書き換える必要がない。
|
||||
# =========================================================================
|
||||
|
||||
distribution:
|
||||
# reflector 使用時 namespaces は無視される(ソースはリリース先のみ)
|
||||
namespaces: []
|
||||
includeReleaseNamespace: true
|
||||
reflector:
|
||||
enabled: true
|
||||
# 本番系ネームスペースにのみ配布する例
|
||||
namespaceRegex: "prod-.*|shared-services"
|
||||
reloader:
|
||||
enabled: true
|
||||
|
||||
mail:
|
||||
providers:
|
||||
gmail:
|
||||
enabled: true
|
||||
smtp:
|
||||
host: "smtp.gmail.com"
|
||||
port: 587
|
||||
security: "starttls"
|
||||
username: "no-reply@your-domain.com"
|
||||
password: "REPLACE_VIA_--set"
|
||||
from: "no-reply@your-domain.com"
|
||||
renderMsmtprc: true
|
||||
Reference in New Issue
Block a user