Skip to content

Commit 47cc5e8

Browse files
authored
TEAMENG-1150: Give RBAC permissions to the Connector for cluster formation (#5)
1 parent a98b34e commit 47cc5e8

File tree

5 files changed

+61
-3
lines changed

5 files changed

+61
-3
lines changed

charts/connector/templates/_helpers.tpl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,16 @@ Selector labels
4444
app.kubernetes.io/name: {{ include "connector.name" . }}
4545
app.kubernetes.io/instance: {{ .Release.Name }}
4646
{{- end }}
47+
48+
{{/*
49+
Create the name of the service account to use
50+
*/}}
51+
{{- define "connector.serviceAccountName" -}}
52+
{{- if .Values.serviceAccount.name }}
53+
{{- .Values.serviceAccount.name }}
54+
{{- else if .Values.serviceAccount.create }}
55+
{{- include "connector.fullname" . }}
56+
{{- else }}
57+
{{- fail "Cannot determine service account name. Either set serviceAccount.create=true or provide serviceAccount.name" }}
58+
{{- end }}
59+
{{- end }}

charts/connector/templates/deployment.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ spec:
2323
spec:
2424
securityContext:
2525
{{- toYaml .Values.podSecurityContext | nindent 8 }}
26-
{{- if .Values.serviceAccount.name }}
27-
serviceAccountName: {{ .Values.serviceAccount.name }}
28-
{{- end }}
26+
serviceAccountName: {{ include "connector.serviceAccountName" . }}
2927
containers:
3028
- name: {{ .Chart.Name }}
3129
securityContext:
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{{- if .Values.rbac.create }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: Role
4+
metadata:
5+
name: {{ include "connector.fullname" . }}
6+
labels:
7+
{{- include "connector.labels" . | nindent 4 }}
8+
rules:
9+
- apiGroups: [""]
10+
resources: ["pods"]
11+
verbs: ["get", "list"]
12+
- apiGroups: ["coordination.k8s.io"]
13+
resources: ["leases"]
14+
verbs: ["get", "create", "update", "delete"]
15+
---
16+
apiVersion: rbac.authorization.k8s.io/v1
17+
kind: RoleBinding
18+
metadata:
19+
name: {{ include "connector.fullname" . }}
20+
labels:
21+
{{- include "connector.labels" . | nindent 4 }}
22+
roleRef:
23+
apiGroup: rbac.authorization.k8s.io
24+
kind: Role
25+
name: {{ include "connector.fullname" . }}
26+
subjects:
27+
- kind: ServiceAccount
28+
name: {{ include "connector.serviceAccountName" . }}
29+
namespace: {{ .Release.Namespace }}
30+
{{- end }}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{{- if .Values.serviceAccount.create -}}
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: {{ include "connector.serviceAccountName" . }}
6+
labels:
7+
{{- include "connector.labels" . | nindent 4 }}
8+
{{- end }}

charts/connector/values.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,16 @@ podAnnotations:
5959
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
6060
volumes: []
6161
volumeMounts: []
62+
63+
# RBAC resources give pod and lease permissions to the service account for
64+
# cluster formation (pod discovery + lease-based bootstrap coordination)
65+
rbac:
66+
create: true
67+
68+
# Set to `create` to false and provide your own service account name if you
69+
# don't want this chart to create one
6270
serviceAccount:
71+
create: true
6372
name: ""
6473

6574
# Extra manifests to deploy as an array of objects

0 commit comments

Comments
 (0)