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 Switch - Endgame Plan #20830

Closed
41 tasks done
l0rd opened this issue Nov 25, 2021 · 24 comments
Closed
41 tasks done

DevWorkspace Switch - Endgame Plan #20830

l0rd opened this issue Nov 25, 2021 · 24 comments
Labels
kind/enhancement A feature request - must adhere to the feature request template. kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. roadmap/3-months Epics that are planned to complete in the short term (within 3 months)

Comments

@l0rd
Copy link
Contributor

l0rd commented Nov 25, 2021

Is your enhancement related to a problem? Please describe

This epic is supposed to replace the DevWorkspace STEP 3 milestone. It lists the issues required to switch from the che-server to the DevWorkspace, as well as the acceptance criteria to check .

ACCEPTANCE CRITERIA

Green field deployment and configuration

  • DONE OperatorHub stable channel uses “all-namespace” install mode (one instance per cluster). Channel stable is the only channel for Che. It’s NOT possible to disable DevWorspaces. Kubernetes 1.21 (OCP 4.8) or higher is required
  • DONE Latest upstream DevWorkspace Operator is deployed by Che operator
  • DONE Keycloak is NOT managed anymore: on Kubernetes Dex is deployed, on OpenShift no extra auth component is deployed
  • DONE chectl commands that interact with che-server or related to devfile v1 are removed
  • DONE On platforms other than minikube and OpenShift an OIDC provider is a prerequisite to deploy Che (on minikube chectl deploys dex automatically, on OCP the integrated OAuth service is used)

Upgrading an existing instance

  • DONE Existing Che instances are NOT upgraded automatically (even when using chectl)
  • DONE Upgrading an existing Che instance is possible following some manual steps
  • DONE During the upgrade all users workspaces are stopped
  • DONE Backup feature is not available
  • DONE After the upgrade existing devfilev1-based workspaces are disabled in Dashboard and can only be migrated

Dashboard and "Getting started"

  • DONE "Getting Started" samples contain a devfile v2.1 at their root
  • DONE All “Getting Started” devfiles use the same tag of the Universal Developer Image
  • DONE All "Getting Started" are distributed as zipfile and with a pre-processed DevWorkspace CR using Theia as an editor (JetBrains and VS Code will be included in future releases)
  • DONE “Getting Started” are labelled “community”
  • DONE A workspace can be started from an devfile URL or from a GitHub/Gitlab/BitBucket repository URL
  • DONE The path of the devfile, the branch, the IDE, the creation strategy are configurable using URL parameters (deployment labels/annotations and devfile metadata/attributes cannot be configured yet, will be in future releases)
  • DONE It is possible to edit the devfile of an existing workspace from the Dashboard
  • DONE It is possible to configure Che to use external devfile and plugin registries

Workspace startup

  • DONE Factory flow: both devfile spec v2.1.0 and v1.0.0 are supported. The old v1.0.0 spec is supported through a v1 to v2 conversion on the fly
  • DONE Starting a workspace from a Git repo without a devfile is supported: the default workspace uses Che-Theia with no plugins as the editor and the Universal Developer Image as the develpment/tooling container

Workspaces features

  • DONE Java, Go, NodeJS, Python, .NET language server and debug adapter work as expected
  • DONE Theia built-in plugins work as expected except SSH, OpenShift Authentication and GitHub authentication that will be fixed in future releases
  • Installing VS Code extension from Theia work as expected - in progress
  • DONE When upgrading Che the version of the default editor of a workspace is updated after a restart
  • DONE Workspace Idling works for Theia based workspaces (idling for JetBrains and VS Code IDEs will be supported in future releases)
  • DONE The 3 storage types persistent, ephemeral and asynchronous are supported

Enterprise features

  • DONE Starting a workspace from a git repo behind proxy works and the project is cloned successfully
  • DONE Starting a workspace from a git repo using an untrusted certificate is supported and the project is cloned successfully
  • DONE Airgap scenarios are supported (installation, update, offline devfile sample projects from zip, plugins)
  • DONE It is possible to configure Che to use an external OpenID Connect provider
  • DONE It is possible to configure Che to use an external Postgres database
  • DONE Che integrates with the DevConsole through the creation of a ConsoleLink that enables Che URLs in topology view
  • DONE OpenShift trusted certificates bundle is propagation to Che workspaces

Telemetry

  • DONE Telemetry Plugin support in DevWorkspaces (workspaces started with the DevWorkspace engine)

Monitoring

  • DONE Minimal monitoring support with relevant documentation for configuring Prometheus / Grafana dashboards.

Documentation, website, and blog

TASKS

Deployment

Upgrading an existing instance

DevWorkspace

Dashboard

Monitoring

Plugins

Devfiles

Che-server

OUT OF SCOPE (ADDRESSED IN FUTURE RELEASES / ORDERED BY PRIORITY)

