From a9aff2aa6a8cc6733a417ba436902ed1bcd72952 Mon Sep 17 00:00:00 2001 From: "Javier J. Salmeron Garcia" Date: Wed, 21 Nov 2018 11:59:47 +0100 Subject: [PATCH] [bitnami/jenkins] Add service.type to values.yaml Signed-off-by: Javier J. Salmeron Garcia --- bitnami/jenkins/Chart.yaml | 2 +- bitnami/jenkins/README.md | 8 +++++++- bitnami/jenkins/templates/NOTES.txt | 12 +++++++----- bitnami/jenkins/templates/svc.yaml | 26 +++++++++++++++++++------- bitnami/jenkins/values.yaml | 19 ++++++++++++++++++- 5 files changed, 52 insertions(+), 15 deletions(-) diff --git a/bitnami/jenkins/Chart.yaml b/bitnami/jenkins/Chart.yaml index 793d43484..a195d088f 100644 --- a/bitnami/jenkins/Chart.yaml +++ b/bitnami/jenkins/Chart.yaml @@ -1,5 +1,5 @@ name: jenkins -version: 1.2.2 +version: 2.0.0 appVersion: 2.138.3 description: The leading open source automation server keywords: diff --git a/bitnami/jenkins/README.md b/bitnami/jenkins/README.md index 83967a7f0..abd46d53a 100644 --- a/bitnami/jenkins/README.md +++ b/bitnami/jenkins/README.md @@ -58,7 +58,13 @@ The following tables lists the configurable parameters of the Jenkins chart and | `jenkinsHome` | Jenkins home directory | `/opt/bitnami/jenkins/jenkins_home` | | `disableInitialization` | Allows to disable the initial Bitnami configuration for Jenkins | `no` | | `javaOpts` | Customize JVM parameters | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.port` | Service HTTP port | `80` | +| `service.httpsPort` | Service HTTPS port | `443` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.loadBalancerIP` | LoadBalancer service IP address | `""` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.storageClass` | PVC Storage Class for Jenkins volume | `nil` (uses alpha storage class annotation) | | `persistence.accessMode` | PVC Access Mode for Jenkins volume | `ReadWriteOnce` | diff --git a/bitnami/jenkins/templates/NOTES.txt b/bitnami/jenkins/templates/NOTES.txt index fb68e75d3..b9e6d5f51 100644 --- a/bitnami/jenkins/templates/NOTES.txt +++ b/bitnami/jenkins/templates/NOTES.txt @@ -3,23 +3,25 @@ 1. Get the Jenkins URL by running: -{{- if contains "NodePort" .Values.serviceType }} +{{- if contains "NodePort" .Values.service.type }} export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "Jenkins URL: http://$NODE_IP:$NODE_PORT/" -{{- else if contains "LoadBalancer" .Values.serviceType }} +{{- else if contains "LoadBalancer" .Values.service.type }} ** Please ensure an external IP is associated to the {{ template "fullname" . }} service before proceeding ** ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "Jenkins URL: http://$SERVICE_IP/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "Jenkins URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "Jenkins URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "fullname" . }} 8080:{{ .Values.service.port }} {{- end }} diff --git a/bitnami/jenkins/templates/svc.yaml b/bitnami/jenkins/templates/svc.yaml index 6736e0476..2c712f3f2 100644 --- a/bitnami/jenkins/templates/svc.yaml +++ b/bitnami/jenkins/templates/svc.yaml @@ -8,13 +8,25 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: - type: {{ .Values.serviceType }} + type: {{ .Values.service.type }} + {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if (and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} ports: - - name: http - port: 80 - targetPort: http - - name: https - port: 443 - targetPort: https + - name: http + port: {{ .Values.service.port }} + targetPort: http + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.http)))}} + nodePort: {{ .Values.service.nodePorts.http }} + {{- end }} + - name: https + port: {{ .Values.service.httpsPort }} + targetPort: https + {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePorts.https)))}} + nodePort: {{ .Values.service.nodePorts.https }} + {{- end }} selector: app: {{ template "fullname" . }} diff --git a/bitnami/jenkins/values.yaml b/bitnami/jenkins/values.yaml index c752015c1..d0cdb8279 100644 --- a/bitnami/jenkins/values.yaml +++ b/bitnami/jenkins/values.yaml @@ -49,7 +49,24 @@ disableInitialization: no ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## loadBalancerIP: + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + https: "" + ## Enable client source IP preservation + ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster ## Enable persistence using Persistent Volume Claims ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/