{{- $proxy_service := include "jupyterhub.proxy-public.fullname" . -}} {{- /* Generated with https://patorjk.com/software/taag/#p=display&h=0&f=Slant&t=JupyterHub */}} . __ __ __ __ __ / / __ __ ____ __ __ / /_ ___ _____ / / / / __ __ / /_ __ / / / / / / / __ \ / / / / / __/ / _ \ / ___/ / /_/ / / / / / / __ \ / /_/ / / /_/ / / /_/ / / /_/ / / /_ / __/ / / / __ / / /_/ / / /_/ / \____/ \__,_/ / .___/ \__, / \__/ \___/ /_/ /_/ /_/ \__,_/ /_.___/ /_/ /____/ You have successfully installed the official JupyterHub Helm chart! ### Installation info - Kubernetes namespace: {{ .Release.Namespace }} - Helm release name: {{ .Release.Name }} - Helm chart version: {{ .Chart.Version }} - JupyterHub version: {{ .Chart.AppVersion }} - Hub pod packages: See https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/{{ include "jupyterhub.chart-version-to-git-ref" .Chart.Version }}/images/hub/requirements.txt ### Followup links - Documentation: https://z2jh.jupyter.org - Help forum: https://discourse.jupyter.org - Social chat: https://gitter.im/jupyterhub/jupyterhub - Issue tracking: https://github.com/jupyterhub/zero-to-jupyterhub-k8s/issues ### Post-installation checklist - Verify that created Pods enter a Running state: kubectl --namespace={{ .Release.Namespace }} get pod If a pod is stuck with a Pending or ContainerCreating status, diagnose with: kubectl --namespace={{ .Release.Namespace }} describe pod If a pod keeps restarting, diagnose with: kubectl --namespace={{ .Release.Namespace }} logs --previous {{- println }} {{- if eq .Values.proxy.service.type "LoadBalancer" }} - Verify an external IP is provided for the k8s Service {{ $proxy_service }}. kubectl --namespace={{ .Release.Namespace }} get service {{ $proxy_service }} If the external ip remains , diagnose with: kubectl --namespace={{ .Release.Namespace }} describe service {{ $proxy_service }} {{- end }} - Verify web based access: {{- println }} {{- if .Values.ingress.enabled }} {{- range $host := .Values.ingress.hosts }} Try insecure HTTP access: http://{{ $host }}{{ $.Values.hub.baseUrl | trimSuffix "/" }}/ {{- end }} {{- range $tls := .Values.ingress.tls }} {{- range $host := $tls.hosts }} Try secure HTTPS access: https://{{ $host }}{{ $.Values.hub.baseUrl | trimSuffix "/" }}/ {{- end }} {{- end }} {{- else }} You have not configured a k8s Ingress resource so you need to access the k8s Service {{ $proxy_service }} directly. {{- println }} {{- if eq .Values.proxy.service.type "NodePort" }} The k8s Service {{ $proxy_service }} is exposed via NodePorts. That means that all the k8s cluster's nodes are exposing the k8s Service via those ports. Try insecure HTTP access: http://:{{ .Values.proxy.service.nodePorts.http | default "no-http-nodeport-set"}} Try secure HTTPS access: https://:{{ .Values.proxy.service.nodePorts.https | default "no-https-nodeport-set" }} {{- else }} If your computer is outside the k8s cluster, you can port-forward traffic to the k8s Service {{ $proxy_service }} with kubectl to access it from your computer. kubectl --namespace={{ .Release.Namespace }} port-forward service/{{ $proxy_service }} 8080:http Try insecure HTTP access: http://localhost:8080 {{- end }} {{- end }} {{- println }} {{- /* Warnings for likely misconfigurations */}} {{- if and (not .Values.scheduling.podPriority.enabled) (and .Values.scheduling.userPlaceholder.enabled .Values.scheduling.userPlaceholder.replicas) }} ################################################################################# ###### WARNING: You are using user placeholders without pod priority ##### ###### enabled*, either enable pod priority or stop using the ##### ###### user placeholders** to avoid having placeholders that ##### ###### refuse to make room for a real user. ##### ###### ##### ###### *scheduling.podPriority.enabled ##### ###### **scheduling.userPlaceholder.enabled ##### ###### **scheduling.userPlaceholder.replicas ##### ################################################################################# {{- println }} {{- end }} {{- /* Breaking changes and failures for likely misconfigurations. */}} {{- $breaking := "" }} {{- $breaking_title := "\n" }} {{- $breaking_title = print $breaking_title "\n#################################################################################" }} {{- $breaking_title = print $breaking_title "\n###### BREAKING: The config values passed contained no longer accepted #####" }} {{- $breaking_title = print $breaking_title "\n###### options. See the messages below for more details. #####" }} {{- $breaking_title = print $breaking_title "\n###### #####" }} {{- $breaking_title = print $breaking_title "\n###### To verify your updated config is accepted, you can use #####" }} {{- $breaking_title = print $breaking_title "\n###### the `helm template` command. #####" }} {{- $breaking_title = print $breaking_title "\n#################################################################################" }} {{- /* This is an example (in a helm template comment) on how to detect and communicate with regards to a breaking chart config change. {{- if hasKey .Values.singleuser.cloudMetadata "enabled" }} {{- $breaking = print $breaking "\n\nCHANGED: singleuser.cloudMetadata.enabled must as of 1.0.0 be configured using singleuser.cloudMetadata.blockWithIptables with the opposite value." }} {{- end }} */}} {{- if hasKey .Values.rbac "enabled" }} {{- $breaking = print $breaking "\n\nCHANGED: rbac.enabled must as of version 2.0.0 be configured via rbac.create and .serviceAccount.create." }} {{- end }} {{- if hasKey .Values.hub "fsGid" }} {{- $breaking = print $breaking "\n\nCHANGED: hub.fsGid must as of version 2.0.0 be configured via hub.podSecurityContext.fsGroup." }} {{- end }} {{- if and .Values.singleuser.cloudMetadata.blockWithIptables (and .Values.singleuser.networkPolicy.enabled .Values.singleuser.networkPolicy.egressAllowRules.cloudMetadataServer) }} {{- $breaking = print $breaking "\n\nCHANGED: singleuser.cloudMetadata.blockWithIptables must as of version 3.0.0 not be configured together with singleuser.networkPolicy.egressAllowRules.cloudMetadataServer as it leads to an ambiguous configuration." }} {{- end }} {{- if $breaking }} {{- fail (print $breaking_title $breaking "\n\n") }} {{- end }}