Chapter 1. Preparing the installation
To prepare a OpenShift Dev Spaces installation, learn about OpenShift Dev Spaces ecosystem and deployment constraints:
1.1. Supported platforms
OpenShift Dev Spaces runs on OpenShift 4.10 and 4.11 on the following CPU architectures:
-
AMD64 and Intel 64 (
x86_64
) -
IBM Power (
ppc64le
) and IBM Z (s390x
)
Additional resources
1.2. Architecture
Figure 1.1. High-level OpenShift Dev Spaces architecture with the Dev Workspace operator
OpenShift Dev Spaces runs on three groups of components:
- OpenShift Dev Spaces server components
- Manage User project and workspaces. The main component is the User dashboard, from which users control their workspaces.
- Dev Workspace operator
-
Creates and controls the necessary OpenShift objects to run User workspaces. Including
Pods
,Services
, andPeristentVolumes
. - User workspaces
- Container-based development environments, the IDE included.
The role of these OpenShift features is central:
- Dev Workspace Custom Resources
- Valid OpenShift objects representing the User workspaces and manipulated by OpenShift Dev Spaces. It is the communication channel for the three groups of components.
- OpenShift role-based access control (RBAC)
- Controls access to all resources.
Additional resources
1.2.1. Server components
The OpenShift Dev Spaces server components ensure multi-tenancy and workspaces management.
Figure 1.2. OpenShift Dev Spaces server components interacting with the Dev Workspace operator
Additional resources
1.2.1.1. Dev Spaces operator
The OpenShift Dev Spaces operator ensure full lifecycle management of the OpenShift Dev Spaces server components. It introduces:
CheCluster
custom resource definition (CRD)-
Defines the
CheCluster
OpenShift object. - OpenShift Dev Spaces controller
- Creates and controls the necessary OpenShift objects to run a OpenShift Dev Spaces instance, such as pods, services, and persistent volumes.
CheCluster
custom resource (CR)On a cluster with the OpenShift Dev Spaces operator, it is possible to create a
CheCluster
custom resource (CR). The OpenShift Dev Spaces operator ensures the full lifecycle management of the OpenShift Dev Spaces server components on this OpenShift Dev Spaces instance:
1.2.1.2. Dev Workspace operator
The Dev Workspace operator extends OpenShift to provide Dev Workspace support. It introduces:
- Dev Workspace custom resource definition
- Defines the Dev Workspace OpenShift object from the Devfile v2 specification.
- Dev Workspace controller
- Creates and controls the necessary OpenShift objects to run a Dev Workspace, such as pods, services, and persistent volumes.
- Dev Workspace custom resource
- On a cluster with the Dev Workspace operator, it is possible to create Dev Workspace custom resources (CR). A Dev Workspace CR is a OpenShift representation of a Devfile. It defines a User workspaces in a OpenShift cluster.
Additional resources
1.2.1.3. Gateway
The OpenShift Dev Spaces gateway has following roles:
- Routing requests. It uses Traefik.
- Authenticating users with OpenID Connect (OIDC). It uses OpenShift OAuth2 proxy.
- Applying OpenShift Role based access control (RBAC) policies to control access to any OpenShift Dev Spaces resource. It uses `kube-rbac-proxy`.
The OpenShift Dev Spaces operator manages it as the che-gateway
Deployment.
It controls access to:
Figure 1.3. OpenShift Dev Spaces gateway interactions with other components
Additional resources
1.2.1.4. User dashboard
The user dashboard is the landing page of Red Hat OpenShift Dev Spaces. OpenShift Dev Spaces users browse the user dashboard to access and manage their workspaces. It is a React application. The OpenShift Dev Spaces deployment starts it in the devspaces-dashboard
Deployment.
It need access to:
Figure 1.4. User dashboard interactions with other components
When the user requests the user dashboard to start a workspace, the user dashboard executes this sequence of actions:
- Collects the devfile from the Section 1.2.1.5, “Devfile registries”, when the user is creating a workspace from a code sample.
- Sends the repository URL to Section 1.2.1.6, “Dev Spaces server” and expects a devfile in return, when the user is creating a workspace from a remote devfile.
- Reads the devfile describing the workspace.
- Collects the additional metadata from the Section 1.2.1.8, “Plug-in registry”.
- Converts the information into a Dev Workspace Custom Resource.
- Creates the Dev Workspace Custom Resource in the user project using the OpenShift API.
- Watches the Dev Workspace Custom Resource status.
- Redirects the user to the running workspace IDE.
1.2.1.5. Devfile registries
Additional resources
The OpenShift Dev Spaces devfile registries are services providing a list of sample devfiles to create ready-to-use workspaces. The Section 1.2.1.4, “User dashboard” displays the samples list on the Dashboard devfile-registry
deployment.
Figure 1.5. Devfile registries interactions with other components
Additional resources
1.2.1.6. Dev Spaces server
The OpenShift Dev Spaces server main functions are:
- Creating user namespaces.
- Provisioning user namespaces with required secrets and config maps.
- Integrating with Git services providers, to fetch and validate devfiles and authentication.
The OpenShift Dev Spaces server is a Java web service exposing an HTTP REST API and needs access to:
- Section 1.2.1.7, “PostgreSQL”
- Git service providers
- OpenShift API
Figure 1.6. OpenShift Dev Spaces server interactions with other components
Additional resources
1.2.1.7. PostgreSQL
OpenShift Dev Spaces server uses the PostgreSQL database to persist user configurations such as workspaces metadata.
The OpenShift Dev Spaces deployment starts a dedicated PostgreSQL instance in the postgres
Deployment. You can use an external database instead.
Figure 1.7. PostgreSQL interactions with other components
1.2.1.8. Plug-in registry
Each OpenShift Dev Spaces workspace starts with a specific editor and set of associated extensions. The OpenShift Dev Spaces plugin registry provides the list of available editors and editor extensions. A Devfile v2 describes each editor or extension.
The Section 1.2.1.4, “User dashboard” is reading the content of the registry.
Figure 1.8. Plugin registries interactions with other components
1.2.2. User workspaces
Figure 1.9. User workspaces interactions with other components
User workspaces are web IDEs running in containers.
A User workspace is a web application. It consists of microservices running in containers providing all the services of a modern IDE running in your browser:
- Editor
- Language auto-completion
- Language server
- Debugging tools
- Plug-ins
- Application runtimes
A workspace is one OpenShift Deployment containing the workspace containers and enabled plugins, plus related OpenShift components:
- Containers
- ConfigMaps
- Services
- Endpoints
- Ingresses or Routes
- Secrets
- Persistent Volumes (PV)
A OpenShift Dev Spaces workspace contains the source code of the projects, persisted in a OpenShift Persistent Volume (PV). Microservices have read-write access to this shared directory.
Use the devfile v2 format to specify the tools and runtime applications of a OpenShift Dev Spaces workspace.
The following diagram shows one running OpenShift Dev Spaces workspace and its components.
Figure 1.10. OpenShift Dev Spaces workspace components
In the diagram, there is one running workspaces.
1.3. Calculating Dev Spaces resource requirements
The OpenShift Dev Spaces Operator, Dev Workspace Controller, and user workspaces consist of a set of pods. The pods contribute to the resource consumption in CPU and memory limits and requests. Learn how to calculate resources, such as memory and CPU, required to run Red Hat OpenShift Dev Spaces.
Procedure
Identify the workspace components explicitly specified in the
components
section of your devfile. When this section is empty, OpenShift Dev Spaces only loads the implicit components.Table 1.1. Devfile specified workspace components memory requirements Purpose Pod Container name Memory limit Memory request CPU limit CPU request Your developer tools
workspace
Total
Identify the implicit workspace components that OpenShift Dev Spaces loads: developer tools, editor, and OpenShift Dev Spaces gateway.
Table 1.2. Implicit workspace components default requirements Purpose Pod Container name Memory limit Memory request CPU limit CPU request Developer tools
workspace
universal-developer-image
1 GiB
256 MiB
500 m
30 m
Editor
workspace
che-code
128 MiB
32 MiB
500 m
30 m
OpenShift Dev Spaces gateway
workspace
che-gateway
256 Mi
64 Mi
500 m
50 m
Total
2.4 GiB
480 MiB
1.5
110 m
- Sum up the resources required for each workspace, and multiply them by the running workspaces count.
Sum up the server components requirements.
Table 1.3. OpenShift Dev Spaces server components default requirements Purpose Pod name Container names Memory limit Memory request CPU limit CPU request OpenShift Dev Spaces operator
devspaces-operator
devspaces-operator
256 MiB
64 MiB
500 m
100 m
OpenShift Dev Spaces Server
devspaces
devspaces-server
1 Gi
512 MiB
1
1 m
OpenShift Dev Spaces Dashboard
devspaces-dashboard
-
devspaces-dashboard
256 MiB
32 MiB
500 m
100 m
OpenShift Dev Spaces Gateway
devspaces-gateway
traefik
4 GiB
128 MiB
1
100 m
OpenShift Dev Spaces Gateway
devspaces-gateway
configbump
256 MiB
64 MiB
500 m
50 m
OpenShift Dev Spaces Gateway
devspaces-gateway
oauth-proxy
512 MiB
64 MiB
500 m
100 m
OpenShift Dev Spaces Gateway
devspaces-gateway
kube-rbac-proxy
512 MiB
64 MiB
500 m
100 m
Devfile registry
devfile-registry
devfile-registry
256 Mi
32 Mi
500 m
100 m
Plugin registry
plugin-registry
plugin-registry
256 Mi
32 Mi
500 m
100 m
PostgreSQL database
postgres
postgres
1 Gi
512 Mi
500 m
100 m
Dev Workspace Controller Manager
devworkspace-controller-manager
devworkspace-controller
1 GiB
100 MiB
1
250 m
Dev Workspace Controller Manager
devworkspace-controller-manager
kube-rbac-proxy
N/A
N/A
N/A
N/A
Dev Workspace webhook server
devworkspace-webhook-server
webhook-server
300 MiB
29 MiB
200 m
100 m
Dev Workspace Operator Catalog
registry-server
N/A
50 MiB
N/A
10 m
Dev Workspace Webhook Server
devworkspace-webhook-server
webhook-server
300 MiB
20 MiB
200 m
100 m
Dev Workspace Webhook Server
devworkspace-webhook-server
kube-rbac-proxy
N/A
N/A
N/A
N/A
Total
9.5 GiB
1.6 GiB
7.4
2.31
-