Chapter 1. Preparing the installation To prepare a OpenShift Dev Spaces installation, learn about the OpenShift Dev Spaces ecosystem and deployment constraints: Section 1.1, "Supported platforms" Section 1.2, "Installing the dsc management tool" Section 1.3, "Architecture" Section 1.4, "Calculating Dev Spaces resource requirements" Section 3.1, "Understanding the CheCluster Custom Resource" 1.1. Supported platforms OpenShift Dev Spaces runs on OpenShift 4.12-4.16 on the following CPU architectures: AMD64 and Intel 64 ( x86_64 ) IBM Power ( ppc64le ) and IBM Z ( s390x ) Additional resources OpenShift Documentation 1.2. Installing the dsc management tool You can install dsc , the Red Hat OpenShift Dev Spaces command-line management tool, on Microsoft Windows, Apple MacOS, and Linux. With dsc , you can perform operations the OpenShift Dev Spaces server such as starting, stopping, updating, and deleting the server. Prerequisites Linux or macOS. Note For installing dsc on Windows, see the following pages: https://developers.redhat.com/products/openshift-dev-spaces/download https://github.com/redhat-developer/devspaces-chectl Procedure Download the archive from https://developers.redhat.com/products/openshift-dev-spaces/download to a directory such as USDHOME . Run tar xvzf on the archive to extract the /dsc directory. Add the extracted /dsc/bin subdirectory to USDPATH . Verification Run dsc to view information about it. Additional resources " dsc reference documentation " 1.3. 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 , and PersistentVolumes . 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 Section 1.3.1, "Server components" Section 1.3.1.2, "Dev Workspace operator" Section 1.3.2, "User workspaces" Dev Workspace Operator repository Kubernetes documentation - Custom Resources 1.3.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 Section 1.3.1.1, "Dev Spaces operator" Section 1.3.1.2, "Dev Workspace operator" Section 1.3.1.3, "Gateway" Section 1.3.1.4, "User dashboard" Section 1.3.1.5, "Devfile registries" Section 1.3.1.6, "Dev Spaces server" Section 1.3.1.7, "Plug-in registry" 1.3.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: Section 1.3.1.2, "Dev Workspace operator" Section 1.3.1.3, "Gateway" Section 1.3.1.4, "User dashboard" Section 1.3.1.5, "Devfile registries" Section 1.3.1.6, "Dev Spaces server" Section 1.3.1.7, "Plug-in registry" Additional resources Section 3.1, "Understanding the CheCluster Custom Resource" Chapter 2, Installing Dev Spaces 1.3.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 Devfile API repository 1.3.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: Section 1.3.1.4, "User dashboard" Section 1.3.1.5, "Devfile registries" Section 1.3.1.6, "Dev Spaces server" Section 1.3.1.7, "Plug-in registry" Section 1.3.2, "User workspaces" Figure 1.3. OpenShift Dev Spaces gateway interactions with other components Additional resources Section 3.10, "Managing identities and authorizations" 1.3.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 needs access to: Section 1.3.1.5, "Devfile registries" Section 1.3.1.6, "Dev Spaces server" Section 1.3.1.7, "Plug-in registry" OpenShift API 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.3.1.5, "Devfile registries" , when the user is creating a workspace from a code sample. Sends the repository URL to Section 1.3.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.3.1.7, "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.3.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.3.1.4, "User dashboard" displays the samples list on the Dashboard Create Workspace page. Each sample includes a Devfile v2. The OpenShift Dev Spaces deployment starts one devfile registry instance in the devfile-registry deployment. Figure 1.5. Devfile registries interactions with other components Additional resources Devfile v2 documentation devfile registry latest community version online instance OpenShift Dev Spaces devfile registry repository 1.3.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: Git service providers OpenShift API Figure 1.6. OpenShift Dev Spaces server interactions with other components Additional resources Section 3.3.2, "Advanced configuration options for Dev Spaces server" 1.3.1.7. 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.3.1.4, "User dashboard" is reading the content of the registry. Figure 1.7. Plugin registries interactions with other components Additional resources Editor definitions in the OpenShift Dev Spaces plugin registry repository Plugin registry latest community version online instance 1.3.2. User workspaces Figure 1.8. 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.9. OpenShift Dev Spaces workspace components In the diagram, there is one running workspaces. 1.4. 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. Note The following link to an example devfile is a pointer to material from the upstream community. This material represents the very latest available content and the most recent best practices. These tips have not yet been vetted by Red Hat's QE department, and they have not yet been proven by a wide user group. Please, use this information cautiously. It is best used for educational and 'developmental' purposes rather than 'production' purposes. Procedure Identify the workspace resource requirements which depend on the devfile that is used for defining the development environment. This includes identifying the workspace components explicitly specified in the components section of the devfile. Here is an example devfile with the following components: Example 1.1. tools The tools component of the devfile defines the following requests and limits: memoryLimit: 6G memoryRequest: 512M cpuRequest: 1000m cpuLimit: 4000m Example 1.2. postgresql The postgresql component does not define any requests and limits and therefore falls back on the defaults for the dedicated container: memoryLimit: 128M memoryRequest: 64M cpuRequest: 10m cpuLimit: 1000m During the workspace startup, an internal che-gateway container is implicitly provisioned with the following requests and limits: memoryLimit: 256M memoryRequest: 64M cpuRequest: 50m cpuLimit: 500m Calculate the sums of the resources required for each workspace. If you intend to use multiple devfiles, repeat this calculation for every expected devfile. Example 1.3. Workspace requirements for the example devfile in the step Purpose Pod Container name Memory limit Memory request CPU limit CPU request Developer tools workspace tools 6 GiB 512 MiB 4000 m 1000 m Database workspace postgresql 128 MiB 64 MiB 1000 m 10 m OpenShift Dev Spaces gateway workspace che-gateway 256 MiB 64 MiB 500 m 50 m Total 6.4 GiB 640 MiB 5500 m 1060 m Multiply the resources calculated per workspace by the number of workspaces that you expect all of your users to run simultaneously. Calculate the sums of the requirements for the OpenShift Dev Spaces Operator, Operands, and Dev Workspace Controller. Table 1.1. Default requirements for the OpenShift Dev Spaces Operator, Operands, and Dev Workspace Controller 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 GiB 512 MiB 1000 m 100 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 1000 m 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 MiB 32 MiB 500 m 100 m Plugin registry plugin-registry plugin-registry 256 MiB 32 MiB 500 m 100 m Dev Workspace Controller Manager devworkspace-controller-manager devworkspace-controller 1 GiB 100 MiB 1000 m 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 20 MiB 200 m 100 m Dev Workspace Operator Catalog devworkspace-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 GiB 1.2 GiB 6.9 1.3 Additional resources What is a devfile Benefits of devfile Devfile customization overview

Commands:
dsc
memoryLimit: 6G memoryRequest: 512M cpuRequest: 1000m cpuLimit: 4000m
memoryLimit: 128M memoryRequest: 64M cpuRequest: 10m cpuLimit: 1000m
memoryLimit: 256M memoryRequest: 64M cpuRequest: 50m cpuLimit: 500m