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 検証済み
49 lines
1.7 KiB
YAML
49 lines
1.7 KiB
YAML
{{- $sessNs := include "claude-code.sessionsNamespace" . -}}
|
|
---
|
|
# 制御プレーンがセッション NS 内で必要とする最小権限。
|
|
# ClusterRole は使わず、セッション NS に閉じた Role のみ。
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: Role
|
|
metadata:
|
|
name: {{ include "claude-code.fullname" . }}-manager
|
|
namespace: {{ $sessNs }}
|
|
labels:
|
|
{{- include "claude-code.labels" . | nindent 4 }}
|
|
rules:
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["get", "list", "watch", "create", "delete", "deletecollection"]
|
|
- apiGroups: [""]
|
|
resources: ["pods/log", "pods/status"]
|
|
verbs: ["get", "list"]
|
|
- apiGroups: [""]
|
|
resources: ["services"]
|
|
verbs: ["get", "list", "watch", "create", "delete"]
|
|
- apiGroups: [""]
|
|
resources: ["events"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- if .Values.git.guiIdentities.enabled }}
|
|
# GUI からの git identity 登録(Secret の作成/更新/削除)。
|
|
# list は同 NS の他 Secret も対象になりうるが、manager コードは
|
|
# ラベル claude-code.cafepieters.com/identity-source=gui のものだけを操作する。
|
|
- apiGroups: [""]
|
|
resources: ["secrets"]
|
|
verbs: ["get", "list", "create", "update", "patch", "delete"]
|
|
{{- end }}
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: RoleBinding
|
|
metadata:
|
|
name: {{ include "claude-code.fullname" . }}-manager
|
|
namespace: {{ $sessNs }}
|
|
labels:
|
|
{{- include "claude-code.labels" . | nindent 4 }}
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: Role
|
|
name: {{ include "claude-code.fullname" . }}-manager
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: {{ include "claude-code.managerServiceAccountName" . }}
|
|
namespace: {{ .Release.Namespace }}
|