Skip to content

Commit fe77ec6

Browse files
rasika2012Mirage20
authored andcommitted
Add multi cluster deployment docs
1 parent bdd588c commit fe77ec6

1 file changed

Lines changed: 218 additions & 0 deletions

File tree

docs/getting-started/multi-cluster.md

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,221 @@ unlisted: true
44
---
55

66
# Multi Cluster Setup
7+
8+
This guide walks you through step-by-step instructions for deploying OpenChoreo across multiple clusters. This deploys a **Control Plane**, a **Data Plane**, and optional **Build** and **Observability Planes** in separate clusters.
9+
10+
## Prerequisites
11+
12+
- [Docker](https://docs.docker.com/get-docker/) v20.10+ installed and running
13+
- [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) v0.20+ installed
14+
- [kubectl](https://kubernetes.io/docs/tasks/tools/) v1.32+ installed
15+
- [Helm](https://helm.sh/docs/intro/install/) v3.12+ installed
16+
17+
### Verify Prerequisites
18+
19+
Before proceeding, verify that all tools are installed and meet the minimum version requirements:
20+
21+
```bash
22+
# Check Docker (should be v20.10+)
23+
docker --version
24+
25+
# Check Kind (should be v0.20+)
26+
kind --version
27+
28+
# Check kubectl (should be v1.32+)
29+
kubectl version --client
30+
31+
# Check Helm (should be v3.12+)
32+
helm version --short
33+
```
34+
35+
Make sure Docker is running:
36+
37+
```bash
38+
docker info
39+
```
40+
41+
### **Step 1: Setup the Control Plane**
42+
43+
**Create the Control Plane Cluster:**
44+
This command provisions a `kind` cluster that will host the control plane components.
45+
46+
```bash
47+
curl -s https://raw.githubusercontent.com/openchoreo/openchoreo/main/install/kind/multi-cluster-setup/kind-config-cp.yaml | kind create cluster --config=-
48+
```
49+
50+
**Install the Control Plane via Helm:**
51+
52+
```bash
53+
helm install control-plane oci://ghcr.io/openchoreo/helm-charts/openchoreo-control-plane \
54+
--create-namespace --namespace openchoreo-control-plane \
55+
--timeout=10m \
56+
--kube-context kind-openchoreo-cp
57+
```
58+
59+
**Verify the Installation:**
60+
Check that all pods in the `openchoreo-control-plane` namespace are running correctly.
61+
62+
```bash
63+
kubectl get pods -n openchoreo-control-plane
64+
```
65+
66+
---
67+
68+
### **Step 2: Setup the Data Plane**
69+
70+
**Create the Data Plane Cluster:**
71+
Provision a separate `kind` cluster for the data plane.
72+
73+
```bash
74+
curl -s https://raw.githubusercontent.com/openchoreo/openchoreo/main/install/kind/multi-cluster-setup/kind-config-dp.yaml | kind create cluster --config=-
75+
```
76+
77+
78+
**Install Cilium CNI:**
79+
Install Cilium as the Container Network Interface (CNI). This will create the Cilium namespace automatically:
80+
81+
```bash
82+
helm install cilium oci://ghcr.io/openchoreo/helm-charts/cilium --create-namespace --namespace cilium --wait --kube-context kind-openchoreo-dp
83+
```
84+
Wait for Cilium pods to be ready:
85+
```bash
86+
kubectl wait --for=condition=Ready pod -l k8s-app=cilium -n cilium --timeout=300s --context=kind-openchoreo-dp
87+
```
88+
Verify that the nodes are now Ready:
89+
```bash
90+
kubectl get nodes --context=kind-openchoreo-dp
91+
```
92+
93+
**Install the Data Plane via Helm:**
94+
Deploy the data plane components. `cert-manager` is enabled to install cert-manager.
95+
96+
```bash
97+
helm install data-plane oci://ghcr.io/openchoreo/helm-charts/openchoreo-data-plane \
98+
--create-namespace --namespace openchoreo-data-plane \
99+
--timeout=10m \
100+
--set cert-manager.enabled=true \
101+
--set cert-manager.crds.enabled=true \
102+
--kube-context kind-openchoreo-dp
103+
```
104+
105+
```bash
106+
kubectl get pods -n openchoreo-data-plane --context=kind-openchoreo-dp
107+
```
108+
109+
**Register the Data Plane:**
110+
Run the script to connect the newly created data plane to the control plane.
111+
112+
```bash
113+
bash -c "$(curl -s https://raw.githubusercontent.com/openchoreo/openchoreo/main/install/add-default-dataplane.sh)" -- --multi-cluster
114+
```
115+
116+
**Verify the DataPlane was created:**
117+
```bash
118+
kubectl get dataplane -n default
119+
```
120+
121+
### **Step 3: Setup the Build Plane (Optional)**
122+
123+
**Create the Build Plane Cluster:**
124+
Provision a separate `kind` cluster for the build plane.
125+
126+
```bash
127+
curl -s https://raw.githubusercontent.com/openchoreo/openchoreo/main/install/kind/multi-cluster-setup/kind-config-bp.yaml | kind create cluster --config=-
128+
```
129+
130+
**Install the Build Plane via Helm:**
131+
Deploy the build plane components. `fluentBit` is enabled to install Fluent Bit.
132+
133+
```bash
134+
helm install build-plane oci://ghcr.io/openchoreo/helm-charts/openchoreo-build-plane \
135+
--create-namespace --namespace openchoreo-build-plane \
136+
--timeout=10m \
137+
--kube-context kind-openchoreo-bp \
138+
--set fluentBit.enabled=true
139+
```
140+
141+
**Verify the Installation:**
142+
Wait for the components to be ready and check the pod statuses.
143+
```bash
144+
kubectl get pods -n openchoreo-build-plane
145+
```
146+
147+
**Register the Build Plane:**
148+
Connect the build plane to the control plane.
149+
```bash
150+
bash -c "$(curl -s https://raw.githubusercontent.com/openchoreo/openchoreo/main/install/add-build-plane.sh )" -- --separate
151+
```
152+
153+
Make sure to insert the `build plane Kubernetes context`, which should be changed to `kind-openchoreo-bp`.
154+
155+
156+
Verify that the BuildPlane was created:
157+
```bash
158+
kubectl get buildplane -n default
159+
```
160+
161+
### **Step 4: Setup the Observability Plane (Optional)**
162+
163+
**Create the Observability Plane Cluster:**
164+
Provision a separate `kind` cluster for the observability plane.
165+
166+
```bash
167+
curl -s https://raw.githubusercontent.com/openchoreo/openchoreo/main/install/kind/multi-cluster-setup/kind-config-op.yaml | kind create cluster --config=-
168+
```
169+
170+
**Install the Observability Plane via Helm:**
171+
Deploy the observability components.
172+
173+
```bash
174+
helm install observability-plane oci://ghcr.io/openchoreo/helm-charts/openchoreo-observability-plane \
175+
--create-namespace --namespace openchoreo-observability-plane \
176+
--timeout=10m \
177+
--kube-context kind-openchoreo-op
178+
```
179+
180+
**Verify the Installation:**
181+
Wait for all pods to become ready before proceeding.
182+
183+
```bash
184+
kubectl wait --for=condition=Ready pod --all -n openchoreo-observability-plane --timeout=600s
185+
```
186+
187+
**Configure build plane and data plane fluentbit:**
188+
189+
Host and port should be accessible from the data/build plane cluster; this connection will be used to publish telemetry to the observability plane.
190+
191+
```bash
192+
helm upgrade openchoreo-build-plane oci://ghcr.io/openchoreo/helm-charts/openchoreo-build-plane \
193+
--set fluentBit.config.opensearch.host="openchoreo-op-control-plane" \
194+
--set fluentBit.config.opensearch.port=30920 \
195+
--kube-context kind-openchoreo-bp \
196+
--set fluentBit.enabled=true
197+
```
198+
199+
```bash
200+
helm upgrade openchoreo-data-plane oci://ghcr.io/openchoreo/helm-charts/openchoreo-data-plane \
201+
--namespace openchoreo-data-plane \
202+
--set fluentBit.config.opensearch.host="openchoreo-op-control-plane" \
203+
--set fluentBit.config.opensearch.port=30920 \
204+
--set cert-manager.enabled=false \
205+
--set cert-manager.crds.enabled=false \
206+
--kube-context kind-openchoreo-dp
207+
```
208+
209+
Congratulations, you have successfully installed OpenChoreo in multiple clusters.
210+
211+
```bash
212+
# Delete the Kind cluster
213+
kind delete cluster --name openchoreo-cp
214+
kind delete cluster --name openchoreo-dp
215+
kind delete cluster --name openchoreo-bp
216+
kind delete cluster --name openchoreo-op
217+
218+
# Remove kubectl context (optional)
219+
kubectl config delete-context kind-openchoreo-cp
220+
kubectl config delete-context kind-openchoreo-bp
221+
kubectl config delete-context kind-openchoreo-dp
222+
kubectl config delete-context kind-openchoreo-op
223+
224+
```

0 commit comments

Comments
 (0)