feat: credentials 認証モードとトークン自動リフレッシュ CronJob を追加 (v2.1.263-b)
トークンが定期的に失効・ローテーションしても再デプロイ不要にする。 - anthropic.authMode: credentials(新既定) ~/.claude/.credentials.json 全体(refreshToken 込み)を Secret に格納。 セッション Pod にはファイルとしてマウントし $HOME/.claude へコピー(書き込み可)、 セッション内 claude が refreshToken で自己更新 - anthropic.refresher CronJob(credentials 時・既定有効, files/token-refresher.py) Secret 内 refreshToken で OAuth トークンを更新し Secret を書き戻す。 専用 SA + resourceNames 限定 Role で該当 Secret の get/patch のみ。 tokenUrl/clientId は Claude Code CLI の非公式値(values 上書き可) - manager.py build_pod: credentials は envFrom を使わずファイルマウント + SEED_CREDENTIALS_FILE。apiKey/oauth は従来どおり envFrom - Secret に helm.sh/resource-policy: keep(credentials 時)で refresher の書込を保持 - fix: values.schema.json の $schema 行を削除(一部の Helm で "no schema with key or ref https://json-schema.org/draft-07/schema#" エラー) - helm lint / template(credentials/apiKey/oauth)検証済み
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# CHANGELOG 2.1.263-b — 手動リリース
|
||||
|
||||
v2.1.263-a の上に適用する手動リリース。
|
||||
|
||||
## 背景
|
||||
|
||||
`claude setup-token` / サブスクリプションのアクセストークンは定期的に失効・ローテーション
|
||||
される。単発トークン(`authMode: oauth`)注入では、失効のたびに `helm upgrade` が必要だった。
|
||||
|
||||
## 追加
|
||||
|
||||
- **`anthropic.authMode: credentials`(新既定)**
|
||||
- `~/.claude/.credentials.json` 全体(`accessToken` + `refreshToken` + `expiresAt`)を Secret に
|
||||
格納し、セッション Pod にファイルとしてマウント → 起動時に `$HOME/.claude/.credentials.json`
|
||||
へコピー(書き込み可能)。セッション内 `claude` が `refreshToken` で自己更新する。
|
||||
- `--set-file anthropic.credentialsJson=$HOME/.claude/.credentials.json` で注入。
|
||||
- `anthropic.existingSecretKeyCredentials`(既定 `.credentials.json`)で既存 Secret のキー名を指定可。
|
||||
- **refresher CronJob(`anthropic.refresher`、`credentials` モード時・既定有効)**
|
||||
- `files/token-refresher.py`(Python 標準ライブラリのみ)。Secret 内の `refreshToken` で
|
||||
OAuth トークンエンドポイントを叩き、新しい `accessToken` / `refreshToken` / `expiresAt` を
|
||||
Secret に書き戻す。既定 30 分ごと、残り寿命 1h 未満で更新。
|
||||
- 専用 ServiceAccount + Role(**セッション NS の認証情報 Secret 1 個への `get` / `patch` のみ**、
|
||||
`resourceNames` で限定)+ RoleBinding。
|
||||
- `tokenUrl` / `clientId` は Claude Code CLI の公開値(非公式)。仕様変更時は values で上書き。
|
||||
壊れてもセッション内 `claude` の自己更新は独立して機能する。`enabled: false` で無効化。
|
||||
- Secret に `helm.sh/resource-policy: keep`(`credentials` モード時)。`helm upgrade` で
|
||||
`--set-file` を付けない限り refresher が書いた値を Helm が上書きしない。
|
||||
|
||||
## 変更
|
||||
|
||||
- `anthropic.authMode` の既定を `apiKey` → **`credentials`**。既存の `apiKey` / `oauth` 運用は
|
||||
values で明示指定すれば従来どおり。
|
||||
- `templates/secret-anthropic.yaml` / `deployment.yaml` / `files/manager.py`(`build_pod` の
|
||||
認証情報注入分岐)/ `files/session-entrypoint.sh`(seed 処理)/ `values.schema.json` /
|
||||
`templates/NOTES.txt` / `examples/loadbalancer-oauth.values.yaml` を更新。
|
||||
|
||||
## 修正
|
||||
|
||||
- `values.schema.json` の `$schema` に `https://json-schema.org/draft-07/schema#` を指定して
|
||||
いたため、一部の Helm バージョンで
|
||||
`no schema with key or ref "https://json-schema.org/draft-07/schema#"` エラーが出ていた。
|
||||
`$schema` 行を削除(他チャートと同じ・Helm は draft-07 で検証)。
|
||||
|
||||
## バージョン
|
||||
|
||||
`version` = `2.1.263-b` / `appVersion` = `"2.1.263"`。
|
||||
Reference in New Issue
Block a user