| {{ if .Values.rbac.create }} |
| {{- $serviceName := include "jenkins.fullname" . -}} |
| |
| # This role is used to allow Jenkins scheduling of agents via Kubernetes plugin. |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: Role |
| metadata: |
| name: {{ $serviceName }}-schedule-agents |
| namespace: {{ template "jenkins.agent.namespace" . }} |
| labels: |
| "app.kubernetes.io/name": '{{ template "jenkins.name" .}}' |
| {{- if .Values.renderHelmLabels }} |
| "helm.sh/chart": "{{ template "jenkins.label" .}}" |
| {{- end }} |
| "app.kubernetes.io/managed-by": "{{ .Release.Service }}" |
| "app.kubernetes.io/instance": "{{ .Release.Name }}" |
| "app.kubernetes.io/component": "{{ .Values.controller.componentName }}" |
| rules: |
| - apiGroups: [""] |
| resources: ["pods", "pods/exec", "pods/log", "persistentvolumeclaims", "events"] |
| verbs: ["get", "list", "watch"] |
| - apiGroups: [""] |
| resources: ["pods", "pods/exec", "persistentvolumeclaims"] |
| verbs: ["create", "delete", "deletecollection", "patch", "update"] |
| |
| --- |
| |
| # We bind the role to the Jenkins service account. The role binding is created in the namespace |
| # where the agents are supposed to run. |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: RoleBinding |
| metadata: |
| name: {{ $serviceName }}-schedule-agents |
| namespace: {{ template "jenkins.agent.namespace" . }} |
| labels: |
| "app.kubernetes.io/name": '{{ template "jenkins.name" .}}' |
| {{- if .Values.renderHelmLabels }} |
| "helm.sh/chart": "{{ template "jenkins.label" .}}" |
| {{- end }} |
| "app.kubernetes.io/managed-by": "{{ .Release.Service }}" |
| "app.kubernetes.io/instance": "{{ .Release.Name }}" |
| "app.kubernetes.io/component": "{{ .Values.controller.componentName }}" |
| roleRef: |
| apiGroup: rbac.authorization.k8s.io |
| kind: Role |
| name: {{ $serviceName }}-schedule-agents |
| subjects: |
| - kind: ServiceAccount |
| name: {{ template "jenkins.serviceAccountName" .}} |
| namespace: {{ template "jenkins.namespace" . }} |
| |
| --- |
| |
| {{- if .Values.rbac.readSecrets }} |
| # This is needed if you want to use https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ |
| # as it needs permissions to get/watch/list Secrets |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: Role |
| metadata: |
| name: {{ template "jenkins.fullname" . }}-read-secrets |
| namespace: {{ template "jenkins.namespace" . }} |
| labels: |
| "app.kubernetes.io/name": '{{ template "jenkins.name" .}}' |
| {{- if .Values.renderHelmLabels }} |
| "helm.sh/chart": "{{ template "jenkins.label" .}}" |
| {{- end }} |
| "app.kubernetes.io/managed-by": "{{ .Release.Service }}" |
| "app.kubernetes.io/instance": "{{ .Release.Name }}" |
| "app.kubernetes.io/component": "{{ .Values.controller.componentName }}" |
| rules: |
| - apiGroups: [""] |
| resources: ["secrets"] |
| verbs: ["get", "watch", "list"] |
| |
| --- |
| |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: RoleBinding |
| metadata: |
| name: {{ $serviceName }}-read-secrets |
| namespace: {{ template "jenkins.namespace" . }} |
| labels: |
| "app.kubernetes.io/name": '{{ template "jenkins.name" .}}' |
| {{- if .Values.renderHelmLabels }} |
| "helm.sh/chart": "{{ template "jenkins.label" .}}" |
| {{- end }} |
| "app.kubernetes.io/managed-by": "{{ .Release.Service }}" |
| "app.kubernetes.io/instance": "{{ .Release.Name }}" |
| "app.kubernetes.io/component": "{{ .Values.controller.componentName }}" |
| roleRef: |
| apiGroup: rbac.authorization.k8s.io |
| kind: Role |
| name: {{ template "jenkins.fullname" . }}-read-secrets |
| subjects: |
| - kind: ServiceAccount |
| name: {{ template "jenkins.serviceAccountName" . }} |
| namespace: {{ template "jenkins.namespace" . }} |
| |
| --- |
| {{- end}} |
| |
| {{- if .Values.controller.sidecars.configAutoReload.enabled }} |
| # The sidecar container which is responsible for reloading configuration changes |
| # needs permissions to watch ConfigMaps |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: Role |
| metadata: |
| name: {{ template "jenkins.fullname" . }}-casc-reload |
| namespace: {{ template "jenkins.namespace" . }} |
| labels: |
| "app.kubernetes.io/name": '{{ template "jenkins.name" .}}' |
| {{- if .Values.renderHelmLabels }} |
| "helm.sh/chart": "{{ template "jenkins.label" .}}" |
| {{- end }} |
| "app.kubernetes.io/managed-by": "{{ .Release.Service }}" |
| "app.kubernetes.io/instance": "{{ .Release.Name }}" |
| "app.kubernetes.io/component": "{{ .Values.controller.componentName }}" |
| rules: |
| - apiGroups: [""] |
| resources: ["configmaps"] |
| verbs: ["get", "watch", "list"] |
| |
| --- |
| |
| apiVersion: rbac.authorization.k8s.io/v1 |
| kind: RoleBinding |
| metadata: |
| name: {{ $serviceName }}-watch-configmaps |
| namespace: {{ template "jenkins.namespace" . }} |
| labels: |
| "app.kubernetes.io/name": '{{ template "jenkins.name" .}}' |
| {{- if .Values.renderHelmLabels }} |
| "helm.sh/chart": "{{ template "jenkins.label" .}}" |
| {{- end }} |
| "app.kubernetes.io/managed-by": "{{ .Release.Service }}" |
| "app.kubernetes.io/instance": "{{ .Release.Name }}" |
| "app.kubernetes.io/component": "{{ .Values.controller.componentName }}" |
| roleRef: |
| apiGroup: rbac.authorization.k8s.io |
| kind: Role |
| name: {{ template "jenkins.fullname" . }}-casc-reload |
| subjects: |
| - kind: ServiceAccount |
| name: {{ template "jenkins.serviceAccountName" . }} |
| namespace: {{ template "jenkins.namespace" . }} |
| |
| {{- end}} |
| |
| {{ end }} |