Files
secret-manager/CLAUDE.md
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

4.7 KiB
Raw Blame History

CLAUDE.md — secret-manager Helm Chart

リポジトリ概要

クラスター内の複数プロジェクトで横断的に使う「認証情報」を 1 つの Helm チャートで 一元管理する。外部メールの SMTP/IMAP 設定・API キー・汎用資格情報を定義し、 指定した複数ネームスペースへ同一の Kubernetes Secret として配布する。

設計目標: 認証情報の変更が発生したら、このチャートの values を更新して helm upgrade するだけで、クラスター上の全プロジェクトに反映される。

  • Gitea リポジトリ: ssh://git@192.168.9.65/helmchart/secret-manager
  • Helm リポジトリ: https://git.cafepieters.com/api/packages/helmchart/helm

作業ルール(必読)

  1. 機能を追加・変更したら、必ず README.md を更新してから作業完了とする。
    • 追加・変更した機能・パラメータ・挙動を README.md に反映する。
  2. 変更は必ず Git Commit / Push すること。
    • 作業単位ごとにコミットし、origin(main) へ push するまでが作業完了。
  3. コミットメッセージに Claude クレジット(Co-Authored-By 等)を追記することは禁止。
    • user.name = Claude でコミットされるため、ユーザー名で判別可能。
  4. git pull で取り込まれた変更は常に尊重する。revert して push することは禁止。 不適切に見える場合はユーザーに改善提案を提示し、承認を得てから対応する。

バージョン方針

  • このチャートには「主アプリ」となる外部プロダクトが存在しない(チャート自身がアプリ)。 そのため Chart.yaml の version / appVersion は チャート独自に SemVer で採番する。 (他チャートの「主アプリのバージョンと同一」ルールは適用対象外)
  • 破壊的変更 = メジャー、機能追加 = マイナー、修正 = パッチ。
  • 改修作業で臨時の手動リリースが必要な場合は末尾にアルファベットを付与する (例: 0.2.0 → 0.2.0-a)。

リリースフロー

  • main への push で .gitea/workflows/helm-release.yaml が発火し、 helm lint → helm package → Gitea Package Registry へ発行する。
  • 正式リリース時は Chart.yaml のバージョンを上げ、Git タグと Gitea リリースも作成する。

必要な Gitea Secrets

シークレット名 用途
GITEA_TOKEN Gitea API(リリース作成・タグ操作)
REGISTRY_USER Gitea Package Registry ユーザー名
REGISTRY_TOKEN Gitea Package Registry トークン

Git Configuration (local)

項目 値
user.name Claude
user.email claude@cafepieters.com
core.sshCommand ssh -i P:/Claude/.ssh/id_claude -o StrictHostKeyChecking=no

実行環境

  • Helm はローカル未インストール。テンプレートのレンダリング確認は CI(helm lint)に依存する。 ローカルでは YAML 構文・Go テンプレート構文を目視で慎重に確認すること。
  • OS: Windows 11 Pro

アーキテクチャ要点

  • templates/_helpers.tpl の secret-manager.secret が中核。 1 論理 Secret を受け取り、実効ネームスペースごとに複製した Secret マニフェストを出力する。
  • 配布先の決定順:
    1. エントリの namespacesOverride(非空ならそれを使用)
    2. distribution.reflector.enabled が true → リリース先ネームスペースのみに作成し reflector アノテーション付与
    3. それ以外 → distribution.namespaces (+ includeReleaseNamespace) を重複排除した一覧
  • Helm はリリースマニフェストに含まれる別ネームスペースの Secret も追跡するため、 namespaces からネームスペースを外して helm upgrade するとそのコピーは削除される。
  • 資格情報は stringData で書き込む(テンプレート側で全値を文字列へ強制)。

チャート改修履歴

初版設計・実装(2026-08-31, v0.1.0)

空リポジトリから初期実装。distribution(namespaces 複製 / reflector / reloader)、 common(namePrefix・labels・annotations・immutable)、mail.providers(SMTP/IMAP/POP3 + smtp.env + 任意の msmtprc)、api.credentials、generic.secrets(任意 type)を実装。 values.schema.json、examples/、.gitea/workflows/helm-release.yaml を追加。

対象ファイル: Chart.yaml, values.yaml, values.schema.json, templates/*, examples/*, .gitea/workflows/helm-release.yaml, README.md, .gitignore, CLAUDE.md