diff --git a/bitnami/jenkins/Chart.yaml b/bitnami/jenkins/Chart.yaml index b3af210e7..bb410f731 100644 --- a/bitnami/jenkins/Chart.yaml +++ b/bitnami/jenkins/Chart.yaml @@ -1,5 +1,5 @@ name: jenkins -version: 1.2.1 +version: 1.3.0 appVersion: 2.138.2 description: The leading open source automation server keywords: diff --git a/bitnami/jenkins/README.md b/bitnami/jenkins/README.md index 83967a7f0..b3684fa5c 100644 --- a/bitnami/jenkins/README.md +++ b/bitnami/jenkins/README.md @@ -64,6 +64,16 @@ The following tables lists the configurable parameters of the Jenkins chart and | `persistence.accessMode` | PVC Access Mode for Jenkins volume | `ReadWriteOnce` | | `persistence.size` | PVC Storage Request for Jenkins volume | `8Gi` | | `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` | +| `podAnnotations` | Pod annotations | `{}` | +| `metrics.enabled` | Start a side-car Jenkins prometheus exporter | `false` | +| `metrics.image.registry` | Jenkins exporter image registry | `docker.io` | +| `metrics.image.repository` | Jenkins exporter image name | `tolleiv/jenkins_exporter` | +| `metrics.image.tag` | Jenkins exporter image tag | `latest` | +| `metrics.image.pullPolicy` | Image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `nil` | +| `metrics.podAnnotations` | Additional annotations for Metrics exporter pod | `{prometheus.io/scrape: "true", prometheus.io/port: "9118"}` | +| `metrics.resources` | Exporter resource requests/limit | Memory: `256Mi`, CPU: `100m` | + The above parameters map to the env variables defined in [bitnami/jenkins](http://github.com/bitnami/bitnami-docker-jenkins). For more information please refer to the [bitnami/jenkins](http://github.com/bitnami/bitnami-docker-jenkins) image documentation. diff --git a/bitnami/jenkins/templates/_helpers.tpl b/bitnami/jenkins/templates/_helpers.tpl index c20d44cd3..f5051ebb9 100644 --- a/bitnami/jenkins/templates/_helpers.tpl +++ b/bitnami/jenkins/templates/_helpers.tpl @@ -37,3 +37,13 @@ Also, we can't use a single if because lazy evaluation is not an option {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} {{- end -}} {{- end -}} + +{{/* +Return the proper image name (for the metrics image) +*/}} +{{- define "metrics.image" -}} +{{- $registryName := .Values.metrics.image.registry -}} +{{- $repositoryName := .Values.metrics.image.repository -}} +{{- $tag := .Values.metrics.image.tag | toString -}} +{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} +{{- end -}} diff --git a/bitnami/jenkins/templates/deployment.yaml b/bitnami/jenkins/templates/deployment.yaml index 3c06e9136..9f071b885 100644 --- a/bitnami/jenkins/templates/deployment.yaml +++ b/bitnami/jenkins/templates/deployment.yaml @@ -18,6 +18,15 @@ spec: app: {{ template "fullname" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" release: "{{ .Release.Name }}" +{{- if or .Values.podAnnotations .Values.metrics.enabled }} + annotations: + {{- if .Values.podAnnotations }} +{{ toYaml .Values.podAnnotations | indent 8 }} + {{- end }} + {{- if .Values.metrics.podAnnotations }} +{{ toYaml .Values.metrics.podAnnotations | indent 8 }} + {{- end }} +{{- end }} spec: {{- if .Values.image.pullSecrets }} imagePullSecrets: @@ -26,7 +35,7 @@ spec: {{- end}} {{- end }} containers: - - name: {{ template "fullname" . }} + - name: jenkins image: "{{ template "jenkins.image" . }}" imagePullPolicy: {{ .Values.image.pullPolicy | quote }} env: @@ -69,6 +78,37 @@ spec: volumeMounts: - name: jenkins-data mountPath: /bitnami/jenkins +{{- if .Values.metrics.enabled }} + - name: metrics + image: {{ template "metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + command: ['sh', '-c', 'python -u ./jenkins_exporter.py -j http://127.0.0.1:8080 --user $JENKINS_USERNAME --password $JENKINS_PASSWORD'] + env: + - name: JENKINS_USERNAME + value: {{ .Values.jenkinsUser | quote }} + - name: JENKINS_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "fullname" . }} + key: jenkins-password + ports: + - name: metrics + containerPort: 9118 + livenessProbe: + httpGet: + path: /metrics + port: metrics + initialDelaySeconds: 15 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /metrics + port: metrics + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + {{ toYaml .Values.metrics.resources | indent 10 }} +{{- end }} volumes: - name: jenkins-data {{- if .Values.persistence.enabled }} diff --git a/bitnami/jenkins/values.yaml b/bitnami/jenkins/values.yaml index 80f650f02..4426e9e5e 100644 --- a/bitnami/jenkins/values.yaml +++ b/bitnami/jenkins/values.yaml @@ -70,3 +70,31 @@ resources: requests: memory: 512Mi cpu: 300m + +## Pod annotations +## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +## +podAnnotations: {} +## Prometheus Exporter / Metrics +## +metrics: + enabled: false + image: + registry: docker.io + repository: tolleiv/jenkins_exporter + tag: latest + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## + # pullSecrets: + # - myRegistrKeySecretName + ## Metrics exporter pod Annotation and Labels + podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9118" + ## Metrics exporter resource requests and limits + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## + # resources: {}