У mkp нет ни одного безопасного режима, только RBAC. У containers/kubernetes-mcp-server есть штатный --read-only, --toolsets и denied_resources, официальный гайд по read-only SA и чарт. Образ quay.io/containers/kubernetes_mcp_server:v0.0.66 с дайджестом (тег проверен в API quay). RBAC: вместо самодельного списка — встроенная view (secrets в неё не входят) + отдельный ClusterRole на кластерные объекты и метрики. Аргументы: --port 8080 --read-only --toolsets core.
48 lines
1.6 KiB
YAML
48 lines
1.6 KiB
YAML
---
|
|
# Базовое чтение даём встроенной ролью view — её же рекомендует официальный гайд
|
|
# containers/kubernetes-mcp-server (docs/getting-started-kubernetes.md). view
|
|
# описывает namespaced-ресурсы и secrets в неё не входят, поэтому именно она, а не
|
|
# самодельный список с resources: ["*"].
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: mcp-k8s-view
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: view
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: mcp-k8s
|
|
namespace: ai
|
|
---
|
|
# view включает только namespaced-ресурсы, поэтому кластерные объекты и метрики
|
|
# добавляем отдельно. Ни secrets, ни записи здесь нет.
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: mcp-k8s-cluster-read
|
|
rules:
|
|
- apiGroups: [""]
|
|
resources: ["nodes", "namespaces", "persistentvolumes"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["storage.k8s.io"]
|
|
resources: ["storageclasses", "volumeattachments", "csidrivers", "csistoragecapacities"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["metrics.k8s.io"]
|
|
resources: ["*"]
|
|
verbs: ["get", "list"]
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: mcp-k8s-cluster-read
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: mcp-k8s-cluster-read
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: mcp-k8s
|
|
namespace: ai
|