k8s/agent-access: a namespace-limited service account and kubeconfig for a coding agent

Read-only by default, optional deploy role; no Secrets, exec,
port-forward or RBAC. Tokens from kubectl create token, time-limited.
Not applied.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLJfZQZeAKAwSqViTmLzki
This commit is contained in:
2026-10-19 09:49:20 +02:00
co-authored by Claude Opus 5.5
parent f0f4f57fee
commit 461f9d5578
8 changed files with 246 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
# Read-only view of the mg4 namespace: what runs, its logs and events, its configuration.
# Deliberately absent: Secrets (any verb), pods/exec, pods/attach, pods/portforward, RBAC.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: mg4-agent-read
namespace: mg4
labels:
app.kubernetes.io/part-of: mg4
app.kubernetes.io/component: agent-access
rules:
- apiGroups: [""]
resources: [pods, pods/log, services, endpoints, configmaps, persistentvolumeclaims, events, serviceaccounts]
verbs: [get, list, watch]
- apiGroups: [apps]
resources: [deployments, statefulsets, replicasets]
verbs: [get, list, watch]
- apiGroups: [batch]
resources: [jobs, cronjobs]
verbs: [get, list, watch]
- apiGroups: [networking.k8s.io]
resources: [networkpolicies]
verbs: [get, list, watch]
- apiGroups: [events.k8s.io]
resources: [events]
verbs: [get, list, watch]
- apiGroups: [traefik.io]
resources: [ingressroutes, middlewares]
verbs: [get, list, watch]
- apiGroups: [metrics.k8s.io]
resources: [pods]
verbs: [get, list]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: mg4-agent-read
namespace: mg4
labels:
app.kubernetes.io/part-of: mg4
app.kubernetes.io/component: agent-access
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: mg4-agent-read
subjects:
- kind: ServiceAccount
name: mg4-agent
namespace: mg4