Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/devfile/devworkspace-operator


https://github.com/devfile/devworkspace-operator

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

DevWorkspace operator

# DevWorkspace Operator

[![codecov](https://codecov.io/gh/devfile/devworkspace-operator/branch/main/graph/badge.svg)](https://codecov.io/gh/devfile/devworkspace-operator)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8258/badge)](https://www.bestpractices.dev/projects/8258)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/devfile/devworkspace-operator/badge)](https://securityscorecards.dev/viewer/?uri=github.com/devfile/devworkspace-operator)

DevWorkspace operator repository that contains the controller for the DevWorkspace Custom Resource. The Kubernetes API of the DevWorkspace is defined in the https://github.com/devfile/api repository.

## What is the DevWorkspace Operator?

A [Kubernetes Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) to run **fast**, **repeatable**
and **scalable** Cloud Development Environments.

[Install it](#devworkspace-operator-installation) and apply a DevWorkspace to create a Cloud Development Environment:

![dw apply demo](img/apply-demo.gif)

Get the Cloud Development Environment URI:

![dw get demo](img/get-demo.gif)

Open the IDE:

| Visual Studio Code | JetBrains IntelliJ |
| ------------- | ------------- |
| ![vscode](img/vscode.png) | ![intellij](img/intellij.png) |

## Example

Here is a sample `DevWorkspace` to provision a Cloud Development Environment for the project
[github.com/l0rd/outyet](https://github.com/l0rd/outyet) with Visual Studio Code as the editor and
`quay.io/devfile/universal-developer-image:ubi8-latest` as the development tooling container image.

![devworkspace](img/devworkspace.png)

#### DevWorkspace Template

The Template section of a `DevWorkspace` is actually [a Devfile](https://devfile.io/docs/2.3.0/what-is-a-devfile): the
`spec.template` schema matches the [Devfile schema](https://devfile.io/docs/2.3.0/devfile-schema). :warning: A few
`Devfile` APIs are
[not supported yet](https://github.com/devfile/devworkspace-operator/blob/main/docs/unsupported-devfile-api.adoc).

#### DevWorkspace Contributions

Contributions are extra `Templates` that are added on top of the main `DevWorkspaceTemplate`. Contributions are used to
inject editors such as Visual Studio Code and JetBrains. Contributions are defined as Devfile or DevWorkspace Templates.
Examples are the
[Visual Studio Code devfile](https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml)
and the
[JetBrains IntelliJ devfile](https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-idea/latest/devfile.yaml).

#### Additional configuration

DevWorkspaces can be further configured through DevWorkspace `attributes`, `labels` and `annotations`. For a list of all
options available, see [additional documentation](docs/additional-configuration.adoc).

## DevWorkspace Operator Installation

This section describes how to install the Operator on a cluster using the
[Operator Lifecycle Manager (OLM)](https://olm.operatorframework.io). The file [CONTRIBUTING.md](CONTRIBUTING.md) has
instructions to install the Operator, using the `Makefile`, without requiring OLM.

#### Installing the Operator Lifecycle Manager

The Operator Framework website has
[general instructions to install OLM in your cluster](https://olm.operatorframework.io/docs/getting-started/#installing-olm-in-your-cluster).
On [Minikube](https://minikube.sigs.k8s.io/), OLM is available as
[an addon](https://minikube.sigs.k8s.io/docs/commands/addons/).
OLM is pre-installed on OpenShift.

#### Adding the DevWorkspace Operator catalog source

If the DevWorkspace Operator is not already available amongst the `PackageManifests` (use command
`kubectl get packagemanifest -n olm | grep devworkspace` to check it) you should add a `CatalogSource` in the
cluster:

```bash
kubectl apply -f - <