Daskhub-flavored Jupyterhub deployment configuration for argocd. THIS REPO IS NO LONGER OPERATIONAL.
This is a demonstration sandbox.
To begin, you need to have argocd deployed on a cluster. If it is not already deployed, you can do so with
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type jsonThis sets up argocd for minimalist and dev envrionments, to be interacted with through the argocd CLI.
NOTE: For each of the following deployment workflows, if deploying with daskhub version 2021.6.0 or earlier, you will also need to pass the parameter override daskhub.jupyterhub.proxy.secretToken. You will need to pass this parameter following your first upgrade to 2021.6.1 or later, but afterwards you no longer need the parameter override. See https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/main/CHANGELOG.md#highlights.
Deploy the app fresh, using automated syncing, with argocd from the CLI with:
export JHUB_LOADBALANCERIP="127.0.0.1"
export JHUB_HOSTS="{fakewebsite.com}"
export JHUB_CLIENTID="abc999"
export JHUB_CLIENTSECRET="cba666"
export JHUB_CALLBACKURL="https://fakewebsite.com/hub/oauth_callback"
export DASK_APITOKEN="xyz111"
export DEPLOY_NAMESPACE="daskhub"
export DEPLOY_REVISION="v1.2.3"
kubectl create namespace $DEPLOY_NAMESPACE
argocd app create daskhub \
--repo https://github.com/RhodiumGroup/daskhub-rhg-config.git \
--revision $DEPLOY_REVISION \
--path daskhub-rhg \
--values values.yaml \
--values values-prod.yaml \
--values values-users.yaml \
--parameter daskhub.jupyterhub.proxy.service.loadBalancerIP=$JHUB_LOADBALANCERIP \
--parameter daskhub.jupyterhub.proxy.https.hosts=$JHUB_HOSTS \
--parameter daskhub.jupyterhub.hub.config.GitHubOAuthenticator.client_id=$JHUB_CLIENTID \
--parameter daskhub.jupyterhub.hub.config.GitHubOAuthenticator.client_secret=$JHUB_CLIENTSECRET \
--parameter daskhub.jupyterhub.hub.config.GitHubOAuthenticator.oauth_callback_url=$JHUB_CALLBACKURL \
--parameter daskhub.jupyterhub.hub.services.dask-gateway.apiToken=$DASK_APITOKEN \
--parameter daskhub.dask-gateway.gateway.auth.jupyterhub.apiToken=$DASK_APITOKEN \
--dest-server https://kubernetes.default.svc \
--dest-namespace $DEPLOY_NAMESPACE \
--sync-policy automated \
--auto-prune \
--self-heal \
--port-forward-namespace argocdThis will automatically sync to to git tag "v1.2.3". When a new tag is created, you can set the app to sync to this tag with
argocd app set daskhub --revision <new-tag> --port-forward-namespace argocdAlternatively, you can deploy an app tracking the main branch with
export JHUB_LOADBALANCERIP="127.0.0.1"
export JHUB_HOSTS="{fakewebsite-dev.com}"
export JHUB_CLIENTID="abc999"
export JHUB_CLIENTSECRET="cba666"
export JHUB_CALLBACKURL="https://fakewebsite-dev.com/hub/oauth_callback"
export DASK_APITOKEN="xyz111"
export DEPLOY_NAMESPACE="daskhub-dev"
kubectl create namespace $DEPLOY_NAMESPACE
argocd app create daskhub-dev \
--repo https://github.com/RhodiumGroup/daskhub-rhg-config.git \
--revision main \
--path daskhub-rhg \
--values values.yaml \
--values values-dev.yaml \
--values values-users.yaml \
--parameter daskhub.jupyterhub.proxy.service.loadBalancerIP=$JHUB_LOADBALANCERIP \
--parameter daskhub.jupyterhub.proxy.https.hosts=$JHUB_HOSTS \
--parameter daskhub.jupyterhub.hub.config.GitHubOAuthenticator.client_id=$JHUB_CLIENTID \
--parameter daskhub.jupyterhub.hub.config.GitHubOAuthenticator.client_secret=$JHUB_CLIENTSECRET \
--parameter daskhub.jupyterhub.hub.config.GitHubOAuthenticator.oauth_callback_url=$JHUB_CALLBACKURL \
--parameter daskhub.jupyterhub.hub.services.dask-gateway.apiToken=$DASK_APITOKEN \
--parameter daskhub.dask-gateway.gateway.auth.jupyterhub.apiToken=$DASK_APITOKEN \
--dest-server https://kubernetes.default.svc \
--dest-namespace $DEPLOY_NAMESPACE \
--sync-policy automated \
--auto-prune \
--self-heal \
--port-forward-namespace argocdThis uses dev environment values for the helm chart and deploys to a daskhub-dev namespace.