Skip to content

Commit dbb0330

Browse files
authored
Merge pull request #3359 from pareenaverma/content_review
Tech review of OpenEBS LP
2 parents 6431af8 + 93cb4b6 commit dbb0330

4 files changed

Lines changed: 68 additions & 38 deletions

File tree

content/learning-paths/servers-and-cloud-computing/openebs-cobalt/background.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,4 @@ You'll learn how to:
6363

6464
You now understand why Azure Cobalt 100 and OpenEBS are a strong combination for lightweight Kubernetes-native persistent storage on Arm64 infrastructure.
6565

66-
Next, you'll configure Azure networking to allow external access to the Kubernetes application deployed with OpenEBS persistent storage.
66+
Next, you'll create an Azure Cobalt 100 Arm64 virtual machine to host the Kubernetes cluster.

content/learning-paths/servers-and-cloud-computing/openebs-cobalt/firewall.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Allow access to the OpenEBS application on Azure
3-
weight: 5
3+
weight: 6
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
@@ -14,9 +14,9 @@ The NSG can be attached to the virtual machine's network interface or subnet.
1414

1515
{{% notice Note %}}For more information about Azure setup, see [Getting started with Microsoft Azure Platform](/learning-paths/servers-and-cloud-computing/csp/azure/).{{% /notice %}}
1616

17-
## Verify the Kubernetes service
17+
## Identify the Kubernetes NodePort
1818

19-
Check the Kubernetes service to identify the exposed NodePort:
19+
In the previous step you exposed the NGINX deployment as a NodePort service. Run the following command on your VM to find the port that Kubernetes assigned.
2020

2121
```bash
2222
kubectl get svc
@@ -29,7 +29,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
2929
nginx-openebs NodePort 10.x.x.x <none> 80:31635/TCP
3030
```
3131

32-
In this example, the NodePort exposed externally is `31635`.
32+
In this example, the NodePort exposed externally is `31635`. Kubernetes assigns this port dynamically, so your value may differ. Use the port shown in your own output in the firewall rule below.
3333

3434
### Add an inbound firewall rule in Azure
3535

@@ -53,7 +53,7 @@ To expose the Kubernetes NodePort externally, create a firewall rule.
5353
- **Source IP addresses:** *(auto-populated with your current public IP)*
5454
- **Source port ranges:** *
5555
- **Destination:** Any
56-
- **Destination port ranges:** **31635**
56+
- **Destination port ranges:** **31635** *(replace with your actual NodePort)*
5757
- **Protocol:** TCP
5858
- **Action:** Allow
5959
- **Name:** allow-openebs-port
@@ -62,12 +62,26 @@ To expose the Kubernetes NodePort externally, create a firewall rule.
6262

6363
5. After filling in the details, select **Add** to save the rule.
6464

65-
You can now access the Kubernetes application externally using the NodePort.
65+
## Access the application
6666

67-
## What you've learned and what's next
67+
Open the following URL in your browser. Replace `<VM_PUBLIC_IP>` with the public IP address of your Azure virtual machine, and replace `31635` with your actual NodePort if it differs.
6868

