diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 000000000..77393ae30 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,10 @@ +# Installation Guide for DevWorkspace Operator + +- **Kind** + - [Installation on Kind Without OLM (Linux)](installation/kind-without-olm-linux.md) + - [Installation on Kind Without OLM (MacOs)](installation/kind-without-olm-macos.md) +- **Minikube** + - [Installation on Minikube Without OLM](installation/minikube-without-olm.md) +- **OpenShift** + - [Installation on OpenShift With OLM](installation/openshift-with-olm.md) + - [Installation on OpenShift Without OLM](installation/openshift-without-olm.md) diff --git a/docs/installation/kind-without-olm-linux.md b/docs/installation/kind-without-olm-linux.md new file mode 100644 index 000000000..ca6a976f9 --- /dev/null +++ b/docs/installation/kind-without-olm-linux.md @@ -0,0 +1,192 @@ +# Installation on Kind Without OLM (Linux) + +## Prerequisites + +Before you begin, ensure you have the following tools installed: + +* **kubectl:** The Kubernetes command-line tool. +* **kind:** A tool for running Kubernetes locally using Docker. +* **Docker** (as a container runtime) + +## Steps + +### 1. Create Kind Cluster with Extra Port Mappings + +Create a Kind cluster with port mappings for HTTP and HTTPS traffic: + +```sh +cat <`. You will use this IP in the next step. + +#### 6.2 Create the DevWorkspaceOperatorConfig + +Create the `DevWorkspaceOperatorConfig` resource, replacing `` with the IP you obtained in the previous step: + +```bash +kubectl apply -f - <.nip.io" +EOF +``` + +### 7. Create a Sample DevWorkspace + +Create a sample DevWorkspace: + +```bash +kubectl apply -f - < +``` diff --git a/docs/installation/kind-without-olm-macos.md b/docs/installation/kind-without-olm-macos.md new file mode 100644 index 000000000..d430b72c3 --- /dev/null +++ b/docs/installation/kind-without-olm-macos.md @@ -0,0 +1,231 @@ +# Installation on Kind Without OLM (MacOs) + +## Prerequisites + +Before you begin, ensure you have the following tools installed: + +* **kubectl:** The Kubernetes command-line tool. +* **kind:** A tool for running Kubernetes locally using Docker. +* **OrbStack** (as a container runtime) + +## Steps + +### 1. Create Kind Cluster + +Create a Kind cluster: + +```sh +kind create cluster +``` + +### 2. Install MetalLB + +Install MetalLB using the provided manifest: + +```sh +kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-native.yaml +``` + +Wait until the MetalLB pods are ready: + +```sh +kubectl wait --namespace metallb-system \ + --for=condition=ready pod \ + --selector=app=metallb \ + --timeout=90s +``` + +### 3. Define MetalLB IP Address Pool + +Inspect the Docker network to find the subnet range: + +```sh +docker network inspect kind +``` + +In the output, look for the `Subnet` entry (e.g., `"Subnet": "192.168.97.0/24"`). Then, define an IP address pool using a range within that subnet. + +**Note:** The Subnet will be different on your host, please use your own Subnet! +For example if you have `"Subnet": "192.168.97.0/24"`, then it could be `192.168.97.100-192.168.97.110`. + +Apply the IP address pool and L2 advertisement: + +```sh +kubectl apply -f - <`. + +#### 8.2 Create the DevWorkspaceOperatorConfig + +Create the `DevWorkspaceOperatorConfig` resource, replacing `` with the IP you obtained in the previous step: + +```sh +kubectl apply -f - <.nip.io" +EOF +``` + +### 9. Create a Sample DevWorkspace + +Create a sample DevWorkspace: + +```sh +kubectl apply -f - < +``` diff --git a/docs/installation/minikube-without-olm.md b/docs/installation/minikube-without-olm.md new file mode 100644 index 000000000..1745ae38c --- /dev/null +++ b/docs/installation/minikube-without-olm.md @@ -0,0 +1,158 @@ +# Installation on Minikube Without OLM + +## Prerequisites + +Before you begin, ensure you have the following tools installed: + +* **kubectl:** The Kubernetes command-line tool. +* **minikube:** A tool for running Kubernetes locally. + +## Steps + +### 1. Start Minikube + +Make sure Minikube is running: + +```sh +minikube start +``` + +### 2. Ingress Addon + +Enable the Ingress Addon: + +```sh +minikube addons enable ingress +``` + +### 3. Create Namespace + +Create a dedicated namespace for the DevWorkspace Controller: + +```sh +kubectl create namespace devworkspace-controller +``` + +### 4. Install cert-manager + +Install cert-manager using the provided manifest: + +```sh +kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.2/cert-manager.yaml +``` + +Wait until cert-manager pods are ready: + +```sh +kubectl wait --namespace cert-manager \ + --timeout 90s \ + --for=condition=ready pod \ + --selector=app.kubernetes.io/instance=cert-manager +``` + +### 5. Install the DevWorkspace Operator + +Install the DevWorkspace Operator from the given URL: + +```sh +kubectl apply -f https://github.com/devfile/devworkspace-operator/raw/refs/tags/v0.32.0/deploy/deployment/kubernetes/combined.yaml +``` + +Wait until the DevWorkspace Operator pods are ready: + +```sh +kubectl wait --namespace devworkspace-controller \ + --timeout 90s \ + --for=condition=ready pod \ + --selector=app.kubernetes.io/part-of=devworkspace-operator +``` + +### 6. Create the DevWorkspace Operator Config + +#### 6.1 Get Minikube IP + +Get the IP address of your Minikube cluster: + +```sh +minikube ip +``` + +You will use this IP address in the next step. Let's denote it as . + +#### 6.2 Create the DevWorkspaceOperatorConfig + +Create the DevWorkspaceOperatorConfig resource, replacing with the IP you obtained in the previous step: + +```sh +kubectl apply -f - <.nip.io" +EOF +``` + +### 7. Create a Sample DevWorkspace + +```sh +kubectl apply -f - < +``` diff --git a/docs/installation/openshift-with-olm.md b/docs/installation/openshift-with-olm.md new file mode 100644 index 000000000..ef1ebf967 --- /dev/null +++ b/docs/installation/openshift-with-olm.md @@ -0,0 +1,135 @@ +# Installation on OpenShift With OLM + +## Prerequisites + +Before you begin, ensure you have the following tools installed: + +* **oc:** The OpenShift command-line tool. +* Access to an OpenShift cluster. + +## Steps + +### 1. Add the DevWorkspace Operator CatalogSource + +Add the DevWorkspace Operator `CatalogSource` to the `openshift-marketplace` namespace: + +```sh +oc apply -f - < +``` diff --git a/docs/installation/openshift-without-olm.md b/docs/installation/openshift-without-olm.md new file mode 100644 index 000000000..7f5da8df9 --- /dev/null +++ b/docs/installation/openshift-without-olm.md @@ -0,0 +1,107 @@ +# Installation on OpenShift Without OLM + +## Prerequisites + +Before you begin, ensure you have the following tools installed: + +* **oc:** The OpenShift command-line tool. +* Access to an OpenShift cluster. + +## Steps + +### 1. Create Namespace for Operator + +Create a dedicated namespace for the DevWorkspace Controller: + +```sh +oc create namespace devworkspace-controller +``` + +### 2. Install the DevWorkspace Operator + +Install the DevWorkspace Operator using the OpenShift-specific bundle: + +```sh +oc apply -f https://raw.githubusercontent.com/devfile/devworkspace-operator/refs/heads/main/deploy/deployment/openshift/combined.yaml +``` + +Wait until the DevWorkspace Operator pods are ready: + +```sh +oc wait --namespace devworkspace-controller \ + --timeout 90s \ + --for=condition=ready pod \ + --selector=app.kubernetes.io/part-of=devworkspace-operator +``` + +### 3. Create DevWorkspaces Namespace + +Create a namespace for the DevWorkspace sample: + +```sh +oc create namespace devworkspace-samples +``` + +### 4. Create a Sample DevWorkspace + +Create a sample DevWorkspace in the `devworkspace-samples` namespace: + +```sh +oc apply -f - < +```