Skip to content

Commit 7ec0688

Browse files
authored
Merge pull request #3334 from odidev/longhorn
Deploy Longhorn on Azure Cobalt 100 Arm64 virtual machines
2 parents d023257 + adabc1c commit 7ec0688

17 files changed

Lines changed: 796 additions & 0 deletions
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: Deploy Longhorn on Azure Cobalt 100 Arm64 virtual machines for Kubernetes persistent storage
3+
4+
draft: true
5+
cascade:
6+
draft: true
7+
8+
description: Learn how to install and configure Longhorn on an Azure Cobalt 100 Arm64 virtual machine, deploy Kubernetes persistent storage using K3s, create Persistent Volumes, and benchmark storage performance for cloud-native workloads.
9+
10+
minutes_to_complete: 60
11+
12+
who_is_this_for: This is an introductory topic for developers, DevOps engineers, platform engineers, and Kubernetes administrators who want to deploy persistent storage for Kubernetes workloads using Longhorn on Arm-based cloud infrastructure.
13+
14+
learning_objectives:
15+
- Install and configure K3s Kubernetes on Azure Cobalt 100 Arm64 virtual machines
16+
- Deploy and configure Longhorn distributed block storage on Arm64
17+
- Create and manage Kubernetes Persistent Volumes using Longhorn
18+
- Benchmark Kubernetes storage performance using fio
19+
20+
prerequisites:
21+
- A [Microsoft Azure account](https://azure.microsoft.com/) with access to Cobalt 100 based instances (Dpsv6)
22+
- Basic knowledge of Linux command-line operations
23+
- Familiarity with SSH and remote server access
24+
- Basic understanding of Kubernetes and containerized workloads
25+
26+
author: Pareena Verma
27+
28+
### Tags
29+
skilllevels: Introductory
30+
subjects: Containers and Virtualization
31+
cloud_service_providers:
32+
- Microsoft Azure
33+
34+
armips:
35+
- Neoverse
36+
37+
tools_software_languages:
38+
- Longhorn
39+
- Kubernetes
40+
- K3s
41+
- fio
42+
43+
operatingsystems:
44+
- Linux
45+
46+
further_reading:
47+
- resource:
48+
title: Longhorn Official Website
49+
link: https://longhorn.io/
50+
type: website
51+
- resource:
52+
title: Longhorn Documentation
53+
link: https://longhorn.io/docs/
54+
type: documentation
55+
- resource:
56+
title: K3s Documentation
57+
link: https://docs.k3s.io/
58+
type: documentation
59+
- resource:
60+
title: Azure Cobalt 100 processors
61+
link: https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353
62+
type: documentation
63+
64+
### FIXED, DO NOT MODIFY
65+
# ================================================================================
66+
weight: 1
67+
layout: "learningpathall"
68+
learning_path_main_page: "yes"
69+
---
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: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: Understand Longhorn on Azure Cobalt 100
3+
4+
weight: 2
5+
6+
layout: "learningpathall"
7+
---
8+
9+
## Why run Longhorn on Azure Cobalt 100
10+
11+
Longhorn on Arm-based Azure Cobalt 100 processors provides lightweight, Kubernetes-native distributed storage for cloud-native workloads running on Arm64 infrastructure.
12+
13+
Azure Cobalt 100 processors deliver dedicated physical cores per vCPU, providing predictable and consistent performance for Kubernetes storage workloads. This architecture complements Longhorn’s distributed block storage model and helps deliver stable storage performance for stateful applications running on Kubernetes.
14+
15+
Longhorn enables persistent storage for Kubernetes workloads such as databases, analytics platforms, monitoring stacks, and stateful cloud-native applications running on Azure Cobalt 100 Arm64 virtual machines.
16+
17+
## Azure Cobalt 100 Arm-based processor
18+
19+
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.
20+
21+
These workloads include:
22+
23+
- Kubernetes platforms
24+
- Containerized applications
25+
- Open-source databases
26+
- Data analytics systems
27+
- Storage and caching platforms
28+
29+
Running at 3.4 GHz, Cobalt 100 allocates a dedicated physical core for each vCPU, ensuring predictable and consistent workload performance.
30+
31+
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).
32+
33+
## How Longhorn improves Kubernetes storage
34+
35+
Longhorn is an open-source cloud-native distributed block storage platform designed specifically for Kubernetes environments.
36+
37+
It provides persistent storage volumes for Kubernetes workloads and enables applications to retain data independently of container or pod lifecycle events.
38+
39+
Longhorn integrates directly with Kubernetes through the Container Storage Interface (CSI) and provides dynamic volume provisioning, storage management, and persistent storage capabilities for stateful workloads.
40+
41+
To learn more, see the official [Longhorn documentation](https://longhorn.io/docs/).
42+
43+
Longhorn provides several important capabilities for Kubernetes storage management:
44+
45+
- Persistent Volumes: Dynamically provisions Kubernetes Persistent Volumes for stateful workloads.
46+
- Distributed Storage: Replicates and manages block storage volumes across Kubernetes nodes.
47+
- CSI Integration: Integrates natively with Kubernetes using the Container Storage Interface.
48+
- Snapshot and Backup Support: Supports volume snapshots and backup operations for Kubernetes workloads.
49+
- Stateful Workload Support: Enables databases, monitoring stacks, and analytics applications to run with persistent storage.
50+
51+
Longhorn is widely used in Kubernetes environments to provide lightweight and reliable storage without requiring external SAN or NAS infrastructure.
52+
53+
In this Learning Path, you'll deploy Longhorn on an Azure Cobalt 100 Arm64 virtual machine using K3s Kubernetes. You'll configure Longhorn for a single-node Kubernetes cluster, create Persistent Volumes, validate storage persistence, and benchmark storage performance using fio.
54+
55+
## What you've learned and what's next
56+
57+
You now understand why Azure Cobalt 100 and Longhorn are a strong combination for Kubernetes-native persistent storage on Arm64 infrastructure.
58+
59+
Next, you'll configure Azure networking and firewall rules, install K3s Kubernetes, deploy Longhorn, and begin creating Persistent Volumes for Kubernetes workloads.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
title: Allow access to the Longhorn Web UI on Azure
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Configure external traffic for Longhorn and Kubernetes
10+
11+
To allow external traffic for the Longhorn Web UI and Kubernetes services on an Azure virtual machine, open the required ports in the Network Security Group (NSG). The NSG can be attached to the virtual machine's network interface or subnet.
12+
13+
{{% notice Note %}}For more information about Azure setup, see [Getting started with Microsoft Azure Platform](/learning-paths/servers-and-cloud-computing/csp/azure/).{{% /notice %}}
14+
15+
16+
### Add inbound firewall rules in Azure
17+
18+
To expose the required TCP ports for Kubernetes and Longhorn, create an inbound firewall rule.
19+
20+
1. Navigate to the [Azure portal](https://portal.azure.com), go to **Virtual Machines**, and select your virtual machine.
21+
22+
![Azure Portal Virtual Machines page with the target VM selected. Verify that the correct Azure Cobalt 100 virtual machine is selected before configuring network access.#center](images/virtual_machine.png "Azure Virtual Machine")
23+
24+
2. In the left menu, select **Networking**, then select **Network settings**.
25+
26+
![Azure Portal Networking page showing the network settings linked to the Azure virtual machine. Use this page to manage inbound firewall rules for Kubernetes and Longhorn access.#center](images/networking.png "Azure Networking Settings")
27+
28+
3. Navigate to **Create port rule**, and select **Inbound port rule**.
29+
30+
![Azure Portal Create port rule menu with Inbound port rule selected. Use this option to allow external traffic for Longhorn and Kubernetes services.#center](images/port_rule.png "Create Inbound Port Rule")
31+
32+
4. Configure the inbound security rule with the following settings:
33+
34+
- **Source:** My IP address
35+
- **Source IP addresses:** *(auto-populated with your current public IP)*
36+
- **Source port ranges:** *
37+
- **Destination:** Any
38+
- **Destination port ranges:** **80,8080,6443**
39+
- **Protocol:** TCP
40+
- **Action:** Allow
41+
- **Name:** allow-longhorn-kubernetes
42+
43+
This rule allows external access for:
44+
45+
- Port `80` → HTTP workloads
46+
- Port `8080` → Longhorn Web UI
47+
- Port `6443` → Kubernetes API server
48+
49+
{{% notice Note %}}Setting **Source** to **My IP address** restricts access to these ports to your current machine only. If your public IP address changes or you access the environment from another system, update the source IP in the NSG rule accordingly.{{% /notice %}}
50+
51+
5. After filling in the details, select **Add** to save the rule.
52+
53+
You can now access the Longhorn Web UI externally using:
54+
55+
```text
56+
http://<PUBLIC_IP>:8080
57+
```
58+
59+
## What you've learned and what's next
60+
61+
You've now configured the Azure Network Security Group to allow external traffic for SSH, Kubernetes API access, HTTP workloads, and the Longhorn Web UI.
62+
63+
These firewall rules allow secure remote management of the Azure Cobalt 100 virtual machine and external access to the Kubernetes storage dashboard.
64+
65+
Next, you'll create Persistent Volume Claims, deploy workloads using Longhorn storage, and benchmark Kubernetes storage performance on ARM64 infrastructure.
38.8 KB
Loading
68.7 KB
Loading
84 KB
Loading
105 KB
Loading
94.8 KB
Loading
92 KB
Loading

0 commit comments

Comments
 (0)