fix(ai): mcp-k8s — containers/kubernetes-mcp-server вместо mkp
Flate / Flate - Success (pull_request) Blocked by required conditions
Flate / Flate - Filter (pull_request) Successful in 5s
Flate / Flate (pull_request) Successful in 17s

У 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.
This commit is contained in:
2026-09-17 23:17:35 +00:00
parent c4cf3ba798
commit c2c9b273f2
2 changed files with 56 additions and 83 deletions
+20 -10
View File
@@ -1,21 +1,31 @@
---
# Kubernetes MCP из реестра ToolHive (сервер k8s, проект StacklokLabs/mkp).
# Транспорт streamable-http — mkp отдаёт MCP по HTTP сам, прокси-обёртка над
# stdio не нужна. Порты оставлены дефолтными: proxyPort и mcpPort оба 8080.
# Kubernetes MCP Server: containers/kubernetes-mcp-server (Apache-2.0, Go, без обёрток над kubectl).
# Транспорт streamable-http — сервер сам отдаёт MCP по HTTP на --port 8080, путь /mcp,
# ровно то, что ожидает прокси ToolHive (обёртка над stdio не нужна).
#
# ВАЖНО: без oidcConfigRef прокси ToolHive работает без аутентификации — любой,
# кто достучится до его порта, получит доступ к API под правами SA ниже.
# Поэтому наружу сервер не выводим: пока агент вне кластера, адрес только
# внутрикластерный, а внешний доступ появится вместе с OIDC после Authelia.
# --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: ghcr.io/stackloklabs/mkp/server:0.4.3
image: quay.io/containers/kubernetes_mcp_server:v0.0.66@sha256:6d650f4bd6ac303ad82713c997e73a2d001602f9bf17392c9b9a0e30e29c6423
transport: streamable-http
# SA существует заранее (см. serviceaccount.yaml) — вместе с ним приезжает
# ClusterRoleBinding mcp-k8s-readonly.
args:
- --port
- "8080"
- --read-only
- --toolsets
- core
serviceAccount: mcp-k8s
permissionProfile:
type: builtin