Skip to content

Commit 3397b7d

Browse files
Update Gardener GCP learning path content
1 parent bb8821b commit 3397b7d

File tree

6 files changed

+110
-116
lines changed

6 files changed

+110
-116
lines changed

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
---
22
title: Deploy Gardener on Google Cloud C4A (Arm-based Axion VMs)
33

4-
draft: true
5-
cascade:
6-
draft: true
7-
84
minutes_to_complete: 50
95

10-
who_is_this_for: This learning path is intended for software developers deploying and optimizing Gardener workloads on Linux/Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
6+
who_is_this_for: This is an introductory topic for software developers deploying and optimizing Gardener workloads on Linux Arm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
117

128
learning_objectives:
13-
- Provision an Arm-based SUSE SLES virtual machine on Google Cloud (C4A with Axion processors)
9+
- Provision an Arm-based SUSE Linux Enterprise Server (SLES) virtual machine on Google Cloud (C4A with Axion processors)
1410
- Install and configure Gardener on a SUSE Arm64 (C4A) instance
15-
- Deploy Garden, Seed, and Shoot clusters locally using KinD
11+
- Deploy Garden, Seed, and Shoot clusters locally using Kubernetes in Docker (KinD)
1612
- Validate Gardener functionality by deploying workloads into a Shoot cluster
1713
- Perform baseline security benchmarking of Gardener-managed Kubernetes clusters using kube-bench on Arm64
1814

@@ -62,7 +58,7 @@ further_reading:
6258
type: documentation
6359

6460
- resource:
65-
title: kube-bench documentation
61+
title: kube-bench security benchmarking tool
6662
link: https://github.com/aquasecurity/kube-bench
6763
type: documentation
6864

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,35 @@
11
---
2-
title: Getting started with Gardener on Google Axion C4A (Arm Neoverse-V2)
2+
title: Get started with Gardener on Google Axion C4A (Arm Neoverse-V2)
33

44
weight: 2
55

66
layout: "learningpathall"
77
---
88

9-
## Google Axion C4A Arm instances in Google Cloud
9+
## Explore Google Axion C4A Arm instances
1010

11-
Google Axion C4A is a family of Arm-based virtual machines built on Googles custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
11+
Google Axion C4A is a family of Arm-based virtual machines built on Google's custom Axion CPU, which uses Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines deliver strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
1212

1313
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud.
1414

15-
To learn more about Google Axion, refer to the [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu) blog.
15+
To learn more about Google Axion, see the Google blog [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).
1616

17-
## Gardener
17+
## Explore Gardener
1818

19-
Gardener is an open-source, Kubernetes-native system for managing and operating Kubernetes clusters at scale. It enables automated creation, update, healing, and deletion of clusters across multiple cloud and on-prem providers.
19+
Gardener is an open-source, Kubernetes-native system for managing and operating Kubernetes clusters at scale. It enables automated creation, updates, healing, and deletion of clusters across multiple cloud providers and on-premises environments.
2020

21-
Gardener uses Kubernetes APIs and CRDs to declaratively manage clusters in a cloud-agnostic way. It follows a **Garden–Seed–Shoot** architecture to separate control planes from workload clusters.
21+
Gardener uses Kubernetes APIs and Custom Resource Definitions (CRDs) to declaratively manage clusters in a cloud-agnostic way. It follows a Garden–Seed–Shoot architecture to separate control planes from workload clusters:
2222

23-
Gardener is widely used to build reliable internal developer platforms and operate thousands of Kubernetes clusters.
23+
- Garden is the central management cluster that runs Gardener components.
24+
- Seed clusters are intermediary clusters that host Shoot control planes.
25+
- Shoot clusters are the workload clusters managed by Gardener for end users.
2426

