stack.basicstack.de/apps/pangolin/pangolin-controller-rbac.yaml
CTO Agent 9b1af12d1b Add missing Traefik CRD permissions to pangolin-controller RBAC
Extend ClusterRole to include all Traefik CRDs that the controller manages:
- serverstransports, serverstransporttcps (for transport configuration)
- ingressroutetcps, ingressrouteudps (for TCP/UDP routing)
- middlewaretcps (for TCP middleware)
- tlsoptions, tlsstores (for TLS configuration)

This fixes the RBAC permission error preventing the controller from
reconciling Traefik configuration: "serverstransports.traefik.io is
forbidden: User \"system:serviceaccount:pangolin:pangolin-controller\"
cannot list resource \"serverstransports\""

Related: DEV-437

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-02 10:14:20 +00:00

80 lines
1.5 KiB
YAML

apiVersion: v1
kind: ServiceAccount
metadata:
name: pangolin-controller
namespace: pangolin
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pangolin-controller
rules:
# CRD discovery
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
# IngressClass discovery
- apiGroups:
- networking.k8s.io
resources:
- ingressclasses
verbs:
- get
- list
# Traefik CRDs - full CRUD
- apiGroups:
- traefik.containo.us
- traefik.io
resources:
- ingressroutes
- ingressroutetcps
- ingressrouteudps
- middlewares
- middlewaretcps
- traefikservices
- serverstransports
- serverstransporttcps
- tlsoptions
- tlsstores
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
# Leases for leader election
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- create
- update
# Events for logging
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: pangolin-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: pangolin-controller
subjects:
- kind: ServiceAccount
name: pangolin-controller
namespace: pangolin