Comments (11)
Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! ๐ค
If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively.
You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! ๐
Welcome to the Jupyter community! ๐
from zero-to-jupyterhub-k8s.
Hey @consideRatio , can I work on this and submit a pr ? I think this would greatly benfit the community , Let me know what you think !
from zero-to-jupyterhub-k8s.
Hey @jash2105, thank you for investing your time in this project and JupyterHub ecosystem of open-source software!!
- Provide step-by-step instructions on setting up JupyterHub using FluxCD/ArgoCD for resource and configuration reconciliation.
๐ I think it would be great to provide docs to complement existing docs with details that enable readers to deploy the helm chart with FluxCD or ArgoCD in dedicated sections.
I suspect it makes sense to have separate pages for FluxCD and ArgoCD, but if they require very similar where they share more content than they differ they could live on the same page.
Note that we have some past discussions of relevance about ArgoCD, for example:
- This helm chart makes use of
lookup
function in the chart's templates, but that requires template rendering to be done with interaction against the k8s api-server - but tools like ArgoCD may do it in isolation beforehand. This was clarified in #2887 (comment), where adjustments like #2887 (comment) could be needed.
I'm not sure where to put the docs, but maybe under Installing JupyterHub with ArgoCD
under Setup JupyterHub
, below:
. Alternatively, a section in the administration section about adjusting the deployment to be deployed with ArgoCD instead of helm
perhaps?
- Include practical configurations for a multi-user, highly available JupyterHub environment suitable for enterprise-level deployment, especially those requiring substantial GPU resources.
I'd appreciate if you focus on for example ArgoCD and/or FluxCD initially. The GPU topic is a complicated topic, so if documentation is to improve with regards to GPU things I'd like such contribution to be isolated and focused without coupling to other pieces. This makes review effort easier and that makes PRs get merged in general.
If there are GPU related notes specific to ArgoCD, I suggest considering those separately as well as a less complicated contribution to help deploy with ArgoCD without GPU is a valuable contribution by itself.
- Offer comprehensive debugging documentation to assist teams in quickly resolving issues.
There are some general debugging docs. If there are specific ArgoCD debugging details, they can be part of an ArgoCD section - but otherwise I think we should try to build on the general debugging docs.
Btw if you write for example about ArgoCD, try to be aware about what ArgoCD is already documenting. The more we can link out to their docs to explain something, the easier the docs are to maintain long term as ArgoCD makes changes etc.
from zero-to-jupyterhub-k8s.
Absolutely, your overview is very thorough. Hereโs my proposed timeline for the documentation process:
-
Initial Documentation: I plan to start with FluxCD, focusing initially on a straightforward installation guide that covers the basic setup without any custom configurations. This will include detailed steps on how to bootstrap a cluster using GitHub or GitLab with Flux, followed by a basic Helm chart installation. The goal is to establish a minimal viable setup with the necessary pods and services, along with some preliminary debugging steps.
-
Review and Iteration: Once the initial documentation is complete, Iโll submit it for review. Based on the feedback, I can make any necessary revisions.
-
Subsequent Documentation: Continuing from there, I'll create additional pull requests to gradually expand our documentation. This will include guides on customizing resources, integrating GPU support, and replicating the setup with Argo.
Does this sequence of steps fit well with our overall strategy? Please let me know if there are any adjustments youโd like me to consider or if there are specific areas you think we should prioritize.
from zero-to-jupyterhub-k8s.
Argocd focuses on git-ops style deployments. What do you think about having the instructions, scripts and manifests in your own repository, and linking to them from the Z2JH docs? One challenge with having all docs in a single repo is it's not possible to automatically test them, it can be a pain for people to copy and paste code, and things can therefore easily get out of sync.
What might be particularly nice in a standalone repo is to have live manifests, and perhaps you could even deploy your own Argocd cluster in GitHub CI, and deploy the Z2JH config?
from zero-to-jupyterhub-k8s.
Thank you @jash2105 for planning this so clearly!
I didn't expect the "boottrap" part of "bootstrap a cluster using GitHub or GitLab with Flux" - but I may misunderstood you. I expected something like "how to deploy of the jupyterhub chart with Flux" under the assumption flux is already used to deploy things into an existing cluster. Maybe a github repository is required to be setup for this, but not a cluster using Flux?
I'm trying to ensure the scope of what is to be documented is sufficiently related to deploying the jupyterhub chart, because anything introduced in this project - even if its documentation - will require long term attention in its maintenance. If we document too much beyond whats relevant to deploy the jupyterhub chart, the project takes on too much long term maintenance burden.
I realize I can't guide this so clearly because I don't know Flux or Argo, but there should be a line drawn somewhere to focus on how to deploy this chart with Flux/Argo, as compared to how to work with Flux/Argo in general.
from zero-to-jupyterhub-k8s.
@consideRatio, I agree with your assessment. Starting with bootstrapping a cluster might indeed be excessive and could shift the focus too heavily onto Flux or similar CD tools. Instead, I propose initiating our efforts by deploying JupyterHub using Flux. This will be covered in my first PR. Subsequent updates can introduce enhancements such as custom deployment configurations, GPU resources, and eventually ArgoCD integration. Since I haven't set up ArgoCD on my cluster yet, we can prioritize Flux in the initial phase and then explore ArgoCD later on. Does this approach sound good to you? If so, you can expect a PR from me within the next few days or the coming week!
And to answer your question , yes, we are not setting up a cluster; we will just be setting up a git repository where we store all our manifests. And if we make any changes , the cluster will automatically recognize that and make those changes to the existing deployment.
from zero-to-jupyterhub-k8s.
@manics, are you suggesting that the documentation could potentially cause issues? I wouldn't expect that to be the case. Also, I agree with you about storing the plain manifests in a repository, whether it's mine or another. These manifests could serve as useful references. Moreover, having custom documentation alongside referring directly to the complete manifest could streamline the process, similar to how we handle the documentation and values.yaml file when deploying with Helm.
from zero-to-jupyterhub-k8s.
I don't think it'll cause issues, it's more that I think from a maintainability perspective it may be easier to have a separate repo with docs, manifests, and potentially CI workflows combined.
I think it could also be easier for readers too, it's a lot easier to tightly integrate manifests and docs in their own repo since it won't be constrained by the existing docs layout. If someone wants to reproduce your steps they could just clone the repo, this isn't so practical if you have to clone the whole Z2JH repo and search through subdirectories.
from zero-to-jupyterhub-k8s.
@manics, I see your point about the issue requiring a fundamental restructuring of the repository. Given this, I propose continuing with the current PR. As we develop the GitOps documentation, if we formulate a plan by then, we could consider a comprehensive overhaul of the existing repositories. Does this sound like a viable approach to you?
from zero-to-jupyterhub-k8s.
#3407
@consideRatio @manics , I worked on a basic install config. Expect more prs incoming with other gitops tools and more configs in the following time to come. Thanks!
from zero-to-jupyterhub-k8s.
Related Issues (20)
- In June 2024 or later - drop support for k8s 1.26
- Helm chart option to switch prePuller to Always HOT 3
- All oauth users not being allowed by default HOT 4
- Suggestion: Allow memory requirements and limits within a ProfileList without using kubespawner_override HOT 1
- Impossible to deploy in a specific namespace HOT 5
- Document deploying JupyterHub to Jetstream2 using Kubernetes and ClusterAPI HOT 3
- iptables or kernel needs to upgraded HOT 8
- `singleuser.cloudMetadata.blockWithIptables` to fail with better error messages HOT 1
- Can I use Email instead of UPN as a login method to the jupyter hub servers HOT 3
- Open forum about user server pre-startup security patch script
- Z2JH 3.3.0 is broken - pycurl issues with certificates
- Regression for `singleuser.cloudMetadata.blockWithIptables` in z2jh 3.3.0 and 3.3.1 - workaround in 3.3.2 HOT 1
- Cull jupyter-user pods that were started before hub restart HOT 3
- JupyterHub 3+ would block internal DNS by default? HOT 7
- resource request behavior difference within Z2jh 1.2 and2.0 HOT 1
- Planning for release 4.0 with JupyterHub 5.0 HOT 5
- GKE Deployment with gvisor fails with Cloud DNS but not with kube-dns HOT 4
- 403 Forbidden XSRF cookie does not match POST argument after updating to the latest helm chart version (3.3.7) HOT 8
- User not able to login after Admin edits the user name from admin panel HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zero-to-jupyterhub-k8s.