25-
To learn more, visit the Gardener [official website](https://gardener.cloud/) and explore the [documentation](https://gardener.cloud/docs/).
27+
Organizations use Gardener to build and operate Kubernetes clusters at scale, creating reliable internal developer platforms that serve thousands of teams.
28+
29+
To learn more, visit the [Gardener website](https://gardener.cloud/) and explore the [Gardener documentation](https://gardener.cloud/docs/).
30+
31+
## Summary and what's next
32+
33+
You now understand Google Axion C4A's capabilities as a cost-effective Arm-based platform and how Gardener automates Kubernetes cluster management at scale. Together, these technologies provide a powerful foundation for running enterprise Kubernetes workloads on Arm infrastructure.
34+
35+
In the next sections, you'll provision your Arm-based VM on Google Cloud, install Gardener, and deploy your first clusters. You're ready to get started!

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

Lines changed: 32 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ layout: learningpathall
1010

1111
This section confirms that your Gardener Local setup is functioning correctly on an Arm-based Google Cloud C4A VM before running production workloads. You'll check cluster health, deploy test workloads, and validate networking.
1212

13-
### Set the kubeconfig environment variable
13+
## Set the kubeconfig environment variable
1414

1515
Configure kubectl to communicate with your Gardener cluster by setting the `KUBECONFIG` variable:
1616

@@ -20,7 +20,7 @@ export KUBECONFIG=$PWD/example/gardener-local/kind/local/kubeconfig
2020

2121
This tells kubectl where to find your cluster's authentication credentials.
2222

23-
### Check cluster health
23+
## Check cluster health
2424

2525
Verify that your Gardener Local Kubernetes cluster is healthy by checking node and pod status:
2626

@@ -31,14 +31,13 @@ kubectl get pods -A
3131

3232
The output is similar to:
3333

34-
```output
35-
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE
34+
```outputNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE
3635
gardener-local-control-plane Ready control-plane 148m v1.32.5 172.18.0.2 <none> Debian GNU/Linux 12 (bookworm)
3736
```
3837

3938
A `Ready` status indicates the control plane is healthy. You should also see numerous pods running across the `garden`, `kube-system`, `istio-system`, and `shoot--local--local` namespaces, confirming that all Gardener components are operational.
4039

41-
### Deploy a test nginx pod
40+
## Deploy a test nginx pod
4241

4342
Deploy a simple nginx pod to verify that workload deployment works correctly:
4443

@@ -62,7 +61,7 @@ test-nginx 1/1 Running 0 4s
6261

6362
When the pod reaches `Running` status, workload deployment is functioning. Press **Ctrl + C** to stop watching the pod.
6463

65-
### Create a service for the pod
64+
## Create a service for the pod
6665

6766
Kubernetes services provide stable network endpoints for pods. Create a ClusterIP service to expose your nginx pod:
6867

@@ -81,23 +80,20 @@ The output is similar to:
8180
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
8281
test-nginx-svc ClusterIP 10.2.194.17 <none> 80/TCP 9s
8382
```
84-
A ClusterIP is assigned (example: 10.2.194.17). This confirms that Kubernetes services are functioning.
8583

86-
### Test Service-to-Pod Connectivity
87-
Now we verify that one pod can talk to another pod through a service.
84+
The assigned ClusterIP (such as `10.2.194.17`) confirms that Kubernetes service networking is functioning correctly.
8885

89-
- Start a temporary curl pod
90-
- Send an HTTP request to the nginx service
86+
## Test pod-to-service connectivity
9187

92-
**Start a curl pod:** Create a temporary curl pod.
88+
Verify that one pod can communicate with another pod through a service by running curl inside a temporary pod:
9389

94-
``` console
90+
```console
9591
kubectl run curl --image=curlimages/curl -i --tty -- sh
9692
```
9793

98-
Inside pod shell:
94+
Inside the pod shell, send an HTTP request to the nginx service:
9995

100-
``` console
96+
```console
10197
curl http://test-nginx-svc
10298
```
10399
Exit shell:
@@ -106,7 +102,7 @@ Exit shell:
106102
exit
107103
```
108104

109-
You should see an output similar to:
105+
The output is similar to:
110106

111107
```output
112108
All commands and output from this session will be recorded in container logs, including credentials and sensitive information passed through the command prompt.
@@ -140,21 +136,19 @@ Session ended, resume using 'kubectl attach curl -c curl -i -t' command when the
140136
```
141137
This confirms pod-to-service networking.
142138

143-
- Creates a curl container with an interactive shell.
144-
- Uses curl to send an HTTP request to the nginx service.
139+
Successful curl output confirms that pod-to-service networking is working correctly.
145140

146-
### Verify DNS resolution
141+
## Verify DNS resolution
147142

148-
- `nslookup test-nginx-svc` checks if DNS can resolve the service name
149-
- `CoreDNS` is responsible for this
143+
Test DNS service discovery by running `nslookup` inside the curl pod:
150144

151145
If DNS resolves correctly, service discovery is healthy.
152146

153147
``` console
154148
kubectl exec curl -- nslookup test-nginx-svc.default.svc.cluster.local
155149
```
156150

157-
You should see an output similar to:
151+
The output is similar to:
158152

159153
```output
160154
Server: 10.2.0.10
@@ -163,23 +157,21 @@ Address: 10.2.0.10:53
163157
Name: test-nginx-svc.default.svc.cluster.local
164158
Address: 10.2.194.17
165159
```
166-
If DNS fails, networking or CoreDNS is broken.
167160

168-
### Test Logs and Exec
169-
This confirms two important Kubernetes features:
170-
- Logs – you can debug applications
171-
- Exec – you can run commands inside containers
161+
Successful DNS resolution confirms that CoreDNS is functioning and service discovery is healthy.
172162

173-
If logs show nginx startup and exec returns version info, pod access works.
163+
## Check pod logs and command execution
174164

175-
``` console
165+
Verify that you can access pod logs and execute commands inside containers:
166+
167+
```console
176168
kubectl logs test-nginx | head
177169
kubectl exec test-nginx -- nginx -v
178170
```
179171
- `kubectl logs` → Shows nginx pod logs.
180172
- `kubectl exec` → Runs nginx -v inside the pod.
181173

182-
You should see an output similar to:
174+
The output is similar to:
183175

184176
```output
185177
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
@@ -196,26 +188,26 @@ You should see an output similar to:
196188
> kubectl exec test-nginx -- nginx -v
197189
nginx version: nginx/1.29.3
198190
```
199-
- Logs show nginx starting.
200-
- Exec shows nginx version (e.g., `nginx version: nginx/1.25.3`).
201191

202-
### Delete Test Resources
203-
Once testing is complete, temporary resources should be removed.
204-
- Deletes nginx and curl pods
205-
- Deletes the service
206-
207-
``` console
192+
Pod logs and command execution working confirms that you can debug and troubleshoot workloads effectively.
193+
194+
## Clean up test resources
195+
196+
Remove the test pods and service to keep your cluster clean:
197+
198+
```console
208199
kubectl delete pod test-nginx curl
209200
kubectl delete svc test-nginx-svc
210201
```
211-
Confirms cleanup works and keeps the cluster clean.
212202

213-
You should see an output similar to:
203+
The output is similar to:
214204

215205
```output
216206
pod "test-nginx" deleted from default namespace
217207
pod "curl" deleted from default namespace
218208
> kubectl delete svc test-nginx-svc
219209
service "test-nginx-svc" deleted from default namespace
220210
```
211+
## Summary and what's next
212+
221213
After completing these steps, you have confirmed that the Kubernetes cluster and Gardener setup are healthy, core components are functioning correctly, pods start successfully, networking and services operate as expected, DNS resolution works, and the cluster is ready to run real workloads.

0 commit comments

Comments
 (0)