[stable/dask] Dask ingress (#16787)

* [stable/dask] Add ingress

Signed-off-by: Harald Haas <harald.haas@cloudpilots.com>

* [stable/dask] Update and lint dask/README.md

Signed-off-by: Harald Haas <harald.haas@cloudpilots.com>

* [stable/dask] Bump chart version to 3.1.0

Signed-off-by: Harald Haas <harald.haas@cloudpilots.com>

* [stable/dask] Fix missing EOF newline values.yaml

Signed-off-by: Harald Haas <harald.haas@cloudpilots.com>

* [stable/dask] fix default ingress tls secretName

Signed-off-by: Harald Haas <harald.haas@cloudpilots.com>

* [stable/dask] Add tls secretName to README and values
Signed-off-by: Harald Haas <harald.haas@cloudpilots.com>
This commit is contained in:
Harald Haas
2019-09-30 07:09:39 -07:00
committed by Kubernetes Prow Robot
parent b8b063784b
commit 1c90df1b53
5 changed files with 127 additions and 45 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
---
apiVersion: v1
name: dask
version: 3.0.0
version: 3.1.0
appVersion: 1.1.5
description: Distributed computation in Python with task scheduling
home: https://dask.org
+54 -44
View File
@@ -15,7 +15,7 @@ This chart will deploy the following:
- All using Kubernetes Deployments
> **Tip**: See the [Kubernetes Service Type Docs](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types)
for the differences between ClusterIP, NodePort, and LoadBalancer.
> for the differences between ClusterIP, NodePort, and LoadBalancer.
## Installing the Chart
@@ -35,50 +35,60 @@ their default values.
### Dask scheduler
| Parameter | Description | Default |
| -------------------------- | -------------------------| -----------------|
| `scheduler.name` | Dask scheduler name | `scheduler` |
| `scheduler.image` | Container image name | `daskdev/dask` |
| `scheduler.imageTag` | Container image tag | `1.1.5` |
| `scheduler.replicas` | k8s deployment replicas | `1` |
| `scheduler.tolerations` | Tolerations | `[]` |
| `scheduler.nodeSelector` | nodeSelector | `{}` |
| `scheduler.affinity` | Container affinity | `{}` |
| Parameter | Description | Default |
| ------------------------ | ----------------------- | -------------- |
| `scheduler.name` | Dask scheduler name | `scheduler` |
| `scheduler.image` | Container image name | `daskdev/dask` |
| `scheduler.imageTag` | Container image tag | `1.1.5` |
| `scheduler.replicas` | k8s deployment replicas | `1` |
| `scheduler.tolerations` | Tolerations | `[]` |
| `scheduler.nodeSelector` | nodeSelector | `{}` |
| `scheduler.affinity` | Container affinity | `{}` |
### Dask webUI
| Parameter | Description | Default |
|-----------------------|-------------------|-----------|
| `webUI.name` | Dask webui name | `webui` |
| `webUI.servicePort` | k8s service port | `80` |
| Parameter | Description | Default |
| --------------------------- | ---------------------------------- | -------------------- |
| `webUI.name` | Dask webui name | `webui` |
| `webUI.servicePort` | k8s service port | `80` |
| `webUI.ingress.enabled` | Enable ingress controller resource | false |
| `webUI.ingress.hostname` | Ingress resource hostnames | dask-ui.example.com |
| `webUI.ingress.tls` | Ingress TLS configuration | false |
| `webUI.ingress.secretName` | Ingress TLS secret name | `dask-scheduler-tls` |
| `webUI.ingress.annotations` | Ingress annotations configuration | null |
### Dask worker
| Parameter | Description | Default |
| ----------------------- | ---------------------------------| ---------------|
| `worker.name` | Dask worker name | `worker` |
| `worker.image` | Container image name | `daskdev/dask` |
| `worker.imageTag` | Container image tag | `1.1.5` |
| `worker.replicas` | k8s hpa and deployment replicas | `3` |
| `worker.resources` | Container resources | `{}` |
| `worker.tolerations` | Tolerations | `[]` |
| `worker.nodeSelector` | nodeSelector | `{}` |
| `worker.affinity` | Container affinity | `{}` |
| Parameter | Description | Default |
| --------------------- | ------------------------------- | -------------- |
| `worker.name` | Dask worker name | `worker` |
| `worker.image` | Container image name | `daskdev/dask` |
| `worker.imageTag` | Container image tag | `1.1.5` |
| `worker.replicas` | k8s hpa and deployment replicas | `3` |
| `worker.resources` | Container resources | `{}` |
| `worker.tolerations` | Tolerations | `[]` |
| `worker.nodeSelector` | nodeSelector | `{}` |
| `worker.affinity` | Container affinity | `{}` |
### Jupyter
| Parameter | Description | Default |
|-------------------------|----------------------------------|--------------------------|
| `jupyter.name` | Jupyter name | `jupyter` |
| `jupyter.enabled` | Include optional Jupyter server | `true` |
| `jupyter.image` | Container image name | `daskdev/dask-notebook` |
| `jupyter.imageTag` | Container image tag | `1.1.5` |
| `jupyter.replicas` | k8s deployment replicas | `1` |
| `jupyter.servicePort` | k8s service port | `80` |
| `jupyter.resources` | Container resources | `{}` |
| `jupyter.tolerations` | Tolerations | `[]` |
| `jupyter.nodeSelector` | nodeSelector | `{}` |
| `jupyter.affinity` | Container affinity | `{}` |
| Parameter | Description | Default |
| ----------------------------- | ---------------------------------- | ----------------------- |
| `jupyter.name` | Jupyter name | `jupyter` |
| `jupyter.enabled` | Include optional Jupyter server | `true` |
| `jupyter.image` | Container image name | `daskdev/dask-notebook` |
| `jupyter.imageTag` | Container image tag | `1.1.5` |
| `jupyter.replicas` | k8s deployment replicas | `1` |
| `jupyter.servicePort` | k8s service port | `80` |
| `jupyter.resources` | Container resources | `{}` |
| `jupyter.tolerations` | Tolerations | `[]` |
| `jupyter.nodeSelector` | nodeSelector | `{}` |
| `jupyter.affinity` | Container affinity | `{}` |
| `jupyter.ingress.enabled` | Enable ingress controller resource | false |
| `jupyter.ingress.hostname` | Ingress resource hostnames | dask-ui.example.com |
| `jupyter.ingress.tls` | Ingress TLS configuration | false |
| `jupyter.ingress.secretName` | Ingress TLS secret name | `dask-jupyter-tls` |
| `jupyter.ingress.annotations` | Ingress annotations configuration | null |
#### Jupyter Password
@@ -140,14 +150,14 @@ helm install --name my-release --set jupyter.enabled=false stable/dask
### Customizing Python Environment
The default `daskdev/dask` images have a standard Miniconda installation along
with some common packages like NumPy and Pandas. You can install custom packages
with either Conda or Pip using optional environment variables. This happens
when your container starts up.
with some common packages like NumPy and Pandas. You can install custom packages
with either Conda or Pip using optional environment variables. This happens
when your container starts up.
> **Note**: The `IP:PORT` of this chart's services will not be accessible until
extra packages finish installing. Expect to wait at least a minute for the
Jupyter Server to be accessible if adding packages below, like `numba`. This
time will vary depending on which extra packages you choose to install.
> extra packages finish installing. Expect to wait at least a minute for the
> Jupyter Server to be accessible if adding packages below, like `numba`. This
> time will vary depending on which extra packages you choose to install.
Consider the following YAML config as an example:
@@ -168,5 +178,5 @@ worker:
```
> **Note**: The Jupyter and Dask-worker environments should have matching
software environments, at least where a user is likely to distribute that
functionality.
> software environments, at least where a user is likely to distribute that
> functionality.
@@ -0,0 +1,27 @@
{{- if .Values.jupyter.ingress.enabled -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ template "dask.fullname" . }}-jupyter
labels:
app: {{ template "dask.fullname" . }}-jupyter
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations:
{{ toYaml .Values.jupyter.ingress.annotations | indent 4 }}
spec:
{{- if .Values.jupyter.ingress.tls }}
tls:
- hosts:
- {{ .Values.jupyter.ingress.hostname | quote }}
secretName: {{ .Values.jupyter.ingress.secretName | default (printf "%s-jupyter-tls" (include "dask.fullname" .)) }}
{{- end }}
rules:
- host: {{ .Values.jupyter.ingress.hostname }}
http:
paths:
- backend:
serviceName: {{ template "dask.fullname" . }}-jupyter
servicePort: {{ .Values.jupyter.servicePort }}
{{- end -}}
@@ -0,0 +1,27 @@
{{- if .Values.webUI.ingress.enabled -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ template "dask.fullname" . }}-scheduler
labels:
app: {{ template "dask.fullname" . }}-scheduler
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations:
{{ toYaml .Values.webUI.ingress.annotations | indent 4 }}
spec:
{{- if .Values.webUI.ingress.tls }}
tls:
- hosts:
- {{ .Values.webUI.ingress.hostname | quote }}
secretName: {{ .Values.webUI.ingress.secretName | default (printf "%s-scheduler-tls" (include "dask.fullname" .)) }}
{{- end }}
rules:
- host: {{ .Values.webUI.ingress.hostname }}
http:
paths:
- backend:
serviceName: {{ template "dask.fullname" . }}-scheduler
servicePort: {{ .Values.webUI.servicePort }}
{{- end -}}
+18
View File
@@ -30,6 +30,15 @@ scheduler:
webUI:
name: webui
servicePort: 80
ingress:
enabled: false
tls: false
# secretName: dask-scheduler-tls
hostname: dask-ui.example.com
annotations:
# kubernetes.io/ingress.class: "nginx"
# secretName: my-tls-cert
# kubernetes.io/tls-acme: "true"
worker:
name: worker
@@ -95,3 +104,12 @@ jupyter:
tolerations: []
nodeSelector: {}
affinity: {}
ingress:
enabled: false
tls: false
# secretName: dask-jupyter-tls
hostname: dask-jupyter.example.com
annotations:
# kubernetes.io/ingress.class: "nginx"
# secretName: my-tls-cert
# kubernetes.io/tls-acme: "true"