У 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.
39 lines
1.8 KiB
YAML
39 lines
1.8 KiB
YAML
---
|
|
# Kubernetes MCP Server: containers/kubernetes-mcp-server (Apache-2.0, Go, без обёрток над kubectl).
|
|
# Транспорт streamable-http — сервер сам отдаёт MCP по HTTP на --port 8080, путь /mcp,
|
|
# ровно то, что ожидает прокси ToolHive (обёртка над stdio не нужна).
|
|
#
|
|
# --read-only — штатный режим сервера: ни одной write-операции (create/update/delete).
|
|
# Это второй барьер после RBAC SA (см. rbac.yaml); третий — denied_resources в TOML,
|
|
# если понадобится спрятать ресурс от инструментов совсем.
|
|
#
|
|
# --toolsets core оставляет базовый набор: без helm (чарты ставит Flux, агенту там
|
|
# делать нечего), tekton, kubevirt, kiali и netobserv.
|
|
#
|
|
# ВАЖНО: без oidcConfigRef прокси ToolHive работает без аутентификации — любой, кто
|
|
# достучится до порта, получит доступ к API под правами SA ниже. Поэтому наружу сервер
|
|
# не выводим: внешний доступ появится вместе с OIDC после Authelia.
|
|
apiVersion: toolhive.stacklok.dev/v1beta1
|
|
kind: MCPServer
|
|
metadata:
|
|
name: mcp-k8s
|
|
spec:
|
|
image: quay.io/containers/kubernetes_mcp_server:v0.0.66@sha256:6d650f4bd6ac303ad82713c997e73a2d001602f9bf17392c9b9a0e30e29c6423
|
|
transport: streamable-http
|
|
args:
|
|
- --port
|
|
- "8080"
|
|
- --read-only
|
|
- --toolsets
|
|
- core
|
|
serviceAccount: mcp-k8s
|
|
permissionProfile:
|
|
type: builtin
|
|
name: network
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
memory: 256Mi
|