Skip to content

Commit 837f850

Browse files
Merge pull request #2630 from DougAnsonAustinTX/helm_LP_techreview
Helm on GCP LP techreview
2 parents 278f5fb + cead465 commit 837f850

File tree

7 files changed

+87
-45
lines changed

7 files changed

+87
-45
lines changed

content/learning-paths/servers-and-cloud-computing/helm-on-gcp/_index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ title: Deploy Helm on Google Cloud C4A (Arm-based Axion VMs)
33

44
minutes_to_complete: 30
55

6+
draft: true
7+
cascade:
8+
draft: true
9+
610
who_is_this_for: This learning path is intended for software developers deploying and optimizing Helm on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
711

812
learning_objectives:

content/learning-paths/servers-and-cloud-computing/helm-on-gcp/baseline.md

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ helm install nginx bitnami/nginx
3333
```
3434
Deploy a simple test app to validate that Helm can create releases on the cluster.
3535

36-
You should see an output similar to:
36+
You should see an output that contains text similar to this (please ignore any WARNINGS you receive):
3737
```output
3838
NAME: nginx
3939
LAST DEPLOYED: Wed Dec 3 07:34:04 2025
@@ -59,14 +59,8 @@ Confirm Helm recorded the release and that the deployment exists.
5959

6060
You should see an output similar to:
6161
```output
62-
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
63-
nginx default 1 2025-12-03 08:02:21.533232677 +0000 UTC deployed nginx-22.3.3 1.29.3
64-
nginx-1 default 1 2025-12-03 05:20:12.871824822 +0000 UTC deployed nginx-22.3.3 1.29.3
65-
nginx-2 default 1 2025-12-03 05:20:12.844759384 +0000 UTC deployed nginx-22.3.3 1.29.3
66-
nginx-3 default 1 2025-12-03 05:20:13.154627899 +0000 UTC deployed nginx-22.3.3 1.29.3
67-
nginx-4 default 1 2025-12-03 05:20:12.874546176 +0000 UTC deployed nginx-22.3.3 1.29.3
68-
nginx-5 default 1 2025-12-03 05:20:12.875725062 +0000 UTC deployed nginx-22.3.3 1.29.3
69-
nginx-bench default 1 2025-12-02 08:45:50.190893813 +0000 UTC deployed nginx-22.3.3 1.29.3
62+
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
63+
nginx default 1 2025-12-09 21:04:15.944165326 +0000 UTC deployed nginx-22.3.3 1.29.3
7064
```
7165

7266
Check Kubernetes resources:
@@ -77,16 +71,14 @@ kubectl get svc
7771
```
7872
You should see an output similar to:
7973
```output
80-
NAME READY STATUS RESTARTS AGE
81-
nginx-1-c89c47fc6-vqww4 1/1 Running 0 163m
82-
nginx-2-54f57f5bb9-wf4r7 1/1 Running 0 163m
83-
nginx-3-bfd4cf4f8-q57qq 1/1 Running 0 163m
84-
nginx-4-6c5d9989c5-ld9mk 1/1 Running 0 163m
85-
nginx-5-74b7ccf97b-cfgr7 1/1 Running 0 163m
86-
nginx-7b9564dc4b-92rnd 1/1 Running 0 75s
87-
nginx-bench-c4f66c79c-bhlgl 1/1 Running 1 (3h37m ago) 23h
74+
NAME READY STATUS RESTARTS AGE
75+
nginx-7b9564dc4b-2ghkw 1/1 Running 0 3m5s
76+
77+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
78+
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4m28s
79+
nginx LoadBalancer 10.96.216.137 <pending> 80:32708/TCP,443:31052/TCP 3m6s
8880
```
89-
All pods should be in the **Running** state.
81+
All pods should be in the **Running** state. If the pods are in **Pending** state, please wait a bit and retry the commands above.
9082

9183

9284
### Validate Helm Lifecycle
@@ -99,7 +91,7 @@ helm upgrade nginx bitnami/nginx
9991
```
10092
Test Helm's ability to update an existing release to a new revision.
10193