@l0rd l0rd added the kind/enhancement A feature request - must adhere to the feature request template. label Nov 25, 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 Nov 25, 2021
@l0rd l0rd added kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. and removed status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. labels Nov 26, 2021
@l0rd
Copy link
Contributor Author

l0rd commented Nov 30, 2021

@skabashnyuk @azatsarynnyy @svor @tolusha if you haven't yet please update the TASKS with your milestone 3 issues
@dmytro-ndp please review the acceptance criteria

@tolusha
Copy link
Contributor

tolusha commented Dec 1, 2021

done

@dmytro-ndp
Copy link
Contributor

dmytro-ndp commented Dec 1, 2021

Hello Mario,

A couple of notices to consider:

  1. and Theia with no plugins and no looks incomplete
  2. Will Eclipse Che 7.41.0 support DevWorkspace disabled mode?
  3. What is the target infra to deploy? Is it minikube (using helm), openshift 4.x using chectl or OperatorHub, ocp 3.11 ?

Next capabilities look also critical / blocker, IMHO:

  1. Section "Green field deployment and configuration":
  • Cascaded user removal
  1. Section "Upgrading an existing instance":
  1. Section "Dashboard and "Getting started" features":
  • external & internal devfile registries
  • "editor" factory parameter
  1. Section "Workspace startup feature":
  • Starting a workspace from zipped project stored in devfile registry
  • 3 storage types: persistent, ephemeral, asynchronous
  1. Section "Workspaces features":
  • Custom .vsix plugins support
  • User secrets in workspace
  • OpenShift connector plugin support
  1. Section "Enterprise feature":
  • External database / SSO server support
  • DevConsole integration
  • Git with self sign certificates
  • Propagation of the trusted bundle CA certificates to the workspaces
  • multi-platform support (Build and publish multi-platform developer images #20862)
  • Intellij IDEA editor support
  • Image puller

@l0rd
Copy link
Contributor Author

l0rd commented Dec 1, 2021

Thank you @dmytro-ndp, this is great.

@dmytro-ndp
Copy link
Contributor

@l0rd: it's clear that we are going to support conversion of workspaces with devfile v1, linked to github projects, to devfile v2 (an issue #20784).

How about conversion of workspaces with devfiles v1, which have been obtained code from zipped project, keeping source code in persistent storage and devfile content in Che PostgreSQL database ?
AFAIK, we are going to stop such workspaces (an issue #20631).

What will user be needed to do in order to start such devfile v1 workspace again after DevWorkspace switch?

@nickboldt
Copy link
Contributor

nickboldt commented Dec 2, 2021

I don't think we need to worry about workspaces loaded from sample project code (dashboard devfile tiles).

But we DO need a story for these two possible paths when updating to 2.15 / DW enabled:

  • make it 💯 clear that the update to 2.15 will break access to existing workspaces (so SAVE NOW or LOSE IT!), and/or
  • provide a way to get data out of the postgres db where dirty workspace changes are persisted

If we can't warn users / admins clearly enough that turning on DW will prevent access to unsaved workspace changes... then we need that second option.

@benoitf
Copy link
Contributor

benoitf commented Dec 2, 2021

How about conversion of workspaces with devfiles v1, which have been obtained code from zipped project, keeping source code in persistent storage and devfile content in Che PostgreSQL database ?

Converting che-server workspaces should use the 'stored definition/model' so there is no specific 'zip project case'

@dmytro-ndp
Copy link
Contributor

dmytro-ndp commented Dec 2, 2021

@benoitf: I meant zipped project case like:

projects:
  - name: jboss-eap-quickstart
    source:
      location: 'https://devfile-registry-crw-crwctl.apps.ocp49.crw-qe.com/resources/jboss-eap-bootable-jboss-eap-quickstart-xp-2.0.x.zip'
      type: zip

@benoitf
Copy link
Contributor

benoitf commented Dec 2, 2021

@dmytro-ndp I still don't see why it's a particular case.

@dmytro-ndp
Copy link
Contributor

dmytro-ndp commented Dec 2, 2021

@benoitf: it's about non-factory flow, when devfile content is created in User Dashboard and stored into Che PostreSQL database.

About zip project type https://www.eclipse.org/che/docs/che-7/end-user-guide/authoring-devfiles-version-1/#adding-projects-to-a-devfile_che

git
Projects with sources in Git. The location points to a clone link.

github
Same as git but for projects hosted on GitHub only. Use git for projects that do not use GitHub-specific features.

zip
Projects with sources in a .zip archive. Location points to a .zip file.

AFAIK, converter v1 > v2 works with factory flow only, when user starting workspace using factory URL, and with project type github in devfile.

I am curious about how conversion v1 > v2 will work for workspaces without project, or with project without devfile.yml in source code.

@benoitf
Copy link
Contributor

benoitf commented Dec 2, 2021

AFAIK, converter v1 > v2 works with factory flow only, when user starting workspace using factory URL, and with project >type github in devfile.

I am curious about how conversion v1 > v2 will work for workspaces without project, or with project without devfile.yml in source code.

The converter library takes a devfile v1 object as input so you can convert a devfile of an existing workspace (no matter of git, github or zip)

@nickboldt nickboldt added the roadmap/3-months Epics that are planned to complete in the short term (within 3 months) label Dec 2, 2021
@nickboldt
Copy link
Contributor

Maybe he's asking about dirty workspaces w/ code that was previously imported from the v1 devfile?

I assume for devfile samples listed in the Dashboard, there's no expectation that dirty workspace changes to a sample project will be persisted / supported after conversion to v2.1.

And for fresh workspaces created from new samples... well, they'll use the v2.1 devfiles instead, and will import the project from whatever is specified (git, zip, etc.)

But I suppose the UX challenge here is that if an ADMINISTRATOR performs the steps to manually update from CRW 2.14 / Che 7.40 (devworkspace disabled) to CRW 2.15 / Che 7.42 (devworkspace enabled) there's no way to communicate to USERS that all their old workspaces (be they personal, custom, or from a sample in the devfile registry) will be inaccessible after the switch is flipped to enable DW, and no way for users after the fact to access any unsaved changes.

So maybe we can mitigate this with a big warning in the CSV text of the 7.42/2.15 operator reminding admins that there's no way to go backwards and re-open workspaces that have been cut off after the switch to enable devworkspace?

@dmytro-ndp
Copy link
Contributor

The converter library takes a devfile v1 object as input so you can convert a devfile of an existing workspace (no matter of git, github or zip)

@benoitf: let's say I have workspace v1 with zip project.
How should I apply converter library to convert it to v2?

@benoitf
Copy link
Contributor

benoitf commented Dec 2, 2021

@dmytro-ndp #20845 ?

@dmytro-ndp
Copy link
Contributor

dmytro-ndp commented Dec 3, 2021

@l0rd: will Eclipse Che continue supporting DevWorkspace disabled mode (with devfile v1, and back conversion v2 > v1) from 7.41.0?

@l0rd
Copy link
Contributor Author

l0rd commented Dec 4, 2021

@dmytro-ndp no it won't be supported anymore.

@dmytro-ndp
Copy link
Contributor

@l0rd: could you, please, say, if there will by multi-host support in DevWorkspace, or there will be single-host support only?

@l0rd
Copy link
Contributor Author

l0rd commented Dec 7, 2021

@dmytro-ndp single-host only

@dmytro-ndp
Copy link
Contributor

@l0rd: will DevWorkspace Step 3 support analytics plugins for java, NodeJs and Python?

@l0rd
Copy link
Contributor Author

l0rd commented Jan 10, 2022

@l0rd: will DevWorkspace Step 3 support analytics plugins for java, NodeJs and Python?

@dmytro-ndp that should works as it doesn't use che-server API. @svor can you confirm?

@svor
Copy link
Contributor

svor commented Jan 10, 2022

@l0rd: will DevWorkspace Step 3 support analytics plugins for java, NodeJs and Python?

@dmytro-ndp that should works as it doesn't use che-server API. @svor can you confirm?

It should work

@dmytro-ndp
Copy link
Contributor

@l0rd, @svor: thanks for the answer!

@SkorikSergey: cc ^^

@nickboldt nickboldt modified the milestones: 7.42, 7.43 Jan 12, 2022
@l0rd l0rd modified the milestones: 7.43, 7.44 Feb 3, 2022
@benoitf benoitf modified the milestones: 7.44, 7.45 Feb 28, 2022
@benoitf benoitf modified the milestones: 7.45, 7.46 Mar 17, 2022
@nickboldt
Copy link
Contributor

Starting a workspace from a Git repo without a devfile is supported: the default workspace uses Che-Theia with no plugins as the editor and the Universal Developer Image as the develpment/tooling container

Attempted this with Che dogfood cluster + https://che-dogfooding.apps.che-dev.x6e0.p1.openshiftapps.com/#https://github.com/redhat-developer/devspaces-images

Does not seem like the UDI image is available on workspace load -- I only get one choice for a terminal, and it doesn't know what java is. Also, it's an Alpine container, not a UBI8 based UDI image.

bash-5.1$ java -version
bash: java: command not found

bash-5.1$ cat /etc/motd
Welcome to Alpine!
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki.alpinelinux.org/>.
You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
bash-5.1$ 

image

@l0rd
Copy link
Contributor Author

l0rd commented Apr 28, 2022

Closing this issue. The switch to DevWorkspace operator happened in Che v7.42 release.

@l0rd l0rd closed this as completed Apr 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement A feature request - must adhere to the feature request template. kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. roadmap/3-months Epics that are planned to complete in the short term (within 3 months)
Projects
None yet
Development

No branches or pull requests

7 participants