blob: 511073c6de1ea3a2aecf1a8e5f9aa5b034d10c1b [file] [log] [blame]
giob6e9f2f2026-07-23 16:53:10 +04001{{- if .Values.cainjector.enabled }}
2{{- if .Values.global.rbac.create }}
3apiVersion: rbac.authorization.k8s.io/v1
4kind: ClusterRole
5metadata:
6 name: {{ template "cainjector.fullname" . }}
7 labels:
8 app: {{ include "cainjector.name" . }}
9 app.kubernetes.io/name: {{ include "cainjector.name" . }}
10 app.kubernetes.io/instance: {{ .Release.Name }}
11 app.kubernetes.io/component: "cainjector"
12 {{- include "labels" . | nindent 4 }}
13rules:
14 - apiGroups: ["cert-manager.io"]
15 resources: ["certificates"]
16 verbs: ["get", "list", "watch"]
17 - apiGroups: [""]
18 resources: ["secrets"]
19 verbs: ["get", "list", "watch"]
20 - apiGroups: [""]
21 resources: ["events"]
22 verbs: ["get", "create", "update", "patch"]
23 - apiGroups: ["admissionregistration.k8s.io"]
24 resources: ["validatingwebhookconfigurations", "mutatingwebhookconfigurations"]
25 verbs: ["get", "list", "watch", "update", "patch"]
26 - apiGroups: ["apiregistration.k8s.io"]
27 resources: ["apiservices"]
28 verbs: ["get", "list", "watch", "update", "patch"]
29 - apiGroups: ["apiextensions.k8s.io"]
30 resources: ["customresourcedefinitions"]
31 verbs: ["get", "list", "watch", "update", "patch"]
32---
33apiVersion: rbac.authorization.k8s.io/v1
34kind: ClusterRoleBinding
35metadata:
36 name: {{ template "cainjector.fullname" . }}
37 labels:
38 app: {{ include "cainjector.name" . }}
39 app.kubernetes.io/name: {{ include "cainjector.name" . }}
40 app.kubernetes.io/instance: {{ .Release.Name }}
41 app.kubernetes.io/component: "cainjector"
42 {{- include "labels" . | nindent 4 }}
43roleRef:
44 apiGroup: rbac.authorization.k8s.io
45 kind: ClusterRole
46 name: {{ template "cainjector.fullname" . }}
47subjects:
48 - name: {{ template "cainjector.serviceAccountName" . }}
49 namespace: {{ include "cert-manager.namespace" . }}
50 kind: ServiceAccount
51
52---
53# leader election rules
54apiVersion: rbac.authorization.k8s.io/v1
55kind: Role
56metadata:
57 name: {{ template "cainjector.fullname" . }}:leaderelection
58 namespace: {{ .Values.global.leaderElection.namespace }}
59 labels:
60 app: {{ include "cainjector.name" . }}
61 app.kubernetes.io/name: {{ include "cainjector.name" . }}
62 app.kubernetes.io/instance: {{ .Release.Name }}
63 app.kubernetes.io/component: "cainjector"
64 {{- include "labels" . | nindent 4 }}
65rules:
66 # Used for leader election by the controller
67 # cert-manager-cainjector-leader-election is used by the CertificateBased injector controller
68 # see cmd/cainjector/start.go#L113
69 # cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller
70 # see cmd/cainjector/start.go#L137
71 - apiGroups: ["coordination.k8s.io"]
72 resources: ["leases"]
73 resourceNames: ["cert-manager-cainjector-leader-election", "cert-manager-cainjector-leader-election-core"]
74 verbs: ["get", "update", "patch"]
75 - apiGroups: ["coordination.k8s.io"]
76 resources: ["leases"]
77 verbs: ["create"]
78
79---
80
81# grant cert-manager permission to manage the leaderelection configmap in the
82# leader election namespace
83apiVersion: rbac.authorization.k8s.io/v1
84kind: RoleBinding
85metadata:
86 name: {{ include "cainjector.fullname" . }}:leaderelection
87 namespace: {{ .Values.global.leaderElection.namespace }}
88 labels:
89 app: {{ include "cainjector.name" . }}
90 app.kubernetes.io/name: {{ include "cainjector.name" . }}
91 app.kubernetes.io/instance: {{ .Release.Name }}
92 app.kubernetes.io/component: "cainjector"
93 {{- include "labels" . | nindent 4 }}
94roleRef:
95 apiGroup: rbac.authorization.k8s.io
96 kind: Role
97 name: {{ template "cainjector.fullname" . }}:leaderelection
98subjects:
99 - kind: ServiceAccount
100 name: {{ template "cainjector.serviceAccountName" . }}
101 namespace: {{ include "cert-manager.namespace" . }}
102{{- end }}
103{{- end }}
104{{- $certmanagerNamespace := include "cert-manager.namespace" . }}
105{{- if (.Values.cainjector.config.metricsTLSConfig).dynamic }}
106{{- if $certmanagerNamespace | eq .Values.cainjector.config.metricsTLSConfig.dynamic.secretNamespace }}
107
108---
109
110# Metrics server dynamic TLS serving certificate rules
111apiVersion: rbac.authorization.k8s.io/v1
112kind: Role
113metadata:
114 name: {{ template "cainjector.fullname" . }}:dynamic-serving
115 namespace: {{ include "cert-manager.namespace" . }}
116 labels:
117 app: {{ include "cainjector.name" . }}
118 app.kubernetes.io/name: {{ include "cainjector.name" . }}
119 app.kubernetes.io/instance: {{ .Release.Name }}
120 app.kubernetes.io/component: "cainjector"
121 {{- include "labels" . | nindent 4 }}
122rules:
123 - apiGroups: [""]
124 resources: ["secrets"]
125 resourceNames:
126 # Allow cainjector to read and update the metrics CA Secret when dynamic TLS is
127 # enabled for the metrics server and if the Secret is configured to be in the
128 # same namespace as cert-manager.
129 - {{ .Values.cainjector.config.metricsTLSConfig.dynamic.secretName | quote }}
130 verbs: ["get", "list", "watch", "update"]
131 # It's not possible to grant CREATE permission on a single resourceName.
132 - apiGroups: [""]
133 resources: ["secrets"]
134 verbs: ["create"]
135---
136apiVersion: rbac.authorization.k8s.io/v1
137kind: RoleBinding
138metadata:
139 name: {{ include "cainjector.fullname" . }}:dynamic-serving
140 namespace: {{ include "cert-manager.namespace" . }}
141 labels:
142 app: {{ include "cainjector.name" . }}
143 app.kubernetes.io/name: {{ include "cainjector.name" . }}
144 app.kubernetes.io/instance: {{ .Release.Name }}
145 app.kubernetes.io/component: "cainjector"
146 {{- include "labels" . | nindent 4 }}
147roleRef:
148 apiGroup: rbac.authorization.k8s.io
149 kind: Role
150 name: {{ template "cainjector.fullname" . }}:dynamic-serving
151subjects:
152 - kind: ServiceAccount
153 name: {{ template "cainjector.serviceAccountName" . }}
154 namespace: {{ include "cert-manager.namespace" . }}
155{{- end }}
156{{- end }}