feat(ai): mcp-k8s через ToolHive (read-only RBAC)
Flate / Flate - Filter (pull_request) Successful in 5s
Flate / Flate (pull_request) Successful in 18s
Flate / Flate - Success (pull_request) Canceled after 0s

MCP-сервер k8s из реестра ToolHive: ghcr.io/stackloklabs/mkp/server:0.4.3, transport streamable-http.
Отдельный SA mcp-k8s и ClusterRole mcp-k8s-readonly (только get/list/watch).
Core-группа перечислена поимённо, чтобы не открывать secrets; остальные группы явным списком,
потому что apiGroups: [*] включает и core-группу. Наружу не выводим: без oidcConfigRef прокси
ToolHive неаутентифицирован.
This commit is contained in:
2026-09-17 23:10:17 +00:00
parent 0243dbfb9c
commit c4cf3ba798
6 changed files with 147 additions and 0 deletions
@@ -0,0 +1,28 @@
---
# Kubernetes MCP из реестра ToolHive (сервер k8s, проект StacklokLabs/mkp).
# Транспорт streamable-http — mkp отдаёт MCP по HTTP сам, прокси-обёртка над
# stdio не нужна. Порты оставлены дефолтными: proxyPort и mcpPort оба 8080.
#
# ВАЖНО: без 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
transport: streamable-http
# SA существует заранее (см. serviceaccount.yaml) — вместе с ним приезжает
# ClusterRoleBinding mcp-k8s-readonly.
serviceAccount: mcp-k8s
permissionProfile:
type: builtin
name: network
resources:
requests:
cpu: 50m
memory: 128Mi
limits:
memory: 256Mi