helm/core/templates/controller-clusterrole.yaml (101 lines of code) (raw):

--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: {{ include "controller.serviceAccountName" . }}-{{ .Release.Namespace }} labels: {{- include "controller.labels" . | nindent 4 }} rules: # ingress controller - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses"] verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status"] verbs: ["*"] - apiGroups: ["networking.k8s.io"] resources: ["ingresses", "ingressclasses"] verbs: ["get", "list", "watch"] - apiGroups: ["networking.k8s.io"] resources: ["ingresses/status"] verbs: ["*"] # required for CA's namespace controller - apiGroups: [""] resources: ["configmaps"] verbs: ["create", "get", "list", "watch", "update"] # Use for Kubernetes Service APIs - apiGroups: ["networking.x-k8s.io"] resources: ["*"] verbs: ["get", "watch", "list"] - apiGroups: ["networking.x-k8s.io"] resources: ["*"] # TODO: should be on just */status but wildcard is not supported verbs: ["update"] # Gateway api controller - apiGroups: ["gateway.networking.k8s.io"] resources: ["*"] verbs: ["get", "watch", "list", "create", "update", "delete", "patch"] # Needed for multicluster secret reading, possibly ingress certs in the future - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list", "create", "update", "delete", "patch"] - apiGroups: ["networking.higress.io"] resources: ["mcpbridges"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: ["extensions.higress.io"] resources: ["wasmplugins"] verbs: ["get", "list", "watch"] - apiGroups: ["networking.higress.io"] resources: ["http2rpcs"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: [""] resources: ["services"] verbs: ["get", "watch", "list", "update", "patch", "create", "delete"] # auto-detect installed CRD definitions - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get", "list", "watch"] # discovery and routing - apiGroups: [""] resources: ["pods", "nodes", "services", "namespaces", "endpoints", "deployments"] verbs: ["get", "list", "watch"] - apiGroups: ["discovery.k8s.io"] resources: ["endpointslices"] verbs: ["get", "list", "watch"] # Istiod and bootstrap. - apiGroups: ["certificates.k8s.io"] resources: - "certificatesigningrequests" - "certificatesigningrequests/approval" - "certificatesigningrequests/status" verbs: ["update", "create", "get", "delete", "watch"] - apiGroups: ["certificates.k8s.io"] resources: - "signers" resourceNames: - "kubernetes.io/legacy-unknown" verbs: ["approve"] # Used by Istiod to verify the JWT tokens - apiGroups: ["authentication.k8s.io"] resources: ["tokenreviews"] verbs: ["create"] # Used by Istiod to verify gateway SDS - apiGroups: ["authorization.k8s.io"] resources: ["subjectaccessreviews"] verbs: ["create"] # Used for MCS serviceexport management - apiGroups: ["multicluster.x-k8s.io"] resources: ["serviceexports"] verbs: [ "get", "watch", "list", "create", "delete"] # Used for MCS serviceimport management - apiGroups: ["multicluster.x-k8s.io"] resources: ["serviceimports"] verbs: ["get", "watch", "list"] # sidecar injection controller - apiGroups: ["admissionregistration.k8s.io"] resources: ["mutatingwebhookconfigurations"] verbs: ["get", "list", "watch", "update", "patch"] # configuration validation webhook controller - apiGroups: ["admissionregistration.k8s.io"] resources: ["validatingwebhookconfigurations"] verbs: ["get", "list", "watch", "update"] # istio configuration # removing CRD permissions can break older versions of Istio running alongside this control plane (https://github.com/istio/istio/issues/29382) # please proceed with caution - apiGroups: ["config.istio.io", "security.istio.io", "networking.istio.io", "authentication.istio.io", "rbac.istio.io", "telemetry.istio.io", "extensions.istio.io"] verbs: ["get", "watch", "list"] resources: ["*"] # knative KIngress configuration - apiGroups: ["networking.internal.knative.dev"] verbs: ["get","list","watch"] resources: ["ingresses"] - apiGroups: ["networking.internal.knative.dev"] resources: ["ingresses/status"] verbs: ["get","patch","update"] # gateway api need - apiGroups: ["apps"] verbs: [ "get", "watch", "list", "update", "patch", "create", "delete" ] resources: [ "deployments" ] - apiGroups: [""] verbs: [ "get", "watch", "list", "update", "patch", "create", "delete" ] resources: [ "serviceaccounts"]