129 lines
5.6 KiB
YAML
129 lines
5.6 KiB
YAML
{{- if or (.Values.clusterRole.create) (.Values.presets.kubernetesAttributes.enabled) (.Values.presets.clusterMetrics.enabled) (.Values.presets.kubeletMetrics.enabled) (.Values.presets.kubernetesEvents.enabled) (.Values.presets.kubernetesObjects.enabled) (.Values.presets.annotationDiscovery.logs.enabled) (.Values.presets.annotationDiscovery.metrics.enabled) (and .Values.presets.resourceDetection.enabled .Values.presets.resourceDetection.k8snode.enabled) -}}
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: {{ include "opentelemetry-collector.clusterRoleName" . }}
|
|
labels:
|
|
{{- include "opentelemetry-collector.labels" . | nindent 4 }}
|
|
{{- if .Values.clusterRole.annotations }}
|
|
annotations:
|
|
{{- range $key, $value := .Values.clusterRole.annotations }}
|
|
{{- printf "%s: %s" $key (tpl $value $ | quote) | nindent 4 }}
|
|
{{- end }}
|
|
{{- end }}
|
|
rules:
|
|
{{- $clusterMetricsEnabled := .Values.presets.clusterMetrics.enabled }}
|
|
{{- $disableLeaderElectionForClusterMetrics := .Values.presets.clusterMetrics.disableLeaderElection}}
|
|
{{- $useLeaderElectionForClusterMetrics := and (eq .Values.mode "daemonset") ( $clusterMetricsEnabled ) (not $disableLeaderElectionForClusterMetrics) }}
|
|
{{- $kubernetesObjectsEnabled := .Values.presets.kubernetesObjects.enabled }}
|
|
{{- $disableLeaderElectionForKubernetesObjects := .Values.presets.kubernetesObjects.disableLeaderElection }}
|
|
{{- $useLeaderElectionForKubernetesObjects := and (eq .Values.mode "daemonset") ( $kubernetesObjectsEnabled ) (not $disableLeaderElectionForKubernetesObjects) }}
|
|
{{- if or $useLeaderElectionForClusterMetrics $useLeaderElectionForKubernetesObjects }}
|
|
- apiGroups: ["coordination.k8s.io"]
|
|
resources: ["leases"]
|
|
verbs: ["get","list","watch","create","update","patch","delete"]
|
|
{{- end }}
|
|
{{- if .Values.clusterRole.rules -}}
|
|
{{ toYaml .Values.clusterRole.rules | nindent 2 -}}
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesAttributes.enabled}}
|
|
- apiGroups: [""]
|
|
resources: ["pods", "namespaces"]
|
|
verbs: ["get", "watch", "list"]
|
|
- apiGroups: ["apps"]
|
|
resources: ["replicasets"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["extensions"]
|
|
resources: ["replicasets"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if .Values.presets.clusterMetrics.enabled}}
|
|
- apiGroups: [""]
|
|
resources: ["events", "namespaces", "namespaces/status", "nodes", "nodes/spec", "pods", "pods/status", "replicationcontrollers", "replicationcontrollers/status", "resourcequotas", "services" ]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["apps"]
|
|
resources: ["daemonsets", "deployments", "replicasets", "statefulsets"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["extensions"]
|
|
resources: ["daemonsets", "deployments", "replicasets"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs", "cronjobs"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["autoscaling"]
|
|
resources: ["horizontalpodautoscalers"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end}}
|
|
{{- if .Values.presets.kubeletMetrics.enabled}}
|
|
- apiGroups: [""]
|
|
resources: ["nodes/stats"]
|
|
verbs: ["get", "watch", "list"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesEvents.enabled }}
|
|
- apiGroups: ["events.k8s.io"]
|
|
resources: ["events"]
|
|
verbs: ["watch", "list"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.enabled }}
|
|
{{- if .Values.presets.kubernetesObjects.core.enabled }}
|
|
- apiGroups: [""]
|
|
resources: ["namespaces", "pods", "nodes", "services", "serviceaccounts"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments", "replicasets", "daemonsets", "statefulsets"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["batch"]
|
|
resources: ["jobs", "cronjobs"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.rbac.enabled }}
|
|
- apiGroups: ["rbac.authorization.k8s.io"]
|
|
resources: ["roles", "rolebindings", "clusterroles", "clusterrolebindings"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.storage.enabled }}
|
|
- apiGroups: [""]
|
|
resources: ["persistentvolumes", "persistentvolumeclaims"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["storage.k8s.io"]
|
|
resources: ["storageclasses"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.networking.enabled }}
|
|
- apiGroups: ["networking.k8s.io"]
|
|
resources: ["ingresses", "networkpolicies"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.autoscaling.enabled }}
|
|
- apiGroups: ["autoscaling"]
|
|
resources: ["horizontalpodautoscalers"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- if .Values.presets.kubernetesObjects.autoscaling.vpa.enabled }}
|
|
- apiGroups: ["autoscaling.k8s.io"]
|
|
resources: ["verticalpodautoscalers"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.policy.enabled }}
|
|
- apiGroups: ["policy"]
|
|
resources: ["poddisruptionbudgets"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if .Values.presets.kubernetesObjects.apiExtensions.enabled }}
|
|
- apiGroups: ["apiextensions.k8s.io"]
|
|
resources: ["customresourcedefinitions"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if or .Values.presets.annotationDiscovery.logs.enabled .Values.presets.annotationDiscovery.metrics.enabled }}
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- if and .Values.presets.resourceDetection.enabled .Values.presets.resourceDetection.k8snode.enabled }}
|
|
- apiGroups: [""]
|
|
resources: ["nodes"]
|
|
verbs: ["get", "list", "watch"]
|
|
{{- end }}
|
|
{{- end }}
|