You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/gardener-gcp/_index.md
+4-8Lines changed: 4 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,18 +1,14 @@
1
1
---
2
2
title: Deploy Gardener on Google Cloud C4A (Arm-based Axion VMs)
3
3
4
-
draft: true
5
-
cascade:
6
-
draft: true
7
-
8
4
minutes_to_complete: 50
9
5
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 LinuxArm64 environments, specifically using Google Cloud C4A virtual machines powered by Axion processors.
11
7
12
8
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)
14
10
- 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)
16
12
- Validate Gardener functionality by deploying workloads into a Shoot cluster
17
13
- Perform baseline security benchmarking of Gardener-managed Kubernetes clusters using kube-bench on Arm64
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)
3
3
4
4
weight: 2
5
5
6
6
layout: "learningpathall"
7
7
---
8
8
9
-
## Google Axion C4A Arm instances in Google Cloud
9
+
## Explore Google Axion C4A Arm instances
10
10
11
-
Google Axion C4A is a family of Arm-based virtual machines built on Google’s 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.
12
12
13
13
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.
14
14
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).
16
16
17
-
## Gardener
17
+
## Explore Gardener
18
18
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.
20
20
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:
22
22
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.
24
26
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!
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/gardener-gcp/baseline.md
+32-40Lines changed: 32 additions & 40 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ layout: learningpathall
10
10
11
11
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.
12
12
13
-
###Set the kubeconfig environment variable
13
+
## Set the kubeconfig environment variable
14
14
15
15
Configure kubectl to communicate with your Gardener cluster by setting the `KUBECONFIG` variable:
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.
40
39
41
-
###Deploy a test nginx pod
40
+
## Deploy a test nginx pod
42
41
43
42
Deploy a simple nginx pod to verify that workload deployment works correctly:
44
43
@@ -62,7 +61,7 @@ test-nginx 1/1 Running 0 4s
62
61
63
62
When the pod reaches `Running` status, workload deployment is functioning. Press **Ctrl + C** to stop watching the pod.
64
63
65
-
###Create a service for the pod
64
+
## Create a service for the pod
66
65
67
66
Kubernetes services provide stable network endpoints for pods. Create a ClusterIP service to expose your nginx pod:
A ClusterIP is assigned (example: 10.2.194.17). This confirms that Kubernetes services are functioning.
85
83
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.
88
85
89
-
- Start a temporary curl pod
90
-
- Send an HTTP request to the nginx service
86
+
## Test pod-to-service connectivity
91
87
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:
93
89
94
-
```console
90
+
```console
95
91
kubectl run curl --image=curlimages/curl -i --tty -- sh
96
92
```
97
93
98
-
Inside pod shell:
94
+
Inside the pod shell, send an HTTP request to the nginx service:
99
95
100
-
```console
96
+
```console
101
97
curl http://test-nginx-svc
102
98
```
103
99
Exit shell:
@@ -106,7 +102,7 @@ Exit shell:
106
102
exit
107
103
```
108
104
109
-
You should see an output similar to:
105
+
The output is similar to:
110
106
111
107
```output
112
108
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
140
136
```
141
137
This confirms pod-to-service networking.
142
138
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.
145
140
146
-
###Verify DNS resolution
141
+
## Verify DNS resolution
147
142
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:
150
144
151
145
If DNS resolves correctly, service discovery is healthy.
Successful DNS resolution confirms that CoreDNS is functioning and service discovery is healthy.
172
162
173
-
If logs show nginx startup and exec returns version info, pod access works.
163
+
## Check pod logs and command execution
174
164
175
-
```console
165
+
Verify that you can access pod logs and execute commands inside containers:
166
+
167
+
```console
176
168
kubectl logs test-nginx | head
177
169
kubectl exec test-nginx -- nginx -v
178
170
```
179
171
-`kubectl logs` → Shows nginx pod logs.
180
172
-`kubectl exec` → Runs nginx -v inside the pod.
181
173
182
-
You should see an output similar to:
174
+
The output is similar to:
183
175
184
176
```output
185
177
/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:
196
188
> kubectl exec test-nginx -- nginx -v
197
189
nginx version: nginx/1.29.3
198
190
```
199
-
- Logs show nginx starting.
200
-
- Exec shows nginx version (e.g., `nginx version: nginx/1.25.3`).
201
191
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
208
199
kubectl delete pod test-nginx curl
209
200
kubectl delete svc test-nginx-svc
210
201
```
211
-
Confirms cleanup works and keeps the cluster clean.
212
202
213
-
You should see an output similar to:
203
+
The output is similar to:
214
204
215
205
```output
216
206
pod "test-nginx" deleted from default namespace
217
207
pod "curl" deleted from default namespace
218
208
> kubectl delete svc test-nginx-svc
219
209
service "test-nginx-svc" deleted from default namespace
220
210
```
211
+
## Summary and what's next
212
+
221
213
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