102-
You should see an output similar to:
94+
You should see an output similar (towards the top of the output...) to:
10395
```output
10496
Release "nginx" has been upgraded. Happy Helming!
10597
```

content/learning-paths/servers-and-cloud-computing/helm-on-gcp/benchmarking.md

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ The first install is usually slower because of following reasons:
5454

5555
This warm-up ensures the real benchmark measures Helm performance, not setup overhead.
5656

57+
You should see output (near the top of the output) that is simlar to:
58+
```output
59+
NAME: warmup
60+
LAST DEPLOYED: Tue Dec 9 21:10:44 2025
61+
NAMESPACE: helm-bench
62+
STATUS: deployed
63+
REVISION: 1
64+
TEST SUITE: None
65+
NOTES:
66+
CHART NAME: nginx
67+
CHART VERSION: 22.3.3
68+
APP VERSION: 1.29.3
69+
```
70+
5771
**After validation, remove the warm-up deployment:**
5872

5973
```console
@@ -89,9 +103,9 @@ What this measures:
89103

90104
You should see an output similar to:
91105
```output
92-
real 0m4.109s
93-
user 0m12.178s
94-
sys 0m0.470s
106+
real 0m3.998s
107+
user 0m12.798s
108+
sys 0m0.339s
95109
```
96110

97111
### Verify Deployments
@@ -134,11 +148,9 @@ What this measures:
134148

135149
You should see an output similar to:
136150
```output
137-
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production.
138-
For production installations, please set the following values according to your workload needs: - cloneStaticSiteFromGit.gitSync.resources - resources +info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
139-
real 0m12.758s
140-
user 0m7.360s
141-
sys 0m0.227s
151+
real 0m12.924s
152+
user 0m7.333s
153+
sys 0m0.312s
142154
```
143155

144156
### Metrics to Record
@@ -148,24 +160,13 @@ sys 0m0.227s
148160
- **Failures**: Any Helm failures or Kubernetes API errors.
149161
- **Pod readiness delay**: Time pods take to become Ready (resource pressure)
150162

151-
### Benchmark summary on x86_64
152-
To compare the benchmark results, the following results were collected by running the same benchmark on an `x86 - c4-standard-4` (4 vCPUs, 15 GB Memory) x86_64 VM in GCP, running SUSE:
153-
154-
| Test Case | Parallel Installs | `--wait` Used | Timeout | Total Time (real) |
155-
| ---------------------------- | ----------------- | ------------- | ------- | ----------------- |
156-
| Parallel Install (No Wait) | 5 | No | 10m | **6.06 s** |
157-
| Parallel Install (With Wait) | 3 | Yes | 15m | **14.41 s** |
158-
159-
160-
### Benchmark summary on Arm64
163+
### Benchmark summary
161164
Results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (SUSE):
162165

163166
| Test Case | Parallel Installs | `--wait` Used | Timeout | Total Time (real) |
164167
| ---------------------------- | ----------------- | ------------- | ------- | ----------------- |
165-
| Parallel Install (No Wait) | 5 | No | 10m | **4.11 s** |
166-
| Parallel Install (With Wait) | 3 | Yes | 15m | **12.76 s** |
167-
168-
### Helm Benchmark comparison insights
168+
| Parallel Install (No Wait) | 5 | No | 10m | **3.99 s** |
169+
| Parallel Install (With Wait) | 3 | Yes | 15m | **12.92 s** |
169170

170171
- **Arm64 shows faster Helm execution** for both warm and ready states, indicating efficient CLI and Kubernetes API handling on Arm-based GCP instances.
171172
- **The `--wait` flag significantly increases total execution time** because Helm waits for pods and services to reach a Ready state, revealing scheduler latency and image-pull delays rather than Helm CLI overhead.
22.3 KB
Loading
12.5 KB
Loading

content/learning-paths/servers-and-cloud-computing/helm-on-gcp/installtion.md renamed to content/learning-paths/servers-and-cloud-computing/helm-on-gcp/installation.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,36 @@ sudo zypper refresh
1717
sudo zypper update -y
1818
sudo zypper install -y curl git tar gzip
1919
```
20+
### Enable SUSE Containers Module
21+
This enables SUSE’s official container support, so Docker and container tools can work properly.
22+
``` console
23+
sudo SUSEConnect -p sle-module-containers/15.5/arm64
24+
sudo SUSEConnect --list-extensions | grep Containers
25+
```
26+
You should see "Activated" as part of the output from the above commands.
27+
28+
### Install Docker
29+
Docker is required to run KinD and Kubernetes components as containers. This step installs Docker, starts it, and allows your user to run Docker without sudo.
30+
``` console
31+
sudo zypper refresh
32+
sudo zypper install -y docker
33+
sudo systemctl enable --now docker
34+
sudo usermod -aG docker $USER
35+
exit
36+
```
37+
38+
Next, re-open a new shell into your VM and type the following:
39+
40+
```console
41+
docker ps
42+
```
43+
44+
You should see the following output:
45+
46+
```output
47+
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48+
```
49+
2050
### Install kubectl
2151
This step installs kubectl, the command-line tool used to interact with Kubernetes clusters, compiled for the Arm64 architecture.
2252

