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

[devworkspace] How to handle configuration spread across DWO, WTO and DWCO #19326

Closed
Tracked by #19538
metlos opened this issue Mar 18, 2021 · 4 comments
Closed
Tracked by #19538
Labels
area/che-operator Issues and PRs related to Eclipse Che Kubernetes Operator engine/devworkspace Issues related to Che configured to use the devworkspace controller as workspace engine. kind/enhancement A feature request - must adhere to the feature request template. severity/P1 Has a major impact to usage or development of the system.

Comments

@metlos
Copy link
Contributor

metlos commented Mar 18, 2021

Abbreviations used:

WTO - web terminal operator
DWCO - devworkspace che operator (considered merged with che operator)
DWO - devworkspace operator

This is recap of possible solutions to our problem of configuring multiple operators using a single(-ish) source of truth. I personally prefer the 3rd variant - contextual config of DWO - but we should discuss all the alternatives and pick the one that suited best to our whole "ecosystem".

Handling configuration across components

Constraints

  • ideally, single "devworkspace environment" in the cluster (e.g. no support for multiple "che clusters")
  • devworkspace operator needs to also handle webterminal
  • configure only "user facing" operators (WTO, DWCO) and cascading the config to the lower level operator(s), if possible
  • We don't know the order in which the user installs WTO and DWCO

Possible solutions

Configuration spread across configuration of individual operators

Pros:

  • conceptually simple
  • separation of concerns

Cons:

  • because there is a single config of DWO, WTO and DWCO have to share the same configuration for those "lower level details"
  • configuration spread across several places
  • reduced UX because the user needs to remember/learn where pieces of configuration are placed

Lower level operator (DWO) configured through the higher level operator that installed it (WTO or DWCO)

Configuration of WTO and DWCO are superets of configuration of DWO. The operator that installs DWO has enough permissions
to configure DWO. The other operator cannot configure DWO and needs to somehow communicate that to the user.

Pros:

  • only top level operators are configured by the user

Cons:

  • might be confusing for the user, because the place of configuration depends on the order of installation of the top level operators

Contextual lower level configuration based on the source of config (WTO, DWCO)

Configuration of WTO and DWCO are supersets of configuration of DWO. There exists multiple copies of configuration for DWO
each containing specifics for the respective top level operator. This would be handled by a new CRD and the CRs would be owned the respective top-level operator deployments.

At workspace reconciliation time, DWO would pick the configuration to use based on routingClass of the Devworkspace being deployed (or maybe label or some other attribute that we need to add to the schema).

Top level operators would contain all the configuration and would cascade the DWO portions to the contextual CR they own.

Pros:

  • Each top-level operator can have a truly standalone configuration
  • conceptually simple
  • Allows for independent workspace hosts per top-level operator (e.g. wto.cluster.com/ws1 and dwco.cluster.com/ws2)

Cons:

  • Most work
  • DWO configuration needs to exist for each top level, possibly needlessly copied
@metlos metlos added kind/enhancement A feature request - must adhere to the feature request template. area/che-operator Issues and PRs related to Eclipse Che Kubernetes Operator engine/devworkspace Issues related to Che configured to use the devworkspace controller as workspace engine. labels Mar 18, 2021
@che-bot che-bot added the status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. label Mar 18, 2021
@nickboldt nickboldt added severity/P1 Has a major impact to usage or development of the system. and removed status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. labels Mar 19, 2021
@nickboldt
Copy link
Contributor

Seems like something we should figure out sooner rather than later, so setting P1. Will this be in the next sprint?

@sleshchenko
Copy link
Member

I personally prefer the 3rd variant - contextual config of DWO

I think it can be considered as #1 from #19189 (comment)

@nickboldt
Copy link
Contributor

Related issue: https://issues.redhat.com/browse/CRW-1730

@l0rd l0rd removed this from the DevWorkspace Integration - STEP3 milestone Sep 8, 2021
@l0rd
Copy link
Contributor

l0rd commented Sep 8, 2021

After this week dw cabal discussion we decided to close this issue as it's not relevant anymore.

@l0rd l0rd closed this as completed Sep 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/che-operator Issues and PRs related to Eclipse Che Kubernetes Operator engine/devworkspace Issues related to Che configured to use the devworkspace controller as workspace engine. kind/enhancement A feature request - must adhere to the feature request template. severity/P1 Has a major impact to usage or development of the system.
Projects
None yet
Development

No branches or pull requests

5 participants