Skip to content

Commit 5936d41

Browse files
committed
Deploy OpenEBS on Azure Cobalt 100 Arm64 virtual machines for Kubernetes-native persistent storage
Signed-off-by: odidev <odidev@puresoftware.com>
1 parent 09debb2 commit 5936d41

16 files changed

Lines changed: 779 additions & 0 deletions
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
title: Deploy OpenEBS on Azure Cobalt 100 Arm64 virtual machines for Kubernetes-native persistent storage
3+
4+
5+
description: Learn how to install and configure OpenEBS LocalPV on an Azure Cobalt 100 Arm64 virtual machine using K3s Kubernetes, provision persistent storage dynamically, deploy stateful applications, and validate persistent storage functionality.
6+
7+
minutes_to_complete: 60
8+
9+
who_is_this_for: This is an introductory topic for DevOps engineers, platform engineers, cloud-native developers, and Kubernetes administrators who want to deploy lightweight Kubernetes-native persistent storage on Arm-based cloud infrastructure.
10+
11+
learning_objectives:
12+
- Install and configure K3s Kubernetes on Azure Cobalt 100 Arm64 virtual machines
13+
- Deploy OpenEBS LocalPV using Helm
14+
- Configure Kubernetes storage classes and Persistent Volume Claims (PVCs)
15+
- Deploy and validate stateful Kubernetes workloads with persistent storage
16+
17+
prerequisites:
18+
- A [Microsoft Azure account](https://azure.microsoft.com/) with access to Cobalt 100 based instances (Dpsv6)
19+
- Basic knowledge of Linux command-line operations
20+
- Familiarity with SSH and remote server access
21+
- Basic understanding of Kubernetes concepts and containerized applications
22+
23+
author: Pareena Verma
24+
25+
### Tags
26+
skilllevels: Introductory
27+
subjects: Containers and Virtualization
28+
cloud_service_providers:
29+
- Microsoft Azure
30+
31+
armips:
32+
- Neoverse
33+
34+
tools_software_languages:
35+
- Kubernetes
36+
- K3s
37+
- OpenEBS
38+
- Helm
39+
40+
operatingsystems:
41+
- Linux
42+
43+
further_reading:
44+
- resource:
45+
title: OpenEBS Official Website
46+
link: https://openebs.io/
47+
type: website
48+
- resource:
49+
title: OpenEBS Documentation
50+
link: https://openebs.io/docs
51+
type: documentation
52+
- resource:
53+
title: K3s Documentation
54+
link: https://docs.k3s.io/
55+
type: documentation
56+
- resource:
57+
title: Kubernetes Documentation
58+
link: https://kubernetes.io/docs/
59+
type: documentation
60+
- resource:
61+
title: Azure Cobalt 100 processors
62+
link: https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353
63+
type: documentation
64+
65+
### FIXED, DO NOT MODIFY
66+
# ================================================================================
67+
weight: 1
68+
layout: "learningpathall"
69+
learning_path_main_page: "yes"
70+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
title: Understand OpenEBS on Azure Cobalt 100
3+
weight: 2
4+
5+
layout: "learningpathall"
6+
---
7+
8+
## Why run OpenEBS on Azure Cobalt 100
9+
10+
OpenEBS on Arm-based Azure Cobalt 100 processors provides lightweight, Kubernetes-native persistent storage for cloud-native workloads. Azure Cobalt 100 processors deliver dedicated physical cores per vCPU, enabling consistent and predictable performance for Kubernetes storage operations and stateful applications.
11+
12+
OpenEBS integrates directly with Kubernetes and dynamically provisions Persistent Volumes for applications using Container Storage Interface (CSI) drivers and storage engines. Running OpenEBS on Azure Cobalt 100 enables efficient Arm64-native Kubernetes storage deployments optimized for lightweight cloud-native environments.
13+
14+
## Azure Cobalt 100 Arm-based processor
15+
16+
Azure’s Cobalt 100 is Microsoft’s first-generation, in-house Arm-based processor. Built on Arm Neoverse N2, Cobalt 100 is a 64-bit CPU that delivers strong performance and energy efficiency for cloud-native, scale-out Linux workloads. These workloads include web and application servers, data analytics, open-source databases, and caching systems. Running at 3.4 GHz, Cobalt 100 allocates a dedicated physical core for each vCPU, ensuring consistent and predictable performance.
17+
18+
To learn more, see the Microsoft blog [Announcing the preview of new Azure VMs based on the Azure Cobalt 100 processor](https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353).
19+
20+
## How OpenEBS improves Kubernetes storage
21+
22+
OpenEBS is an open-source, Kubernetes-native storage platform designed for stateful workloads running inside Kubernetes clusters. Unlike traditional external storage systems, OpenEBS runs completely inside Kubernetes and dynamically provisions storage volumes directly through Kubernetes APIs.
23+
24+
OpenEBS enables applications to retain persistent data even after pods restart, reschedule, or recreate. This makes OpenEBS ideal for databases, analytics platforms, message queues, and other stateful cloud-native applications.
25+
26+
To learn more, see the official [OpenEBS documentation](https://openebs.io/docs).
27+
28+
OpenEBS provides key capabilities for Kubernetes-native storage management:
29+
30+
- Dynamic Provisioning: Automatically creates Persistent Volumes using Kubernetes Persistent Volume Claims (PVCs).
31+
- Kubernetes-native Architecture: Runs entirely inside Kubernetes without requiring external storage appliances.
32+
- Lightweight Local Storage: OpenEBS LocalPV uses node-local storage optimized for lightweight Kubernetes environments.
33+
- CSI Integration: Integrates with Kubernetes Container Storage Interface (CSI) drivers for standard storage management.
34+
- Stateful Workload Support: Enables persistent storage for databases, web applications, and distributed systems.
35+
36+
## Why OpenEBS LocalPV for this learning path
37+
38+
This learning path uses OpenEBS LocalPV because it is optimized for:
39+
40+
- Single-node Kubernetes clusters
41+
- Arm64 environments
42+
- Lightweight Kubernetes deployments
43+
- Development and learning environments
44+
- High-performance local storage provisioning
45+
46+
Advanced replicated storage engines such as Mayastor are designed for multi-node production environments and are intentionally excluded from this setup.
47+
48+
## Learning path overview
49+
50+
In this Learning Path, you'll deploy OpenEBS LocalPV on an Azure Cobalt 100 Arm64 virtual machine using a lightweight K3s Kubernetes cluster.
51+
52+
You'll learn how to:
53+
54+
- Install Kubernetes using K3s
55+
- Deploy OpenEBS LocalPV
56+
- Configure Kubernetes storage classes
57+
- Create Persistent Volume Claims (PVCs)
58+
- Deploy stateful applications
59+
- Validate persistent storage functionality
60+
- Expose Kubernetes applications externally using Azure networking
61+
62+
## What you've learned and what's next
63+
64+
You now understand why Azure Cobalt 100 and OpenEBS are a strong combination for lightweight Kubernetes-native persistent storage on Arm64 infrastructure.
65+
66+
Next, you'll configure Azure networking to allow external access to the Kubernetes application deployed with OpenEBS persistent storage.
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
title: Allow access to the OpenEBS application on Azure
3+
weight: 5
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Configure external traffic for the OpenEBS application
10+
11+
To allow external traffic to the Kubernetes application running with OpenEBS persistent storage on an Azure virtual machine, open the Kubernetes NodePort in the Network Security Group (NSG).
12+
13+
The NSG can be attached to the virtual machine's network interface or subnet.
14+
15+
{{% notice Note %}}For more information about Azure setup, see [Getting started with Microsoft Azure Platform](/learning-paths/servers-and-cloud-computing/csp/azure/).{{% /notice %}}
16+
17+
## Verify the Kubernetes service
18+
19+
Check the Kubernetes service to identify the exposed NodePort:
20+
21+
```bash
22+
kubectl get svc
23+
```
24+
25+
The output is similar to:
26+
27+
```output
28+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
29+
nginx-openebs NodePort 10.x.x.x <none> 80:31635/TCP
30+
```
31+
32+
In this example, the NodePort exposed externally is `31635`.
33+
34+
### Add an inbound firewall rule in Azure
35+
36+
To expose the Kubernetes NodePort externally, create a firewall rule.
37+
38+
1. Navigate to the [Azure portal](https://portal.azure.com), go to **Virtual Machines**, and select your virtual machine.
39+
40+
![Azure Portal Virtual Machines page with the target VM selected. Check that you are opening the correct virtual machine before configuring its network access.#center](images/virtual_machine.png "Virtual Machines")
41+
42+
2. In the left menu, select **Networking**, then select **Network settings**.
43+
44+
![Azure Portal Networking page showing the network settings linked to the virtual machine. Use this entry to reach the Network Security Group settings for the inbound rule.#center](images/networking.png "Network settings")
45+
46+
3. Navigate to **Create port rule**, and select **Inbound port rule**.
47+
48+
![Azure Portal Create port rule menu with Inbound port rule selected. Choose this option to open port 31635 to expose the Kubernetes Node Port Externally.#center](images/port_rule.png "Create rule")
49+
50+
4. Configure the inbound security rule with the following settings:
51+
52+
- **Source:** My IP address
53+
- **Source IP addresses:** *(auto-populated with your current public IP)*
54+
- **Source port ranges:** *
55+
- **Destination:** Any
56+
- **Destination port ranges:** **31635**
57+
- **Protocol:** TCP
58+
- **Action:** Allow
59+
- **Name:** allow-openebs-port
60+
61+
{{% notice Note %}}Setting Source to My IP address restricts access to the Kubernetes application to your current machine only. Source port ranges remains * because this refers to the client's ephemeral outbound port, which is dynamically assigned. If your IP address changes or you need to access the application from another machine, update the source IP in this rule.{{% /notice %}}
62+
63+
5. After filling in the details, select **Add** to save the rule.
64+
65+
You can now access the Kubernetes application externally using the NodePort.
66+
67+
## What you've learned and what's next
68+
69+
You've now configured the Azure Network Security Group to allow external access to the Kubernetes application running with OpenEBS LocalPV persistent storage.
70+
71+
This firewall rule enables external browser access to the application deployed on your single-node Kubernetes cluster running on Azure Cobalt 100 Arm64.
72+
73+
Next, you'll install OpenEBS LocalPV on Kubernetes and configure persistent storage provisioning for stateful workloads.
38.8 KB
Loading
68.7 KB
Loading
84 KB
Loading
105 KB
Loading
144 KB
Loading
12.2 KB
Loading

0 commit comments

Comments
 (0)