--- # Права MCP-сервера на API. Только чтение: mkp умеет и apply_resource, и # delete_resource, и exec в поды — ограничение живёт исключительно здесь, # поэтому список verbs закрыт чтением. apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: mcp-k8s-readonly rules: # Core-группа перечислена поимённо: resources: ["*"] открыл бы и secrets, # а cluster-secrets, токен Proxmox CSI и прочие креды агенту читать незачем. - apiGroups: [""] resources: - configmaps - endpoints - events - limitranges - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - pods/log - pods/status - replicationcontrollers - resourcequotas - serviceaccounts - services verbs: ["get", "list", "watch"] # Остальные группы перечислены явно, потому что apiGroups: ["*"] включает и # core-группу — то есть снова открыл бы secrets. Список закрытый: не хватает # группы — сервер просто не увидит её ресурсы, ничего не сломается. - apiGroups: - admissionregistration.k8s.io - apiextensions.k8s.io - apiregistration.k8s.io - apps - authentication.k8s.io - authorization.k8s.io - autoscaling - batch - certificates.k8s.io - coordination.k8s.io - discovery.k8s.io - events.k8s.io - flowcontrol.apiserver.k8s.io - metrics.k8s.io - networking.k8s.io - node.k8s.io - policy - rbac.authorization.k8s.io - scheduling.k8s.io - storage.k8s.io - acme.cert-manager.io - cert-manager.io - cilium.io - dragonflydb.io - external-secrets.io - gateway.envoyproxy.io - gateway.networking.k8s.io - generators.external-secrets.io - helm.toolkit.fluxcd.io - image.toolkit.fluxcd.io - kustomize.toolkit.fluxcd.io - monitoring.coreos.com - notification.toolkit.fluxcd.io - snapshot.storage.k8s.io - source.toolkit.fluxcd.io - toolhive.stacklok.dev resources: ["*"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: mcp-k8s-readonly roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: mcp-k8s-readonly subjects: - kind: ServiceAccount name: mcp-k8s namespace: ai