Open sgibson91 opened 5 years ago
Could we create a "federation template"? E.g. fill out these YAML files, the values that are already filled are what the BinderHub Federation expects for a consistent UX, blank fields are for your own keys/subdomains/other.
There's some duplicated config between each binderhub.... is there enough in common to be worth having a common config which each binderhub overrides as necessary?
The easiest way to achieve that would be to put the common config in mybinder/values.yaml
. It'd be interesting to know the rest of the team's opinion on that.
I was thinking of a common config in this repo and take advantage of Helm's ability to merge multiple configs (latest takes precedence)
Could we create a "federation template"? E.g. fill out these YAML files, the values that are already filled are what the BinderHub Federation expects for a consistent UX, blank fields are for your own keys/subdomains/other.
At UC Berkeley, we use an internal cookiecutter for this. See http://docs.datahub.berkeley.edu/en/latest/howto/new-hub.html for docs, and https://github.com/berkeley-dsep-infra/datahub/tree/staging/deployments/template for our template.
I was thinking of a common config in this repo and take advantage of Helm's ability to merge multiple configs (latest takes precedence)
Would that work given that the travis file updates a cluster at a time due to the different auth requirements?
Thanks @yuvipanda, that looks very cool!
Would that work given that the travis file updates a cluster at a time due to the different auth requirements?
I image so... deploy.py already passes multiple configs to Helm: https://github.com/jupyterhub/mybinder.org-deploy/blob/cd7fb5b6839d0c17c42500eb7faec198337bdaac/deploy.py#L136-L138
Ah, yes sorry. My brain wasn't present when I wrote that!
What do you mean with "template for the federation"?
Looking at https://github.com/jupyterhub/mybinder.org-deploy/blob/master/config/prod.yaml I think an individual cluster probably doesn't need the following top level keys: static, proxyPatches, redirector, matomo, gcsProxy or federationRedirect.
I'd definitely run a prometheus instance (so we can add it as a data source to grafana.mybinder.org). A local grafana is probably a good idea as well but can get away without one.
Off the top of my head I don't know if we need https://github.com/jupyterhub/mybinder.org-deploy/blob/master/config/ovh/ovh_mybinder_org_ingress.yaml or not. I thought listing the hostname inn the ingress already defined in ovh.yaml
would be enough.
What do you mean with "template for the federation"?
I mean a blank config file that can just be filled in to add a new cluster to the federation. It contains only the necessary keys required. Something like:
binderhub:
config:
hub_url: PUT_YOUR_JUPYTERHUB_URL_HERE
registry:
url: PUT_YOUR_REGISTRY_URL_HERE
etc...
I'm making a lot of assumptions around what's in the OVH deployment being "correct" and "necessary".
I'd definitely run a prometheus instance (so we can add it as a data source to grafana.mybinder.org). A local grafana is probably a good idea as well but can get away without one.
Is there a recommended guide on how to set this up?
You will get a basic grafana and prometheus via the mybinder chart as that chart depends on those two. Was more thinking out loud which of the top level keys should and shouldn't be copied/are relevant.
The best we have is looking at the OVH config and the gke config. There are differences which are part "gke" vs "ovh" and part "gke does stuff that other federation members don't do". Which is annoying but :-/
Yeah, I'd be happy documenting those differences somewhere for the next federation member :)
One action to take would be to refactor the deployment configs so we have one prod.yaml
that is applied to every member and then have a gke.yaml
, turing.yaml
, ovh.yaml
with their specific overrides.
(paraphrasing a gitter chat with @minrk)
This issue has been mentioned on Jupyter Community Forum. There might be relevant details there:
https://discourse.jupyter.org/t/how-can-i-support-mybinder-org/4692/4
As I'm working through adding the Turing to the Federation, I thought I'd create a checklist of the technical things that need to happen and maybe we can have a discussion on the minimum configuration needed too (e.g. what to do about grafana, matomo, etc.).
Please feel free to add to or expand the below!
Checklist
In a branch/fork of the
mybinder.org-deploy
repo:config
with your BinderHub configuration.secrets/config
with secret configurationdeploy.py
if
/elif
statement inmain
handling your clustersecrets
deploy.py
to.travis.yml
Questions
config/<deployment>/<deployment>_mybinder_org_ingress.yaml
file necessary? What's its purpose?binder.mybinder.ovh
toovh.mybinder.org
. If managing your own subdomain, this will be required.Other important stuff
deploy.py
args:kube-dns
orcoredns
?secrets/ban.py
may have trouble.