modules/jupyter/jupyter_config/config-selfauth.yaml (109 lines of code) (raw):
# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This file can update the JupyterHub Helm chart's default configuration values.
#
# For reference see the configuration reference and default values, but make
# sure to refer to the Helm chart version of interest to you!
#
# Introduction to YAML: https://www.youtube.com/watch?v=cdLNKUoMc6c
# Chart config reference: https://zero-to-jupyterhub.readthedocs.io/en/stable/resources/reference.html
# Chart default values: https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/HEAD/jupyterhub/values.yaml
# Available chart versions: https://jupyterhub.github.io/helm-chart/
hub:
image:
name: us-docker.pkg.dev/ai-on-gke/jupyterhub-authentication-class/jupyter-auth-class
# This is the timestamp of the image, we should avoid using 'latest'
tag: 'sample-public-image-1741648202'
labels:
${indent(4, chomp(jsonencode(additional_labels)))}
config:
JupyterHub:
authenticator_class: ${authenticator_class}
GCPIAPAuthenticator:
header_name: 'X-Goog-IAP-JWT-Assertion'
project_id: '${project_id}'
namespace: '${namespace}'
service_name: '${service_name}'
project_number: '${project_number}'
Authenticator:
admin_users:
- admin
allowed_users:
- user
DummyAuthenticator:
password: ${password}
networkPolicy:
enabled: false
prePuller:
hook:
enabled: false
proxy:
labels:
${indent(4, chomp(jsonencode(additional_labels)))}
chp:
networkPolicy:
enabled: false
service:
type: ${service_type}
annotations:
beta.cloud.google.com/backend-config: '{"default": "${backend_config}"}'
traefik:
networkPolicy:
enabled: false
scheduling:
userScheduler:
enabled: false
singleuser:
memory:
limit: 32G
guarantee: 8G
cpu:
limit: 8
guarantee: 8
extraResource:
limits:
ephemeral-storage: ${ephemeral_storage}
guarantees:
ephemeral-storage: ${ephemeral_storage}
nodeSelector:
iam.gke.io/gke-metadata-server-enabled: "true"
extraEnv:
# Used for GCSFuse to set the ephemeral storage as the home directory. If not set, it will show a permission error on the pod log when using GCSFuse.
JUPYTER_ALLOW_INSECURE_WRITES: "true"
CLOUDSQL_INSTANCE_CONNECTION_NAME: ${cloudsql_instance_connection_name}
extraLabels:
${indent(4, chomp(jsonencode(additional_labels)))}
image:
name: ${notebook_image}
tag: ${notebook_image_tag}
startTimeout: 1000
extraAnnotations:
gke-gcsfuse/volumes: "true"
gke-gcsfuse/cpu-limit: "1"
gke-gcsfuse/memory-limit: 2Gi
gke-gcsfuse/ephemeral-storage-limit: 10Gi
serviceAccountName: ${k8s_service_account}
# Configure csi for gcsfuse
storage:
dynamic:
pvcNameTemplate: claim-{username}
extraVolumes:
- name: data-vol
csi:
driver: gcsfuse.csi.storage.gke.io
volumeAttributes:
bucketName: ${gcs_bucket}
mountOptions: "implicit-dirs,uid=1000,gid=100"
- name: secret-volume
secret:
secretName: ${secret_name}
optional: true
extraVolumeMounts:
- name: data-vol
mountPath: /data
- name: secret-volume
mountPath: /etc/secret-volume
readOnly: true
# More info on kubespawner overrides: https://jupyterhub-kubespawner.readthedocs.io/en/latest/spawner.html#kubespawner.KubeSpawner
# profile example:
# - display_name: "Learning Data Science"
# description: "Datascience Environment with Sample Notebooks"
# kubespawner_override:
# cpu_limit: .5
# cpu_guarantee: .5
# mem_limit: 1G
# mem_guarantee: 1G
# image: jupyter/datascience-notebook:2343e33dec46
# lifecycle_hooks:
# postStart:
# exec:
# command:
# - "sh"
# - "-c"
# - >
# gitpuller https://github.com/data-8/materials-fa17 master materials-fa;
profileList:
- display_name: "CPU"
description: "Creates CPU VMs as the compute for notebook execution."
profile_options:
storage:
display_name: "Storage"
choices:
DefaultStorage:
display_name: "DefaultStorage"
kubespawner_override:
default: true
default: true
cmd: null
cloudMetadata:
blockWithIptables: false
networkPolicy:
enabled: false