トークンが定期的に失効・ローテーションしても再デプロイ不要にする。 - 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)検証済み
72 lines
3.7 KiB
Plaintext
72 lines
3.7 KiB
Plaintext
claude-code ({{ .Chart.Version }}) をデプロイしました。
|
||
|
||
制御プレーン : {{ include "claude-code.fullname" . }} (namespace: {{ .Release.Namespace }})
|
||
セッション NS : {{ include "claude-code.sessionsNamespace" . }}
|
||
セッション像 : {{ .Values.image.session.registry }}/{{ .Values.image.session.repository }}:{{ .Values.image.session.tag }}
|
||
認証モード : {{ .Values.auth.mode }}
|
||
アイドル破棄 : {{ .Values.session.idleTimeoutSeconds }}s / 最大寿命 {{ .Values.session.maxLifetimeSeconds }}s / 同時 {{ .Values.session.maxSessions }}
|
||
|
||
アクセス方法:
|
||
{{- if .Values.ingress.enabled }}
|
||
{{- range .Values.ingress.hosts }}
|
||
https://{{ .host }}/
|
||
{{- end }}
|
||
{{- end }}
|
||
{{- if eq .Values.service.type "LoadBalancer" }}
|
||
ロードバランサーの IP を確認してブラウザで開いてください:
|
||
kubectl -n {{ .Release.Namespace }} get svc {{ include "claude-code.fullname" . }} -w
|
||
→ http://<EXTERNAL-IP>:{{ .Values.service.port }}/
|
||
{{- with .Values.service.loadBalancerSourceRanges }}
|
||
(接続元は {{ join ", " . }} に制限されています)
|
||
{{- end }}
|
||
{{- else if not .Values.ingress.enabled }}
|
||
kubectl -n {{ .Release.Namespace }} port-forward svc/{{ include "claude-code.fullname" . }} 8080:{{ .Values.service.port }}
|
||
→ http://localhost:8080/
|
||
{{- end }}
|
||
|
||
{{- if eq .Values.auth.mode "token" }}
|
||
|
||
アクセストークンの取得:
|
||
kubectl -n {{ .Release.Namespace }} get secret {{ include "claude-code.authSecretName" . }} \
|
||
-o jsonpath='{.data.{{ .Values.auth.token.existingSecretKey | default "token" }}}' | base64 -d ; echo
|
||
|
||
UI の「アクセストークン」欄に貼り付けるか、`?token=<TOKEN>` を付けて開いてください。
|
||
{{- else if eq .Values.auth.mode "basic" }}
|
||
|
||
Basic 認証のユーザーでログインしてください。
|
||
{{- else if eq .Values.auth.mode "forward" }}
|
||
|
||
外部認証プロキシ({{ .Values.auth.forward.url }})経由でログインしてください。
|
||
{{- else }}
|
||
|
||
⚠ auth.mode=none — 認証なしで公開されています。信頼済みネットワーク限定で使用してください。
|
||
{{- end }}
|
||
|
||
認証方式 : anthropic.authMode = {{ .Values.anthropic.authMode }}
|
||
{{- if and (eq .Values.anthropic.authMode "credentials") .Values.anthropic.refresher.enabled }}
|
||
トークン更新: refresher CronJob({{ .Values.anthropic.refresher.schedule }})が Secret を自動更新
|
||
{{- end }}
|
||
{{- if and (not .Values.anthropic.existingSecret) (not .Values.anthropic.apiKey) (not .Values.anthropic.oauthToken) (not .Values.anthropic.credentialsJson) }}
|
||
|
||
⚠ Claude Code の認証情報が未設定です(anthropic.apiKey / oauthToken / credentialsJson / existingSecret のいずれも空)。
|
||
セッション内の `claude` は認証に失敗します。credentials モードなら:
|
||
--set-file anthropic.credentialsJson=$HOME/.claude/.credentials.json
|
||
で再適用してください(helm upgrade)。
|
||
{{- end }}
|
||
{{- if not .Values.git.identities }}
|
||
|
||
⚠ git.identities が未設定です。公開リポジトリの clone のみ可能です。
|
||
GitHub / Gitea へ push するには values に SSH 鍵か HTTPS トークンを登録してください(README 参照)。
|
||
{{- end }}
|
||
|
||
使い方:
|
||
1. UI で「リポジトリ URL」「ブランチ」「認証 identity」を指定してセッション作成
|
||
2. 一覧の「開く」でブラウザ内ターミナル(Claude Code)に接続
|
||
3. セッション内で `claude-verify` / `claude-push` が利用可能
|
||
4. 無操作 {{ .Values.session.idleTimeoutSeconds }}s でセッション(Pod)は自動破棄されます
|
||
|
||
許可された Git ホスト: {{ join ", " .Values.git.allowedHosts }}
|
||
{{- if .Values.git.allowArbitraryRepos }}
|
||
(allowArbitraryRepos=true のため任意ホストを許可)
|
||
{{- end }}
|