From c8f219c9e4e9b345a591688acb29706eae2ab6d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20J=2E=20Salmer=C3=B3n-Garc=C3=ADa?= Date: Tue, 20 Nov 2018 18:04:51 +0100 Subject: [PATCH] [stable/jasperreports] Add service.type to values.yaml (#9399) * [stable/jasperreports] Add service.type to values.yaml Signed-off-by: Javier J. Salmeron Garcia * Fix notes.txt Signed-off-by: Javier J. Salmeron Garcia --- stable/jasperreports/Chart.yaml | 2 +- stable/jasperreports/README.md | 5 ++++- stable/jasperreports/templates/NOTES.txt | 14 ++++++++------ stable/jasperreports/templates/svc.yaml | 14 ++++++++++---- stable/jasperreports/values.yaml | 15 ++++++++++++++- 5 files changed, 37 insertions(+), 13 deletions(-) diff --git a/stable/jasperreports/Chart.yaml b/stable/jasperreports/Chart.yaml index 2c0f57c945..a4d1d41986 100644 --- a/stable/jasperreports/Chart.yaml +++ b/stable/jasperreports/Chart.yaml @@ -1,5 +1,5 @@ name: jasperreports -version: 3.1.1 +version: 4.0.0 appVersion: 7.1.0 description: The JasperReports server can be used as a stand-alone or embedded reporting and BI server that offers web-based reporting, analytic tools and visualization, diff --git a/stable/jasperreports/README.md b/stable/jasperreports/README.md index bde3363601..858f296574 100644 --- a/stable/jasperreports/README.md +++ b/stable/jasperreports/README.md @@ -75,7 +75,10 @@ The following table lists the configurable parameters of the JasperReports chart | `mariadb.db.user` | Database user to create | `bn_jasperreports` | | `mariadb.db.password` | Password for the database | `nil` | | `mariadb.rootUser.password` | MariaDB admin password | `nil` | -| `serviceType` | Kubernetes Service type | `LoadBalancer` | +| `service.type` | Kubernetes Service type | `LoadBalancer` | +| `service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.port` | Service HTTP port | `80` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.storageClass` | PVC Storage Class for JasperReports volume | `nil` (uses alpha storage annotation) | | `persistence.accessMode` | PVC Access Mode for JasperReports volume | `ReadWriteOnce` | diff --git a/stable/jasperreports/templates/NOTES.txt b/stable/jasperreports/templates/NOTES.txt index c36d47d594..c7c9717b7d 100644 --- a/stable/jasperreports/templates/NOTES.txt +++ b/stable/jasperreports/templates/NOTES.txt @@ -3,24 +3,26 @@ 1. Get the JasperReports 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 "jasperreports.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "JasperReports 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 "jasperreports.fullname" . }} service before proceeding ** ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "jasperreports.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "jasperreports.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "JasperReports URL: http://$SERVICE_IP/jasperserver/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "JasperReports URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/jasperserver/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "JasperReports URL: http://127.0.0.1:8080/jasperserver/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "jasperreports.fullname" . }} 8080:8080 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "jasperreports.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} @@ -41,6 +43,6 @@ host. To configure JasperReports to use and external database host: 1. Complete your JasperReports deployment by running: - helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/jasperreports + helm upgrade {{ .Release.Name }} --set service.type={{ .Values.service.type }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/jasperreports {{- end }} diff --git a/stable/jasperreports/templates/svc.yaml b/stable/jasperreports/templates/svc.yaml index 640df13ef1..d7aa3ed939 100644 --- a/stable/jasperreports/templates/svc.yaml +++ b/stable/jasperreports/templates/svc.yaml @@ -8,10 +8,16 @@ 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 }} ports: - - name: http - port: 80 - targetPort: http + - 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 }} selector: app: {{ template "jasperreports.fullname" . }} diff --git a/stable/jasperreports/values.yaml b/stable/jasperreports/values.yaml index 1b064d302f..7745c3632b 100644 --- a/stable/jasperreports/values.yaml +++ b/stable/jasperreports/values.yaml @@ -121,7 +121,20 @@ mariadb: ## Kubernetes configuration ## For minikube, set this to NodePort, elsewhere use LoadBalancer ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + ## + ## nodePorts: + ## http: + ## https: + nodePorts: + http: "" + ## 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/