Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Spike] Determine what is needed to make dask-gateway a toggleable option in basehub #4087

Closed
3 tasks
Tracked by #4109
yuvipanda opened this issue May 15, 2024 · 3 comments
Closed
3 tasks
Tracked by #4109
Assignees

Comments

@yuvipanda
Copy link
Member

yuvipanda commented May 15, 2024

(Prior work in #3252).

As part of https://github.com/2i2c-org/meta/issues/1105, we want to offer the possibility of dask-gateway along with the binderhub UI. This requires us to enable both the binderhub-service chart and the dask-gateway chart. We can currently do this because our daskhub inherits from basehub, but it means we need to make the determination of dask-gateway or not at the very beginning. It would be useful to instead move to a fully composable model, where we can toggle this on and off as needed.

This spike is to investigate what is needed for this to be done. The outcome of this would be a more detailed report in #3252

  • Schedule - Figure out who needs to be apart of this and the duration for the spike
  • Do the spike
  • Report the outcome
@yuvipanda
Copy link
Member Author

I had an idea while showering yesterday, so am going to explore this a little bit and report back.

yuvipanda added a commit to yuvipanda/pilot-hubs that referenced this issue Jun 18, 2024
I have timeboxed myself to 30min, and I have verified that this
gives us a fairly seamless migration pathway for existing installations
of daskhub (no re-install needed), and allows us to mix multiple
dependencies (primarily binderhub-service and dask-gateway) more
easily. It does this by taking the following two actions:

- Make dask-gateway a conditional dependency of basehub,
  rather than daskhub
- Move all remaining daskhub/values.yaml config into basehub,
  either under dask-gateway, or under an extraConfig that's enabled
  conditionally (via `custom.daskGateway.enabled`)

The end result here is that `daskhub` is now a stub that is
*completely empty*, and simply passes through to basehub! So basehub
is where *all* the action is, and `daskhub` is a simple backwards
compatible passthrough.

I've tested this on the openscapes staging hub and verified that
everything works as it should! I only had to make the following
three config additions:

1. Set `basehub.dask-gateway.enabled` to `true`
2. Set `basehub.jupyterhub.custom.daskGateway.enabled` to `true`.
3. Set `basehub.jupyterhub.singleuser.cloudMetadata.blockWithIptables` to
   `true`. We may not need this, but I didn't want to investigate that in
   this spike.

Remaining things to do to complete this migration:

- [ ] Remove *all* references to `daskhub` in our deployer code.
      If something needs to know if dask-gateway is enabled, it
      should check for `basehub.dask-gateway.enabled`
- [ ] Make appropriate config changes to all existing daskhub
      installations so this is a seamless transition.
- [ ] Document the fact that some of our existing hub config
      will have a `daskhub` moniker as a historical artifact. I
      think the additional minor cognitive overhead is totally
      worth the fact that we won't have to re-install any hubs!

Ref 2i2c-org#4087
@yuvipanda
Copy link
Member Author

Outcome reported in #4240

@yuvipanda
Copy link
Member Author

yuvipanda commented Jun 18, 2024

Given @GeorgianaElena's comments in #4240, I think we can mark this as done - as the goal of this spike was to find information.

GeorgianaElena pushed a commit to yuvipanda/pilot-hubs that referenced this issue Jun 27, 2024
I have timeboxed myself to 30min, and I have verified that this
gives us a fairly seamless migration pathway for existing installations
of daskhub (no re-install needed), and allows us to mix multiple
dependencies (primarily binderhub-service and dask-gateway) more
easily. It does this by taking the following two actions:

- Make dask-gateway a conditional dependency of basehub,
  rather than daskhub
- Move all remaining daskhub/values.yaml config into basehub,
  either under dask-gateway, or under an extraConfig that's enabled
  conditionally (via `custom.daskGateway.enabled`)

The end result here is that `daskhub` is now a stub that is
*completely empty*, and simply passes through to basehub! So basehub
is where *all* the action is, and `daskhub` is a simple backwards
compatible passthrough.

I've tested this on the openscapes staging hub and verified that
everything works as it should! I only had to make the following
three config additions:

1. Set `basehub.dask-gateway.enabled` to `true`
2. Set `basehub.jupyterhub.custom.daskGateway.enabled` to `true`.
3. Set `basehub.jupyterhub.singleuser.cloudMetadata.blockWithIptables` to
   `true`. We may not need this, but I didn't want to investigate that in
   this spike.

Remaining things to do to complete this migration:

- [ ] Remove *all* references to `daskhub` in our deployer code.
      If something needs to know if dask-gateway is enabled, it
      should check for `basehub.dask-gateway.enabled`
- [ ] Make appropriate config changes to all existing daskhub
      installations so this is a seamless transition.
- [ ] Document the fact that some of our existing hub config
      will have a `daskhub` moniker as a historical artifact. I
      think the additional minor cognitive overhead is totally
      worth the fact that we won't have to re-install any hubs!

Ref 2i2c-org#4087
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant