{{- $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 }}