Skip to content

Commit

Permalink
feat(new architecture): add che with devworkspace architecture articles
Browse files Browse the repository at this point in the history
Signed-off-by: mloriedo <mario.loriedo@gmail.com>
  • Loading branch information
l0rd committed Jul 5, 2021
1 parent 53bfd20 commit ff27847
Show file tree
Hide file tree
Showing 13 changed files with 136 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions modules/administration-guide/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* xref:che-architecture-overview.adoc[]
** xref:che-workspace-controller.adoc[]
** xref:che-workspaces-architecture.adoc[]
** xref:che-architecture-overview-with-dw.adoc[]

* xref:calculating-che-resource-requirements.adoc[]

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[id="che-architecture-overview-with-dw"]
// = Che architecture with DevWorkspace
:navtitle: Future Che architecture
:keywords: administration-guide, che-architecture-overview
:page-aliases: .:che-architecture-overview-with-dw, .:high-level-che-architecture-with-dw, overview:high-level-che-architecture-with-dw, administration-guide:high-level-che-architecture-with-dw

include::partial$con_che-architecture-overview-with-dw.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[id="che-workspace-controller-with-dw"]
// = Che workspace controller with DevWorkspace
:navtitle: Che workspace controller
:keywords: administration-guide, che-workspace-controller
:page-aliases: .:che-workspace-controller-with-dw

include::partial$assembly_understanding-che-workspace-controller-with-dw.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[id="che-workspaces-architecture-with-dw"]
// = Che Workspace components with DevWorkspace Operator
:navtitle: Che workspaces architecture
:keywords: administration-guide, che-workspaces-architecture, devworkspace
:page-aliases: .:che-workspaces-architecture-with-dw

include::partial$assembly_understanding-che-workspaces-architecture-with-dw.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@


:parent-context-of-understanding-che-workspace-controller-with-dw: {context}

[id="understanding-{prod-id-short}-workspace-controller_{context}-with-dw"]
= Understanding {prod-short} server-side components with the DevWorkspace Operator

:context: understanding-{prod-id-short}-workspace-controller-with-dw

include::partial$con_che-workspace-controller-with-dw.adoc[leveloffset=+1]

include::partial$con_devworkspace-operator.adoc[leveloffset=+1]

include::partial$con_che-server.adoc[leveloffset=+1]

include::partial$con_che-user-dashboard.adoc[leveloffset=+1]

include::partial$con_che-devfile-registry.adoc[leveloffset=+1]

include::partial$con_che-plug-in-registry.adoc[leveloffset=+1]

include::partial$con_che-postgresql.adoc[leveloffset=+1]

:context: {parent-context-of-understanding-che-workspace-controller-with-dw}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@


:parent-context-of-understanding-che-workspaces-architecture-with-dw: {context}

[id="understanding-{prod-id-short}-workspaces-architecture_{context}-with-dw"]
= Understanding {prod-short} workspace components with the DevWorkspace Operator

:context: understanding-{prod-id-short}-workspaces-architecture-with-dw

include::partial$con_che-workspaces-architecture-with-dw.adoc[leveloffset=+1]


include::partial$assembly_che-workspace-components.adoc[leveloffset=+1]


include::partial$con_che-workspace-creation-flow.adoc[leveloffset=+1]


:context: {parent-context-of-understanding-che-workspaces-architecture-with-dw}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[id="{prod-id-short}-architecture-overview-with-dw_{context}"]
= {prod-short} architecture when using the DevWorkspace Operator

{prod-short} default workspace engine is still the {prod-id-short}-server but from v.7.28.0 of {prod-short} an administrator can configure {prod-short} to use another workspace engine: the https://github.com/devfile/devworkspace-operator[DevWorkspace {orch-name} Operator]. With this new workspace engine configured, {prod-short} workspaces are valid {orch-name} objects and inherit the characteristics of such objects: managed with the {orch-name} API and secured through RBAC. This section describes the architecture of {prod-short} with the DevWorkspace {orch-name} Operator as the workspace engine. This will eventually become the default architecture when the DevWorkspace will reach feature parity with {prod-id-short}-server. Until then an administrator has to explicitly configure {prod-id-short} to use the DevWorkspace following the instructions in xref:installation-guide:enabling-dev-workspace-engine.adoc[this article].

{prod} components, with the DevWorkspace Operator enabled, are:

* A workspace server: an always-running service that manages user workspaces through the DevWorkspace Operator.
* DevWorkspace Operator: the DevWorkspace Custom Resource Definition and the associated controller that extend {orch-name} and provide DevWorkpaces native support.
* User workspaces: container-based IDEs that the server stops when the user stops coding.

.High-level {prod-short} architecture
image::administration-guide:architecture/{project-context}-architecture-with-dw.png[]

When {prod-short} is installed on a {platforms-name} cluster, the workspace server and the DevWorkspace Operator are deployed. A {prod-short} workspace is created immediately after a user requests it.

.Additional resources

* xref:administration-guide:che-workspace-controller-with-dw.adoc[]
* xref:administration-guide:che-workspaces-architecture-with-dw.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

[id="{prod-id-short}-workspace-controller-with-dw_{context}"]
= {prod-short} server and the DevWorkspace Operator

The {prod-short} server and the DevWorkspace Operator are the two central server-side components of {prod-short}. Together it manages {prod-short} workspaces: container-based development environments.

NOTE: When {prod-short} uses the DevWorkspace Operator, it can only be configured in **multi-user** mode: multi-tenant and secured development environments.

NOTE: When {prod-short} uses the DevWorkspace Operator, {identity-provider} is not a requirement anymore. On vanilla Kubernetes, {prod-short} can be configured to use any OpenID Connect (OIDC) provider (the default is https://dexidp.io/[Dex]). On OpenShift, {prod-short} uses the available OpenShift OAuth v2 service.

The following diagram shows the different server-side components of {prod-short}.

.{prod-short} workspaces controller
image::architecture/workspaces-server-and-devworkspace.png[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[id="{prod-id-short}-workspaces-architecture-with-dw_{context}"]
= {prod-short} workspaces components with the DevWorkspace Operator

A {prod-short} deployment on a {orch-name} cluster consists of the {prod-short} server-side components and several additional Pods hosting workspaces. The {prod-short} server orchestrates the lifecycle of those workspaces, which consist of one or more containers running an IDE with its plug-ins, development tools and the application runtime dependencies.

The {prod-short} workspace is composed by microservices running in containers to provide the features of a modern IDE running in your browser.

The source code of the projects of a {prod-short} workspace is persisted in a {platforms-name} `PersistentVolume`. Microservices run in containers that have read-write access to the source code (IDE services, development tools), and runtime applications have read-write access to this shared directory.

The following diagram shows the detailed components of a {prod-short} workspace.

.{prod-short} workspace components
image::architecture/workspace-components-with-dw.png[]

In the diagram, there is one running workspaces.

Use the devfile format to specify the tools and runtime applications of a {prod-short} workspace.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Module included in the following assemblies:
//
// {prod-id-short}-workspace-controller-with-dw


[id="devworkspace-operator_{context}"]
= DevWorkspace Operator

The DevWorkspace is an Operator that extends the {kubernetes} API to manage DevWorkspaces custom resources. It's written in Go and the API interface is automatically generated from the https://github.com/devfile/api[Devfile] specification.

[cols=2*]
|===
| Source code
| link:https://github.com/devfile/devworkspace-operator[DevWorkspace Operator repository]

| Container image
| `quay.io/devfile/devworkspace-controller`

|===

0 comments on commit ff27847

Please sign in to comment.