69-
You've now configured the Azure Network Security Group to allow external access to the Kubernetes application running with OpenEBS LocalPV persistent storage.
69+
```text
70+
http://<VM_PUBLIC_IP>:31635
71+
```
72+
73+
You should see the content written to the Persistent Volume in the previous step:
74+
75+
```output
76+
OpenEBS on Azure Cobalt D4ps Arm64
77+
```
78+
79+
![NGINX application running on Kubernetes with persistent storage provisioned by OpenEBS LocalPV on Azure Cobalt 100 Arm64.#center](images/openebs-browser.png "NGINX application using OpenEBS persistent storage")
80+
81+
## What you've learned
82+
83+
You've configured the Azure Network Security Group to allow external access to the Kubernetes application running with OpenEBS LocalPV persistent storage, and confirmed that the application is reachable from your browser.
7084

71-
This firewall rule enables external browser access to the application deployed on your single-node Kubernetes cluster running on Azure Cobalt 100 Arm64.
85+
The persistent data written earlier survived pod recreation and is now served by a stateful NGINX workload backed by OpenEBS on an Azure Cobalt 100 Arm64 virtual machine.
7286

73-
Next, you'll install OpenEBS LocalPV on Kubernetes and configure persistent storage provisioning for stateful workloads.
87+
In this Learning Path, you provisioned an Azure Cobalt 100 Arm64 virtual machine, installed a single-node K3s Kubernetes cluster, deployed OpenEBS LocalPV as the default storage class, created persistent volumes for a stateful application, and validated that data survived pod restarts on Arm64 infrastructure.

content/learning-paths/servers-and-cloud-computing/openebs-cobalt/openebs-installation.md

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Deploy OpenEBS on Azure Cobalt 100
3-
weight: 5
3+
weight: 4
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
@@ -75,7 +75,7 @@ sudo chown $USER:$USER ~/.kube/config
7575

7676
Set the Kubernetes configuration environment variable:
7777

78-
```bahs
78+
```bash
7979
export KUBECONFIG=$HOME/.kube/config
8080
```
8181

@@ -128,15 +128,22 @@ Add the official OpenEBS Helm repository:
128128
helm repo add openebs https://openebs.github.io/openebs
129129
```
130130

131-
## Update Helm repositories:
131+
## Update Helm repositories
132132

133133
```bash
134134
helm repo update
135135
```
136136

137+
The output will look similar to:
138+
139+
```output
140+
...Successfully got an update from the "openebs" chart repository
141+
Update Complete. ⎈Happy Helming!⎈
142+
```
143+
137144
## Deploy OpenEBS LocalPV
138145

139-
Create the OpenEBS namespace
146+
Create the `openebs` namespace that will hold all OpenEBS components.
140147

141148
```bash
142149
kubectl create namespace openebs
@@ -146,6 +153,10 @@ kubectl create namespace openebs
146153

147154
This deployment installs only OpenEBS LocalPV components and disables Mayastor, Loki, Alloy, and observability services, which are unnecessary for a single-node setup.
148155

156+
{{% notice Note %}}
157+
The following command installs the latest available OpenEBS chart. To pin to a specific version, add `--version <version>` to the command. To find available versions, run `helm search repo openebs/openebs --versions`.
158+
{{% /notice %}}
159+
149160
```bash
150161
helm install openebs openebs/openebs \
151162
--namespace openebs \
@@ -157,7 +168,13 @@ helm install openebs openebs/openebs \
157168

158169
### Verify OpenEBS installation
159170

160-
Check the OpenEBS pods:
171+
OpenEBS components take a moment to start. Wait for the pods to become ready before continuing.
172+
173+
```bash
174+
kubectl wait --for=condition=Ready pod -l app=openebs-localpv-provisioner -n openebs --timeout=120s
175+
```
176+
177+
Then check all OpenEBS pods are running.
161178

162179
```bash
163180
kubectl get pods -n openebs
@@ -233,4 +250,4 @@ At this stage, OpenEBS LocalPV is successfully configured and ready to provision
233250

234251
You now have a lightweight single-node Kubernetes cluster running on Azure Cobalt 100 Arm64 with OpenEBS LocalPV configured as the default storage class.
235252

236-
Next, you'll create Persistent Volume Claims (PVCs), deploy a stateful NGINX application, and validate persistent storage functionality using OpenEBS.
253+
Next, you'll create a Persistent Volume Claim, deploy a stateful NGINX application, validate data persistence, and expose the application so you can open the required port in the Azure Network Security Group.

content/learning-paths/servers-and-cloud-computing/openebs-cobalt/openebs-persistent-storage-validation.md

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Validate Persistent Storage with OpenEBS on Azure Cobalt 100
3-
weight: 6
3+
weight: 5
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
@@ -38,6 +38,12 @@ Apply the PVC:
3838
kubectl apply -f pvc.yaml
3939
```
4040

41+
The output is similar to:
42+
43+
```output
44+
persistentvolumeclaim/openebs-pvc created
45+
```
46+
4147
Verify:
4248

4349
```bash
@@ -94,6 +100,11 @@ Deploy the application:
94100
kubectl apply -f nginx-openebs.yaml
95101
```
96102

103+
The output is similar to:
104+
```output
105+
deployment.apps/nginx-openebs created
106+
```
107+
97108
## Verify Kubernetes resources
98109

99110
Check the pod status:
@@ -201,15 +212,15 @@ This confirms that the Persistent Volume retains data even after the pod is dele
201212

202213
## Expose the application
203214

204-
Create a NodePort service:
215+
Create a NodePort service to expose the NGINX application externally. Kubernetes assigns the external port dynamically — you'll use the assigned port to open the corresponding firewall rule in the next step.
205216

206217
```bash
207218
kubectl expose deployment nginx-openebs \
208219
--type NodePort \
209220
--port 80
210221
```
211222

212-
Verify the service:
223+
Verify the service and note the NodePort assigned.
213224

214225
```bash
215226
kubectl get svc
@@ -219,25 +230,11 @@ The output is similar to:
219230

220231
```output
221232
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
222-
kubernetes ClusterIP 10.x.x.x <none> 443/TCP 143m
223-
nginx-openebs NodePort 10.x.x.x <none> 80:31635/TCP 7s
233+
kubernetes ClusterIP 10.x.x.x <none> 443/TCP 143m
234+
nginx-openebs NodePort 10.x.x.x <none> 80:31635/TCP 7s
224235
```
225236

226-
## Access the application
227-
228-
Open the following URL in your browser:
229-
230-
```text
231-
http://<VM_PUBLIC_IP>:31635
232-
```
233-
234-
You should see:
235-
236-
```output
237-
OpenEBS on Azure Cobalt D4ps Arm64
238-
```
239-
240-
![NGINX application running on Kubernetes with persistent storage provisioned by OpenEBS LocalPV on Azure Cobalt 100 Arm64.#center](images/openebs-browser.png "NGINX application using OpenEBS persistent storage")
237+
Note the NodePort value (in this example `31635`). You'll need it to create the Azure firewall rule in the next step. Your value may differ because Kubernetes assigns NodePorts dynamically.
241238

242239
## Cleanup resources
243240

@@ -257,4 +254,6 @@ kubectl delete -f pvc.yaml
257254

258255
You successfully created dynamically provisioned Persistent Volumes using OpenEBS LocalPV on a single-node Kubernetes cluster running on Azure Cobalt 100 Arm64.
259256

260-
You validated persistent storage functionality by recreating application pods while preserving data across restarts.
257+
You validated persistent storage functionality by recreating application pods while preserving data across restarts, and exposed the application as a Kubernetes NodePort service.
258+
259+
Next, you'll open the NodePort in the Azure Network Security Group so the application is reachable from your browser.

0 commit comments

Comments
 (0)