blob: d6f9d365a29f687e04363fd085cc9e0903f0b62a [file] [log] [blame]
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +04001apiVersion: v1
2kind: ServiceAccount
3metadata:
4 name: ns-controller-controller-manager
5 namespace: {{ .Release.Namespace }}
6---
7apiVersion: rbac.authorization.k8s.io/v1
8kind: Role
9metadata:
10 name: ns-controller-leader-election-role
11 namespace: {{ .Release.Namespace }}
12rules:
13- apiGroups:
14 - ""
15 resources:
16 - configmaps
17 verbs:
18 - get
19 - list
20 - watch
21 - create
22 - update
23 - patch
24 - delete
25- apiGroups:
26 - coordination.k8s.io
27 resources:
28 - leases
29 verbs:
30 - get
31 - list
32 - watch
33 - create
34 - update
35 - patch
36 - delete
37- apiGroups:
38 - ""
39 resources:
40 - events
41 verbs:
42 - create
43 - patch
44---
45apiVersion: rbac.authorization.k8s.io/v1
46kind: ClusterRole
47metadata:
48 creationTimestamp: null
49 name: ns-controller-manager-role
50rules:
51- apiGroups:
52 - ""
53 resources:
54 - secrets
55 verbs:
56 - create
57 - delete
58 - get
59 - list
60 - patch
61 - update
62 - watch
63- apiGroups:
64 - dodo.cloud.dodo.cloud
65 resources:
66 - dnszones
67 verbs:
68 - create
69 - delete
70 - get
71 - list
72 - patch
73 - update
74 - watch
75- apiGroups:
76 - dodo.cloud.dodo.cloud
77 resources:
78 - dnszones/finalizers
79 verbs:
80 - update
81- apiGroups:
82 - dodo.cloud.dodo.cloud
83 resources:
84 - dnszones/status
85 verbs:
86 - get
87 - patch
88 - update
89---
90apiVersion: rbac.authorization.k8s.io/v1
91kind: ClusterRole
92metadata:
93 name: ns-controller-metrics-reader
94rules:
95- nonResourceURLs:
96 - /metrics
97 verbs:
98 - get
99---
100apiVersion: rbac.authorization.k8s.io/v1
101kind: ClusterRole
102metadata:
103 name: ns-controller-proxy-role
104rules:
105- apiGroups:
106 - authentication.k8s.io
107 resources:
108 - tokenreviews
109 verbs:
110 - create
111- apiGroups:
112 - authorization.k8s.io
113 resources:
114 - subjectaccessreviews
115 verbs:
116 - create
117---
118apiVersion: rbac.authorization.k8s.io/v1
119kind: RoleBinding
120metadata:
121 name: ns-controller-leader-election-rolebinding
122 namespace: {{ .Release.Namespace }}
123roleRef:
124 apiGroup: rbac.authorization.k8s.io
125 kind: Role
126 name: ns-controller-leader-election-role
127subjects:
128- kind: ServiceAccount
129 name: ns-controller-controller-manager
130 namespace: {{ .Release.Namespace }}
131---
132apiVersion: rbac.authorization.k8s.io/v1
133kind: ClusterRoleBinding
134metadata:
135 name: ns-controller-manager-rolebinding
136roleRef:
137 apiGroup: rbac.authorization.k8s.io
138 kind: ClusterRole
139 name: ns-controller-manager-role
140subjects:
141- kind: ServiceAccount
142 name: ns-controller-controller-manager
143 namespace: {{ .Release.Namespace }}
144---
145apiVersion: rbac.authorization.k8s.io/v1
146kind: ClusterRoleBinding
147metadata:
148 name: ns-controller-proxy-rolebinding
149roleRef:
150 apiGroup: rbac.authorization.k8s.io
151 kind: ClusterRole
152 name: ns-controller-proxy-role
153subjects:
154- kind: ServiceAccount
155 name: ns-controller-controller-manager
156 namespace: {{ .Release.Namespace }}
157---
158apiVersion: v1
159data:
160 controller_manager_config.yaml: |
161 apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
162 kind: ControllerManagerConfig
163 health:
164 healthProbeBindAddress: :8081
165 metrics:
166 bindAddress: 127.0.0.1:8080
167 webhook:
168 port: 9443
169 leaderElection:
170 leaderElect: true
171 resourceName: c1db6143.dodo.cloud
172 # leaderElectionReleaseOnCancel defines if the leader should step down volume
173 # when the Manager ends. This requires the binary to immediately end when the
174 # Manager is stopped, otherwise, this setting is unsafe. Setting this significantly
175 # speeds up voluntary leader transitions as the new leader don't have to wait
176 # LeaseDuration time first.
177 # In the default scaffold provided, the program ends immediately after
178 # the manager stops, so would be fine to enable this option. However,
179 # if you are doing or is intended to do any operation such as perform cleanups
180 # after the manager stops then its usage might be unsafe.
181 # leaderElectionReleaseOnCancel: true
182kind: ConfigMap
183metadata:
184 name: ns-controller-manager-config
185 namespace: {{ .Release.Namespace }}
186---
187apiVersion: v1
188kind: Service
189metadata:
190 labels:
191 control-plane: controller-manager
192 name: ns-controller-controller-manager-metrics-service
193 namespace: {{ .Release.Namespace }}
194spec:
195 ports:
196 - name: https
197 port: 8443
198 protocol: TCP
199 targetPort: https
200 selector:
201 control-plane: controller-manager
202---
Giorgi Lekveishvilid025b6a2023-12-06 11:22:07 +0400203apiVersion: v1
204kind: Service
205metadata:
206 labels:
207 control-plane: controller-manager
Giorgi Lekveishvilicced4c32023-12-08 08:56:40 +0400208 name: ns-controller # TODO(gio): move to _helpers
Giorgi Lekveishvilid025b6a2023-12-06 11:22:07 +0400209 namespace: {{ .Release.Namespace }}
210spec:
211 ports:
212 - name: http
213 port: 80
214 protocol: TCP
215 targetPort: http
216 selector:
217 control-plane: controller-manager
218---
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400219apiVersion: apps/v1
220kind: Deployment
221metadata:
222 labels:
223 control-plane: controller-manager
224 name: ns-controller-controller-manager
225 namespace: {{ .Release.Namespace }}
226spec:
227 replicas: 1
228 selector:
229 matchLabels:
230 control-plane: controller-manager
231 template:
232 metadata:
233 annotations:
234 kubectl.kubernetes.io/default-container: manager
235 labels:
236 control-plane: controller-manager
237 spec:
238 volumes:
239 - name: zone-configs
240 persistentVolumeClaim:
Giorgi Lekveishvili13517e22023-12-01 16:30:51 +0400241 claimName: {{ .Values.volume.claimName }}
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400242 containers:
243 - args:
244 - --secure-listen-address=0.0.0.0:8443
245 - --upstream=http://127.0.0.1:8080/
246 - --logtostderr=true
247 - --v=0
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +0400248 image: {{ .Values.kubeRBACProxy.image.repository }}:{{ .Values.kubeRBACProxy.image.tag }}
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400249 name: kube-rbac-proxy
250 ports:
251 - containerPort: 8443
252 name: https
253 protocol: TCP
254 resources:
255 limits:
256 cpu: 500m
257 memory: 128Mi
258 requests:
259 cpu: 5m
260 memory: 64Mi
261 securityContext:
262 allowPrivilegeEscalation: false
263 capabilities:
264 drop:
265 - ALL
266 - args:
267 - --health-probe-bind-address=:8081
268 - --metrics-bind-address=127.0.0.1:8080
269 - --leader-elect
270 - --config-dir=/etc/pcloud/dns-zone-configs
Giorgi Lekveishvilid025b6a2023-12-06 11:22:07 +0400271 - --api-port=8082
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400272 command:
273 - /manager
Giorgi Lekveishvili13517e22023-12-01 16:30:51 +0400274 image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
275 imagePullPolicy: {{ .Values.image.pullPolicy }}
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400276 volumeMounts:
277 - name: zone-configs
Giorgi Lekveishvili13517e22023-12-01 16:30:51 +0400278 mountPath: {{ .Values.volume.mountPath }}
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400279 livenessProbe:
280 httpGet:
281 path: /healthz
282 port: 8081
283 initialDelaySeconds: 15
284 periodSeconds: 20
285 name: manager
Giorgi Lekveishvilid025b6a2023-12-06 11:22:07 +0400286 ports:
287 - containerPort: 8082
288 name: http
289 protocol: TCP
Giorgi Lekveishvilie8b2f012023-11-30 19:05:03 +0400290 readinessProbe:
291 httpGet:
292 path: /readyz
293 port: 8081
294 initialDelaySeconds: 5
295 periodSeconds: 10
296 resources:
297 limits:
298 cpu: 500m
299 memory: 128Mi
300 requests:
301 cpu: 10m
302 memory: 64Mi
303 securityContext:
304 allowPrivilegeEscalation: false
305 capabilities:
306 drop:
307 - ALL
308 securityContext:
309 runAsNonRoot: true
310 serviceAccountName: ns-controller-controller-manager
311 terminationGracePeriodSeconds: 10