helm --set-file ではなく UI から SSH 秘密鍵 + known_hosts / HTTPS トークンを登録可能に。 - git.guiIdentities.enabled(既定 true)。UI に「認証情報」カード(一覧/追加/削除) - GET/POST/DELETE /api/identities。登録分はセッション NS の Secret (ラベル identity-source=gui / identity-type)として保存。Helm 管理分と同一覧に統合 - manager.py: resolve_identity / list_identities / create_gui_identity / delete_gui_identity。 build_pod と create_session は Helm 管理 + GUI 登録の両方を解決。 /api/config の identities を {name,type,source} 配列に変更 - rbac.yaml: guiIdentities.enabled 時のみ manager Role に同 NS secrets の CRUD を付与 - 秘密鍵はリクエストボディで manager へ届くため README に経路 TLS 必須を明記 - helm lint / template 検証済み
gateway(nginx) + manager(python 標準ライブラリ) + セッションごとの使い捨て Pod + reaper CronJob の構成。ブラウザ(PC/スマホ)からアクセスし、セッション単位で 独立した Alpine コンテナに Git リポジトリ(GitHub/Gitea など)をチェックアウトして 編集・検証・プッシュする。無操作が続いたセッションは Pod ごと自動破棄。 - セキュリティ: セッション NS 分離 / restricted PodSecurity / RBAC はセッション NS の pods,services のみの Role / セッション Pod は SA トークン非マウント・非 root・ readOnlyRootFilesystem・drop ALL caps・seccomp / NetworkPolicy で egress を DNS+HTTPS+SSH に限定 / Git ホスト allow-list / ResourceQuota+LimitRange - ライフサイクル: idleTimeout(Pod 内ウォッチドッグ + manager 回収) / maxLifetime (activeDeadlineSeconds) / maxSessions / 予備の孤児掃除 CronJob - 認証: token(既定) / basic / forward(外部SSO) / none。WebSocket は Cookie トークン - Claude 認証: ANTHROPIC_API_KEY または CLAUDE_CODE_OAUTH_TOKEN - CI: helm-release.yaml(未リリース版のみ tag+release+publish) / image-update-and-release.yaml(週次 npm 追従) / session-image.yaml(multi-arch build) - files/ 実体を .Files.Get で ConfigMap 化。helm lint / template 検証済み