@@ -44,7 +74,9 @@ Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
4474
This step installs Helm using the official Helm installation script, ensuring you get a verified and up-to-date release.
4575

4676
```console
47-
curl -sSfL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | console
77+
curl -sSfL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
78+
chmod 755 ./get_helm.sh
79+
./get_helm.sh
4880
```
4981

5082
### Verify Installation
@@ -88,6 +120,6 @@ You should see an output similar to:
88120
NAME STATUS ROLES AGE VERSION
89121
helm-lab-control-plane Ready control-plane 23h v1.34.0
90122
```
91-
The node should be in the **Ready** state.
123+
The node should be in the **Ready** state. If not, please retry the command again.
92124

93125
You now have a fully working local Kubernetes environment on Arm64, ready for deploying applications using Helm.

content/learning-paths/servers-and-cloud-computing/helm-on-gcp/instance.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,19 @@ To create a virtual machine based on the C4A instance type:
2626

2727
![Create a Google Axion C4A Arm virtual machine in the Google Cloud Console with c4a-standard-4 selected alt-text#center](images/gcp-vm.png "Creating a Google Axion C4A Arm virtual machine in Google Cloud Console")
2828

29-
- Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**. Pick the preferred version for your Operating System. Ensure you select the **Arm image** variant. Click **Select**.
30-
- Under **Networking**, enable **Allow HTTP traffic**.
29+
30+
- Under **OS and Storage**, select **Change**, then choose an Arm64-based OS image. For this Learning Path, use **SUSE Linux Enterprise Server**.
31+
- If using use **SUSE Linux Enterprise Server**. Select "Pay As You Go" for the license type.
32+
- Edit the Disk size ("Size(GB)" Textfield...) below and change it from "10" to "50" to increase the disk size of the VM to 50 GB...
33+
- Once appropriately selected and configured, please Click **Select**.
34+
- Under **Networking**, enable **Allow HTTP traffic** as well as **Allow HTTPS traffic**.
3135
- Click **Create** to launch the instance.
36+
- Once created, you should see a "SSH" option to the right in your list of VM instances. Click on this to launch a SSH shell into your VM instance:
37+
38+
![Invoke a SSH session via your browser alt-text#center](images/gcp-ssh.png "Invoke a SSH session into your running VM instance")
39+
40+
- A window from your browser should come up and you should now see a shell into your VM instance:
41+
42+
![Terminal Shell in your VM instance alt-text#center](images/gcp-shell.png "Terminal shell in your VM instance")
43+
44+
Next, let's install Helm!

0 commit comments

Comments
 (0)