Skip to content
This repository was archived by the owner on Apr 16, 2024. It is now read-only.

Commit f29b9fd

Browse files
authored
feat: add rbac proxy sidecar (#28)
1 parent be91c48 commit f29b9fd

File tree

5 files changed

+104
-3
lines changed

5 files changed

+104
-3
lines changed

chart/k8skafka-controller/Chart.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ keywords:
1212
name: k8skafka-controller
1313
sources:
1414
- https://github.com/DoodleScheduling/k8skafka-controller
15-
version: 0.3.2
15+
version: 0.3.3

chart/k8skafka-controller/templates/deployment.yaml

+23
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ spec:
5050
image: "{{ .Values.image.repository }}:{{ default .Chart.AppVersion .Values.image.tag }}"
5151
imagePullPolicy: {{ .Values.image.pullPolicy }}
5252
args:
53+
{{- if .Values.kubeRBACProxy.enabled }}
54+
- --metrics-addr=127.0.0.1:9556
55+
{{- end }}
5356
{{- if .Values.extraArgs }}
5457
{{- toYaml .Values.extraArgs | nindent 8 }}
5558
{{- end }}
@@ -76,6 +79,26 @@ spec:
7679
subPath: {{ .subPath }}
7780
{{- end }}
7881
{{- end }}
82+
{{- if .Values.kubeRBACProxy.enabled }}
83+
- args:
84+
- --secure-listen-address=0.0.0.0:8443
85+
- --upstream=http://127.0.0.1:{{ .Values.metricsPort }}
86+
- --logtostderr=true
87+
- --v=0
88+
image: quay.io/brancz/kube-rbac-proxy:v0.14.0
89+
imagePullPolicy: IfNotPresent
90+
name: kube-rbac-proxy
91+
ports:
92+
- containerPort: 8443
93+
name: https
94+
protocol: TCP
95+
resources:
96+
{{- toYaml .Values.kubeRBACProxy.resources | nindent 10 }}
97+
securityContext:
98+
{{- toYaml .Values.kubeRBACProxy.securityContext | nindent 10 }}
99+
terminationMessagePath: /dev/termination-log
100+
terminationMessagePolicy: File
101+
{{- end }}
79102
{{- if .Values.extraContainers }}
80103
{{- toYaml .Values.extraContainers | nindent 6 }}
81104
{{- end }}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
{{- if .Values.kubeRBACProxy.enabled }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: ClusterRole
4+
metadata:
5+
name: {{ include "k8skafka-controller.fullname" . }}-metrics-reader
6+
labels:
7+
app.kubernetes.io/name: {{ include "k8skafka-controller.name" . }}
8+
app.kubernetes.io/instance: {{ .Release.Name }}
9+
app.kubernetes.io/managed-by: {{ .Release.Service }}
10+
helm.sh/chart: {{ include "k8skafka-controller.chart" . }}
11+
rules:
12+
- nonResourceURLs:
13+
- "/metrics"
14+
verbs:
15+
- get
16+
---
17+
apiVersion: rbac.authorization.k8s.io/v1
18+
kind: ClusterRoleBinding
19+
metadata:
20+
name: {{ include "k8skafka-controller.fullname" . }}-proxy
21+
labels:
22+
app.kubernetes.io/name: {{ include "k8skafka-controller.name" . }}
23+
app.kubernetes.io/instance: {{ .Release.Name }}
24+
app.kubernetes.io/managed-by: {{ .Release.Service }}
25+
helm.sh/chart: {{ include "k8skafka-controller.chart" . }}
26+
roleRef:
27+
apiGroup: rbac.authorization.k8s.io
28+
kind: ClusterRole
29+
name: {{ include "k8skafka-controller.fullname" . }}-proxy
30+
subjects:
31+
- kind: ServiceAccount
32+
name: {{ template "k8skafka-controller.serviceAccountName" . }}
33+
namespace: {{ .Release.Namespace }}
34+
---
35+
apiVersion: rbac.authorization.k8s.io/v1
36+
kind: ClusterRole
37+
metadata:
38+
name: {{ include "k8skafka-controller.fullname" . }}-proxy
39+
labels:
40+
app.kubernetes.io/name: {{ include "k8skafka-controller.name" . }}
41+
app.kubernetes.io/instance: {{ .Release.Name }}
42+
app.kubernetes.io/managed-by: {{ .Release.Service }}
43+
helm.sh/chart: {{ include "k8skafka-controller.chart" . }}
44+
rules:
45+
- apiGroups:
46+
- authentication.k8s.io
47+
resources:
48+
- tokenreviews
49+
verbs:
50+
- create
51+
- apiGroups:
52+
- authorization.k8s.io
53+
resources:
54+
- subjectaccessreviews
55+
verbs:
56+
- create
57+
{{- end }}

chart/k8skafka-controller/templates/podmonitor.yaml

+12-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,18 @@ metadata:
1818
{{- toYaml .Values.annotations | nindent 4 }}
1919
spec:
2020
podMetricsEndpoints:
21-
- port: metrics
22-
path: {{ .Values.metricsPath }}
21+
- path: {{ .Values.metricsPath }}
22+
{{- if .Values.kubeRBACProxy.enabled }}
23+
port: https
24+
scheme: https
25+
bearerTokenSecret:
26+
key: token
27+
name: {{ template "k8skafka-controller.serviceAccountName" . }}
28+
tlsConfig:
29+
insecureSkipVerify: true
30+
{{- else }}
31+
port: metrics
32+
{{- end }}
2333
interval: {{ .Values.podMonitor.interval }}
2434
scrapeTimeout: {{ .Values.podMonitor.scrapeTimeout }}
2535
{{- if .Values.podMonitor.metricRelabelings }}

chart/k8skafka-controller/values.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,15 @@ prometheusRule:
117117
labels: {}
118118
rules: []
119119

120+
kubeRBACProxy:
121+
enabled: true
122+
123+
securityContext:
124+
allowPrivilegeEscalation: false
125+
capabilities:
126+
drop: ["all"]
127+
readOnlyRootFilesystem: true
128+
129+
resources: {}
130+
120131
tolerations: []

0 commit comments

Comments
 (0)