diff --git a/stable/orangehrm/Chart.yaml b/stable/orangehrm/Chart.yaml index f3ab4a804b..e6fb443efb 100644 --- a/stable/orangehrm/Chart.yaml +++ b/stable/orangehrm/Chart.yaml @@ -1,5 +1,5 @@ name: orangehrm -version: 3.2.2 +version: 4.0.0 appVersion: 4.2.0-1 description: OrangeHRM is a free HR management system that offers a wealth of modules to suit the needs of your business. diff --git a/stable/orangehrm/README.md b/stable/orangehrm/README.md index eafa9b28ce..f85d1360d0 100644 --- a/stable/orangehrm/README.md +++ b/stable/orangehrm/README.md @@ -62,7 +62,12 @@ The following table lists the configurable parameters of the OrangeHRM chart and | `smtpUser` | SMTP user | `nil` | | `smtpPassword` | SMTP password | `nil` | | `smtpProtocol` | SMTP protocol [`ssl`, `none`] | `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.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `service.nodePorts.http` | Kubernetes http node port | `""` | +| `service.nodePorts.https` | Kubernetes https node port | `""` | | `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage class annotation) | diff --git a/stable/orangehrm/templates/NOTES.txt b/stable/orangehrm/templates/NOTES.txt index 5206d8f1a5..5ffc4029a9 100644 --- a/stable/orangehrm/templates/NOTES.txt +++ b/stable/orangehrm/templates/NOTES.txt @@ -4,24 +4,26 @@ 1. Get the OrangeHRM 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 "orangehrm.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo "OrangeHRM 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 "orangehrm.fullname" . }} service before proceeding ** ** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "orangehrm.fullname" . }} ** export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "orangehrm.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo "OrangeHRM URL: http://$SERVICE_IP/" -{{- else if contains "ClusterIP" .Values.serviceType }} +{{- $port:=.Values.service.port | toString }} + echo "OrangeHRM URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.port }}{{ end }}/" + +{{- else if contains "ClusterIP" .Values.service.type }} echo "OrangeHRM URL: http://127.0.0.1:8080/" - kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "orangehrm.fullname" . }} 8080:80 + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "orangehrm.fullname" . }} 8080:{{ .Values.service.port }} {{- end }} @@ -42,6 +44,6 @@ host. To configure OrangeHRM to use and external database host: 1. Complete your OrangeHRM deployment by running: - helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/orangehrm + helm upgrade {{ .Release.Name }} --set service.type={{ .Values.service.type }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/orangehrm {{- end }} diff --git a/stable/orangehrm/templates/svc.yaml b/stable/orangehrm/templates/svc.yaml index 9cb4485e45..291cee6bc6 100644 --- a/stable/orangehrm/templates/svc.yaml +++ b/stable/orangehrm/templates/svc.yaml @@ -8,13 +8,22 @@ 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: 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 "orangehrm.fullname" . }} diff --git a/stable/orangehrm/values.yaml b/stable/orangehrm/values.yaml index e811c503f3..eb47163aba 100644 --- a/stable/orangehrm/values.yaml +++ b/stable/orangehrm/values.yaml @@ -112,9 +112,25 @@ mariadb: size: 8Gi ## Kubernetes configuration -## For minikube, set this to NodePort, elsewhere use LoadBalancer +## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP ## -serviceType: LoadBalancer +service: + type: LoadBalancer + # HTTP Port + port: 80 + # HTTPS Port + httpsPort: 443 + ## + ## 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/