From a841f4edde205b97c621eb6e6185fc9caaf398d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de> Date: Wed, 27 Apr 2022 14:44:04 +0200 Subject: [PATCH] Reduce cluster admin permissions for Helm chart Co-authored-by: Simon Ehrenstein <simon.ehrenstein@gmail.com> Co-authored-by: Benedikt Wetzel <stu126940@mail.uni-kiel.de> --- .../prometheus/operator-role-binding.yaml | 16 ++++ helm/templates/prometheus/operator-role.yaml | 79 +++++++++++++++++++ ...er-role-binding.yaml => role-binding.yaml} | 8 +- .../{cluster-role.yaml => role.yaml} | 9 +-- helm/values.yaml | 26 ++++-- 5 files changed, 123 insertions(+), 15 deletions(-) create mode 100644 helm/templates/prometheus/operator-role-binding.yaml create mode 100644 helm/templates/prometheus/operator-role.yaml rename helm/templates/prometheus/{cluster-role-binding.yaml => role-binding.yaml} (75%) rename helm/templates/prometheus/{cluster-role.yaml => role.yaml} (67%) diff --git a/helm/templates/prometheus/operator-role-binding.yaml b/helm/templates/prometheus/operator-role-binding.yaml new file mode 100644 index 000000000..0fadc0489 --- /dev/null +++ b/helm/templates/prometheus/operator-role-binding.yaml @@ -0,0 +1,16 @@ +{{- if not (index .Values "kube-prometheus-stack" "global" "rbac" "create") -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator + labels: + app: {{ template "theodolite.fullname" . }}-kube-prometheus-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator +subjects: +- kind: ServiceAccount + name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/helm/templates/prometheus/operator-role.yaml b/helm/templates/prometheus/operator-role.yaml new file mode 100644 index 000000000..16481a2ec --- /dev/null +++ b/helm/templates/prometheus/operator-role.yaml @@ -0,0 +1,79 @@ +{{- if not (index .Values "kube-prometheus-stack" "global" "rbac" "create") -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator + labels: + app: {{ template "theodolite.name" . }}-kube-prometheus-operator +rules: +- apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - alertmanagers/finalizers + - alertmanagerconfigs + - prometheuses + - prometheuses/finalizers + - thanosrulers + - thanosrulers/finalizers + - servicemonitors + - podmonitors + - probes + - prometheusrules + verbs: + - '*' +- apiGroups: + - apps + resources: + - statefulsets + verbs: + - '*' +- apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + verbs: + - list + - delete +- apiGroups: + - "" + resources: + - services + - services/finalizers + - endpoints + verbs: + - get + - create + - update + - delete +- apiGroups: + - "" + resources: + - nodes + verbs: + - list + - watch +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch +- apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch +{{- end }} diff --git a/helm/templates/prometheus/cluster-role-binding.yaml b/helm/templates/prometheus/role-binding.yaml similarity index 75% rename from helm/templates/prometheus/cluster-role-binding.yaml rename to helm/templates/prometheus/role-binding.yaml index f2f167b94..722f806e0 100644 --- a/helm/templates/prometheus/cluster-role-binding.yaml +++ b/helm/templates/prometheus/role-binding.yaml @@ -1,14 +1,14 @@ -{{- if .Values.prometheus.clusterRoleBinding.enabled -}} +{{- if .Values.prometheus.roleBinding.enabled -}} apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding +kind: RoleBinding metadata: name: {{ template "theodolite.fullname" . }}-prometheus roleRef: apiGroup: rbac.authorization.k8s.io - kind: ClusterRole + kind: Role name: {{ template "theodolite.fullname" . }}-prometheus subjects: - kind: ServiceAccount name: {{ template "theodolite.fullname" . }}-prometheus namespace: {{ .Release.Namespace }} -{{- end}} \ No newline at end of file +{{- end}} diff --git a/helm/templates/prometheus/cluster-role.yaml b/helm/templates/prometheus/role.yaml similarity index 67% rename from helm/templates/prometheus/cluster-role.yaml rename to helm/templates/prometheus/role.yaml index c2fea2205..321d2825b 100644 --- a/helm/templates/prometheus/cluster-role.yaml +++ b/helm/templates/prometheus/role.yaml @@ -1,12 +1,11 @@ -{{- if .Values.prometheus.clusterRole.enabled -}} +{{- if .Values.prometheus.role.enabled -}} apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole +kind: Role metadata: name: {{ template "theodolite.fullname" . }}-prometheus rules: - apiGroups: [""] resources: - - nodes - services - endpoints - pods @@ -15,6 +14,4 @@ rules: resources: - configmaps verbs: ["get"] -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- end }} \ No newline at end of file +{{- end}} diff --git a/helm/values.yaml b/helm/values.yaml index e3e2143a2..34a32ce60 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -5,7 +5,7 @@ kafkaClient: enabled: false nodeSelector: {} - + #### ## configuration of sub charts @@ -52,6 +52,9 @@ grafana: service: nodePort: 31199 type: NodePort + rbac: + pspEnabled: false + namespaced: true ### @@ -155,6 +158,9 @@ cp-helm-charts: ## The interval between refreshing metrics pollIntervalSeconds: 15 +strimzi-kafka-operator: + createGlobalResources: true + strimzi: enabled: true kafka: @@ -193,6 +199,10 @@ strimzi: # Prometheus Monitoring Stack (Prometheus Operator) ### kube-prometheus-stack: + global: + rbac: + create: false + commonLabels: appScope: titan-ccp @@ -238,7 +248,14 @@ kube-prometheus-stack: releaseNamespace: true additional: [] nodeSelector: {} + admissionWebhooks: + enabled: false + tls: + enabled: false + serviceAccount: + create: true + # We use our own Prometheus prometheus: enabled: false @@ -250,12 +267,11 @@ prometheus: enabled: true nodeSelector: {} - # depends on your cluster security and permission settings, you may need to create the following resources serviceAccount: enabled: true - clusterRole: + role: enabled: true - clusterRoleBinding: + roleBinding: enabled: true ### @@ -349,7 +365,7 @@ rbac: additionalRules: [] randomScheduler: - enabled: true + enabled: false image: ghcr.io/cau-se/theodolite-random-scheduler imageTag: latest imagePullPolicy: Always -- GitLab