From 403d3bdf73627638ef34db2981555393cbfb704c Mon Sep 17 00:00:00 2001 From: Michael Barrientos Date: Wed, 12 Dec 2018 08:06:54 -0800 Subject: [PATCH] [stable/kubernetes-dashboard] #7516 Allow HTTP connection (#9011) Signed-off-by: Michael Barrientos --- stable/kubernetes-dashboard/Chart.yaml | 2 +- stable/kubernetes-dashboard/README.md | 1 + stable/kubernetes-dashboard/templates/NOTES.txt | 17 +++++++++++++++++ .../templates/deployment.yaml | 16 ++++++++++++++++ stable/kubernetes-dashboard/templates/svc.yaml | 4 ++++ stable/kubernetes-dashboard/values.yaml | 3 +++ 6 files changed, 42 insertions(+), 1 deletion(-) diff --git a/stable/kubernetes-dashboard/Chart.yaml b/stable/kubernetes-dashboard/Chart.yaml index 157c192e63..b5b6f0a80e 100644 --- a/stable/kubernetes-dashboard/Chart.yaml +++ b/stable/kubernetes-dashboard/Chart.yaml @@ -1,5 +1,5 @@ name: kubernetes-dashboard -version: 0.9.1 +version: 0.10.0 appVersion: 1.10.0 description: General-purpose web UI for Kubernetes clusters keywords: diff --git a/stable/kubernetes-dashboard/README.md b/stable/kubernetes-dashboard/README.md index ea9b030a72..7289484156 100644 --- a/stable/kubernetes-dashboard/README.md +++ b/stable/kubernetes-dashboard/README.md @@ -53,6 +53,7 @@ The following table lists the configurable parameters of the kubernetes-dashboar | `nodeSelector` | node labels for pod assignment | `{}` | | `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` | | `affinity` | Affinity for pod assignment | `[]` | +| `enableInsecureLogin` | Serve application over HTTP without TLS | `false` | | `service.externalPort` | Dashboard external port | 443 | | `service.internalPort` | Dashboard internal port | 443 | | `ingress.annotations` | Specify ingress class | `kubernetes.io/ingress.class: nginx` | diff --git a/stable/kubernetes-dashboard/templates/NOTES.txt b/stable/kubernetes-dashboard/templates/NOTES.txt index fb29995191..b6e521595b 100644 --- a/stable/kubernetes-dashboard/templates/NOTES.txt +++ b/stable/kubernetes-dashboard/templates/NOTES.txt @@ -5,15 +5,23 @@ {{- if .Values.ingress.enabled }} From outside the cluster, the server URL(s) are: {{- range .Values.ingress.hosts }} +{{- if $.Values.enableInsecureLogin }} + http://{{ . }} +{{- else }} https://{{ . }} {{- end }} +{{- end }} {{- else if contains "NodePort" .Values.service.type }} Get the Kubernetes Dashboard URL by running: export NODE_PORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "kubernetes-dashboard.fullname" . }}) export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}") +{{- if .Values.enableInsecureLogin }} + echo http://$NODE_IP:$NODE_PORT/ +{{- else }} echo https://$NODE_IP:$NODE_PORT/ +{{- end }} {{- else if contains "LoadBalancer" .Values.service.type }} @@ -22,11 +30,20 @@ Get the Kubernetes Dashboard URL by running: Get the Kubernetes Dashboard URL by running: export SERVICE_IP=$(kubectl get svc {{ template "kubernetes-dashboard.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') +{{- if .Values.enableInsecureLogin }} + echo http://$SERVICE_IP/ +{{- else }} echo https://$SERVICE_IP/ +{{- end }} {{- else if contains "ClusterIP" .Values.service.type }} Get the Kubernetes Dashboard URL by running: export POD_NAME=$(kubectl get pods -n {{ .Release.Namespace }} -l "app={{ template "kubernetes-dashboard.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") +{{- if .Values.enableInsecureLogin }} + echo http://127.0.0.1:9090/ + kubectl -n {{ .Release.Namespace }} port-forward $POD_NAME 9090:9090 +{{- else }} echo https://127.0.0.1:8443/ kubectl -n {{ .Release.Namespace }} port-forward $POD_NAME 8443:8443 {{- end }} +{{- end }} diff --git a/stable/kubernetes-dashboard/templates/deployment.yaml b/stable/kubernetes-dashboard/templates/deployment.yaml index 6025a1fd38..b100863838 100644 --- a/stable/kubernetes-dashboard/templates/deployment.yaml +++ b/stable/kubernetes-dashboard/templates/deployment.yaml @@ -35,14 +35,24 @@ spec: image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} args: +{{- if .Values.enableInsecureLogin }} + - --enable-insecure-login +{{- else }} - --auto-generate-certificates +{{- end }} {{- if .Values.extraArgs }} {{ toYaml .Values.extraArgs | indent 10 }} {{- end }} ports: +{{- if .Values.enableInsecureLogin }} + - name: http + containerPort: 9090 + protocol: TCP +{{- else }} - name: https containerPort: 8443 protocol: TCP +{{- end }} volumeMounts: - name: kubernetes-dashboard-certs mountPath: /certs @@ -51,9 +61,15 @@ spec: name: tmp-volume livenessProbe: httpGet: +{{- if .Values.enableInsecureLogin }} + scheme: HTTP + path: / + port: 9090 +{{- else }} scheme: HTTPS path: / port: 8443 +{{- end }} initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} resources: diff --git a/stable/kubernetes-dashboard/templates/svc.yaml b/stable/kubernetes-dashboard/templates/svc.yaml index e5422fb525..19b409b1ab 100644 --- a/stable/kubernetes-dashboard/templates/svc.yaml +++ b/stable/kubernetes-dashboard/templates/svc.yaml @@ -19,7 +19,11 @@ spec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.externalPort }} +{{- if .Values.enableInsecureLogin }} + targetPort: 9090 +{{- else }} targetPort: 8443 +{{- end }} {{- if hasKey .Values.service "nodePort" }} nodePort: {{ .Values.service.nodePort }} {{- end }} diff --git a/stable/kubernetes-dashboard/values.yaml b/stable/kubernetes-dashboard/values.yaml index 6352ec71d0..d926b3ee4c 100644 --- a/stable/kubernetes-dashboard/values.yaml +++ b/stable/kubernetes-dashboard/values.yaml @@ -18,6 +18,9 @@ labels: {} # kubernetes.io/cluster-service: "true" # kubernetes.io/name: "Kubernetes Dashboard" +## Serve application over HTTP without TLS +enableInsecureLogin: false + ## Additional container arguments ## # extraArgs: