feat: git identity を Web UI から登録・削除できるようにする (v2.1.263-f)
Helm Chart Release / release-chart (push) Successful in 7s
Build Session Image / build-push (push) Successful in 2m5s

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 検証済み
This commit is contained in:
2026-09-09 12:47:50 +09:00
parent 6514747b4e
commit c31dd5875c
10 changed files with 345 additions and 15 deletions
+36
View File
@@ -0,0 +1,36 @@
# CHANGELOG 2.1.263-f — 手動リリース
## 追加: GUI からの git identity 登録
Web UI の **「認証情報(identity)」カード** から、`helm` を触らずに SSH 秘密鍵 +
`known_hosts` / HTTPS トークンを登録・削除できるようにした。
- `git.guiIdentities.enabled`(既定 `true`)
- API:
- `GET /api/identities` … Helm 管理 + GUI 登録の identity 一覧(`{name, type, source}`)
- `POST /api/identities` … 登録(`{name, type, privateKey, knownHosts}` または
`{name, type, username, token}`)。`ssh` は `known_hosts` 必須、秘密鍵の簡易検証あり。
Helm 管理と同名は拒否。既存 GUI 分は置き換え。
- `DELETE /api/identities/<name>` … 削除(`identity-source=gui` のみ。Helm 管理は不可)
- 保存先: セッション NS の Secret。ラベル
`claude-code.cafepieters.com/identity-source: gui|helm` /
`claude-code.cafepieters.com/identity-type: ssh|https-token` で区別。
- `build_pod` / セッション作成のバリデーションは Helm 管理と GUI 登録の両方を解決する
(`resolve_identity` / `list_identities`)。
- `/api/config` の `identities` は文字列配列 → `{name,type,source}` 配列に変更。UI も追従。
## RBAC
`git.guiIdentities.enabled: true` のとき、manager Role にセッション NS の
`secrets` `["get","list","create","update","patch","delete"]` を追加(`false` なら付かない)。
同 NS には Claude 認証情報 Secret も存在するため、不要なら無効化を推奨。
## セキュリティ注意
秘密鍵はブラウザ → gateway → manager をリクエストボディで通る。経路の TLS
(Ingress の `tls` / LB の TLS 終端)を有効にすること。README「git — 接続先と認証
アイデンティティ」に明記。
## バージョン
`version` = `2.1.263-f` / `appVersion` = `"2.1.263"`。