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/storefront-ai-assistant-gke-axion/_index.md
+3-7Lines changed: 3 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,9 @@
1
1
---
2
-
title: Build a mixed-placement AI shopping assistant on GKE with Axion
3
-
4
-
draft: true
5
-
cascade:
6
-
draft: true
2
+
title: Build a mixed-placement AI shopping assistant on Google Kubernetes Engine with Axion-based compute
7
3
8
4
minutes_to_complete: 120
9
5
description: Deploy and validate an Online Boutique storefront on GKE, add an AI shopping assistant, and compare N4A and C4A placement for the assistant tier.
10
-
who_is_this_for: This is an advanced topic for cloud developers, platform engineers, and site reliability engineers who run applications on Google Kubernetes Engine and want to place application tiers on the Axion-based machine series that fits each workload.
6
+
who_is_this_for: This is an advanced topic for cloud developers, platform engineers, and site reliability engineers who run applications on Google Kubernetes Engine (GKE) and want to place application tiers on the Axion-based machine series that fits each workload.
11
7
12
8
learning_objectives:
13
9
- Create and validate an Online Boutique storefront on an N4A node pool
@@ -18,7 +14,7 @@ learning_objectives:
18
14
prerequisites:
19
15
- A [Google Cloud account](https://console.cloud.google.com/) with billing enabled
20
16
- Access to a [GKE Standard cluster with Arm node pools](https://cloud.google.com/kubernetes-engine/docs/how-to/create-arm-clusters-nodes), including N4A and C4A node pools
21
-
- Basic familiarity with Docker, Kubernetes, Kustomize, and Google Kubernetes Engine
17
+
- Basic familiarity with Docker, Kubernetes, Kustomize, and GKE
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/background.md
+13-8Lines changed: 13 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,27 +9,29 @@ layout: "learningpathall"
9
9
10
10
Modern AI applications often contain more than one workload shape. For example, a storefront is steady, service-oriented, and always on. An AI assistant is burstier and more latency-sensitive because it runs only when users ask for help.
11
11
12
-
This Learning Path uses that split in a live Online Boutique storefront on Google Kubernetes Engine (GKE). The storefront starts on N4A nodes powered by Google Axion processors and Arm Neoverse N3. You add the missing `shoppingassistantservice`, run it on N4A first, and then move only that assistant tier to C4A nodes powered by Google Axion and Arm Neoverse V2.
12
+
You'll use this split in a live Online Boutique storefront on Google Kubernetes Engine (GKE). The storefront starts on N4A nodes powered by Google Axion processors and Arm Neoverse N3. You'll add the missing `shoppingassistantservice`, run it on N4A first, and then move only that assistant tier to C4A nodes powered by Google Axion and Arm Neoverse V2.
13
13
14
-
The goal isn't to prove that one Axion-based machine series replaces the other. You use N4A for the steady storefront tier and evaluate C4A for the AI reasoning tier so you can decide which machine series fits each workload.
14
+
The goal isn't to prove that one Axion-based machine series replaces the other. You'll use N4A for the steady storefront tier and evaluate C4A for the AI reasoning tier so you can decide which machine series fits each workload.
15
15
16
16

17
17
18
-
The diagram shows the final mixed-placement pattern you build toward. Its left side summarizes the multi-architecture image publishing process used for the existing storefront images; you don't repeat that process here. The assistant image you build later targets only `linux/arm64` because both destination node pools are Arm-based. The right side shows the final placement: core services remain on N4A while the assistant, its Ollama sidecar, and the Gemma model move together to C4A.
18
+
The diagram shows the final mixed-placement pattern you'll build toward. Its left side summarizes the multi-architecture image publishing process used for the existing storefront images; you don't repeat that process here. The assistant image you'll build later targets only `linux/arm64` because both destination node pools are Arm-based. The right side shows the final placement: core services remain on N4A while the assistant, its Ollama sidecar, and the Gemma model move together to C4A.
19
19
20
20
## How the storefront already runs on Arm
21
21
22
22
The storefront baseline uses container images that can run on Arm nodes. A common way to publish portable container images is to use a multi-architecture image, which is one image reference that contains variants for more than one CPU architecture, such as `linux/amd64` and `linux/arm64`.
23
23
24
-
When Kubernetes schedules a pod that uses a multi-architecture image on an Arm node, the container runtime pulls the Arm-compatible variant from the same image reference. That is why the storefront can already run on Axion nodes before you build the assistant image.
24
+
When Kubernetes schedules a pod that uses a multi-architecture image on an Arm node, the container runtime pulls the Arm-compatible variant from the same image reference. That's why the storefront can already run on Axion nodes before you build the assistant image.
25
25
26
-
This Learning Path starts with Arm-compatible storefront images already available. To learn the full build-and-publish workflow for multi-architecture images on GKE, see [Migrate x86 workloads to Arm on Google Kubernetes Engine with Axion processors](/learning-paths/servers-and-cloud-computing/gke-multi-arch-axion/).
26
+
You'll start with Arm-compatible storefront images already available. To learn the full build-and-publish workflow for multi-architecture images on GKE, see [Migrate x86 workloads to Arm on Google Kubernetes Engine with Axion processors](/learning-paths/servers-and-cloud-computing/gke-multi-arch-axion/).
27
27
28
-
One image reference can therefore contain an Arm-compatible variant. You confirm the storefront image reference from the source tree after you set up your tools and cluster access.
28
+
One image reference can therefore contain an Arm-compatible variant. You'll confirm the storefront image reference from the source tree after you set up your tools and cluster access.
29
29
30
30
## How assistant requests flow
31
31
32
-
The `shoppingassistantservice` is the AI layer for the application. It runs as its own Kubernetes service and handles requests sent through the storefront frontend. When a shopper uses the assistant, the request follows this path:
32
+
The `shoppingassistantservice` is the AI layer for the application. It runs as its own Kubernetes service and handles requests sent through the storefront frontend.
33
+
34
+
When a shopper uses the assistant, the request follows this path:
33
35
34
36
1. The browser sends the request to `frontend`.
35
37
2.`frontend` forwards the request to `shoppingassistantservice`.
@@ -43,5 +45,8 @@ The `search_catalog` and `get_product_details` tools query the live catalog. The
43
45
44
46
This design keeps the placement comparison focused. You don't add a separate vector database, retrieval pipeline, or hosted large language model API. When you move the assistant pod, you move the assistant logic and local reasoning runtime together as one AI tier.
45
47
48
+
## What you've learned and what's next
49
+
50
+
You've now understood the architecture of the storefront application and its AI assistant.
46
51
47
-
In the next section, you'll set up environment variables, connect to the GKE cluster, and clone the source tree that contains the assistant implementation.
52
+
Next, you'll set up environment variables, connect to the GKE cluster, and clone the source tree that contains the assistant implementation.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/build-assistant-image.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ layout: "learningpathall"
7
7
8
8
## Build one Arm image for both Axion placements
9
9
10
-
Both the N4A and C4A node pools in this Learning Path use Arm-based Google Axion processors. You only need one `linux/arm64` assistant image, and that image can run in either placement.
10
+
You need only one `linux/arm64` assistant image for both the N4A and C4A pools, and that image can run in either placement.
11
11
12
12
{{% notice Note %}}
13
13
This is an Arm-targeted build for Axion, not a full multi-architecture build. A multi-architecture image is useful when the same tag must support non-Arm environments such as `linux/amd64`.
@@ -46,10 +46,10 @@ List the tags for the assistant image:
46
46
gcloud artifacts docker tags list "${ASSISTANT_IMAGE_REPO}"
47
47
```
48
48
49
-
The output should include the `lab-v1` tag.
49
+
The output includes the `lab-v1` tag.
50
50
51
-
## What you've accomplished
51
+
## What you've accomplished and what's next
52
52
53
-
You've built and published an Arm image for the shopping assistant. Kubernetes can now pull this image when you deploy the assistant on N4A.
53
+
You've now built and published an Arm image for the shopping assistant. Kubernetes can now pull this image when you deploy the assistant on N4A.
54
54
55
55
Next, you'll create the N4A overlay and add the assistant to the running storefront.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/deploy-assistant-n4a.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ export FRONTEND_IP="$(kubectl get service frontend-external \
18
18
export APP_URL="http://${FRONTEND_IP}"
19
19
```
20
20
21
-
The `storefront-n4a` overlay already places every deployment on N4A. Extend it with the assistant component and the image you pushed. The existing `node-selector.yaml` patch then applies the same placement to the assistant deployment.
21
+
The `storefront-n4a` overlay already places every deployment on N4A. Extend it with the assistant component and the image you pushed. The existing `node-selector.yaml` patch then applies the same placement to the assistant deployment:
@@ -49,7 +49,7 @@ sed -n '1,120p' kustomize/overlays/storefront-n4a/node-selector.yaml
49
49
kubectl kustomize kustomize/overlays/storefront-n4a | sed -n '1,240p'
50
50
```
51
51
52
-
Do not apply the overlay if the rendered manifest has an empty image name, image tag, or node-pool value.
52
+
Don't apply the overlay if the rendered manifest has an empty image name, image tag, or node-pool value.
53
53
54
54
## Apply the overlay
55
55
@@ -62,7 +62,7 @@ kubectl rollout status deployment/shoppingassistantservice --timeout=1200s
62
62
```
63
63
64
64
{{% notice Note %}}
65
-
`kubectl apply -k` reapplies the full rendered application state. It is normal to see existing deployments reported as `configured`. The `shopping-assistant` component patches `frontend`, so a frontend rollout is expected.
65
+
`kubectl apply -k` reapplies the full rendered application state. It's normal to see existing deployments reported as `configured`. The `shopping-assistant` component patches `frontend`, so a frontend rollout is expected.
66
66
{{% /notice %}}
67
67
68
68
## Confirm pod placement
@@ -121,7 +121,7 @@ for i in {1..12}; do
121
121
done
122
122
```
123
123
124
-
The JSON response should include a non-empty assistant message. The exact product names can vary, but the response should be grounded in the live product catalog.
124
+
The JSON response includes a non-empty assistant message. The exact product names can vary, but the response is grounded in the live product catalog.
125
125
126
126
## Try the browser flow
127
127
@@ -138,8 +138,8 @@ What is in my cart now?
138
138
139
139
The assistant should recommend a catalog item, ask for confirmation before changing the cart, and then show the cart contents.
140
140
141
-
## What you've accomplished
141
+
## What you've accomplished and what's next
142
142
143
-
You've deployed the assistant on N4A and validated it through the same storefront path that a shopper uses.
143
+
You've now deployed the assistant on N4A and validated it through the same storefront path that a shopper uses.
144
144
145
145
Next, you'll observe the assistant as a live workload and capture the N4A benchmark baseline.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/move-assistant-c4a.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,7 +84,7 @@ sed -n '1,140p' kustomize/overlays/assistant-c4a/shoppingassistant-c4a.yaml
84
84
kubectl kustomize kustomize/overlays/assistant-c4a | sed -n '1,240p'
85
85
```
86
86
87
-
Do not continue if `newName`, `newTag`, or either node-pool value is blank.
87
+
Don't continue if `newName`, `newTag`, or either node-pool value is blank.
88
88
89
89
{{% notice Note %}}
90
90
The first patch keeps the storefront on N4A by default. The second patch overrides only `shoppingassistantservice` and moves that deployment to C4A.
The summary should show successful requests and the assistant running on the C4A node pool. Do not compare the runs if the summary line is missing or reports a different node pool.
161
+
The summary shows successful requests and the assistant running on the C4A node pool. Don't compare the runs if the summary line is missing or reports a different node pool.
162
162
163
163
## Compare the two runs
164
164
@@ -187,7 +187,7 @@ Your numbers can vary by prompt mix, model warmup state, node pressure, and clus
187
187
Assistant CPU values come from sampled Kubernetes telemetry. Short bursts can be underrepresented, especially on faster runs. Treat request success, benchmark duration, and latency as the primary comparison signals.
188
188
{{% /notice %}}
189
189
190
-
## Explain the result
190
+
## Understand the result
191
191
192
192
You changed one architectural variable: the placement of the assistant. The storefront tier, prompts, model, traffic shape, and benchmark script stayed the same.
193
193
@@ -201,12 +201,12 @@ That sequence is the core architectural point. A modern application can contain
201
201
202
202
Both Axion machine series run `arm64`, so the same assistant image moves between the Neoverse N3-based N4A pool and the Neoverse V2-based C4A pool. You can evaluate placement without maintaining a second image or build pipeline.
203
203
204
-
For this application, the useful pattern is not replacing one machine series with another. It is placing each workload tier where its behavior fits best.
204
+
For this application, the useful pattern isn't replacing one machine series with another. It's placing each workload tier where its behavior fits best.
205
205
206
-
If your N4A and C4A results are close, or if N4A looks better for a particular run, that is still useful information. The decision should come from the workload behavior you observe, not from assuming one Axion-based machine series is always the right answer.
206
+
If your N4A and C4A results are close, or if N4A looks better for a particular run, that's still useful information. The decision should come from the workload behavior you observe, not from assuming one Axion-based machine series is always the right answer.
207
207
208
208
## What you've accomplished
209
209
210
210
You've built, observed, and compared a mixed-placement storefront application on Axion. You kept the storefront on N4A, moved only the assistant tier to C4A, and used the same benchmark to compare both placements.
211
211
212
-
You are now ready to use the same overlay and benchmark pattern to evaluate which Axion-based machine series matches each tier's workload behavior.
212
+
You're now ready to use the same overlay and benchmark pattern to evaluate which Axion-based machine series matches each tier's workload behavior.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/observe-benchmark-n4a.md
| Terminal 3 | Live traffic and fixed benchmarks |
48
+
Use the first terminal for collecting telemetry, the second terminal for the dashboard web server, and the third terminal for live traffic and fixed benchmarks.
56
49
57
50
## Start telemetry collection
58
51
59
-
Run this in Terminal 1. The `rm` command clears previous live telemetry samples for the dashboard:
52
+
Run the following command in the first terminal. The `rm` command clears previous live telemetry samples for the dashboard:
60
53
61
54
```bash
62
55
cd"${REPO}"||exit 1
@@ -71,7 +64,7 @@ Leave this command running.
71
64
72
65
## Start the dashboard
73
66
74
-
Run this in Terminal 2. The `rm` command clears previous live request data for the dashboard:
67
+
Run the following command in the second terminal. The `rm` command clears previous live request data for the dashboard:
75
68
76
69
```bash
77
70
cd"${REPO}"||exit 1
@@ -87,7 +80,7 @@ If port `5000` is already in use, choose another available port, such as `5001`.
87
80
88
81
## Confirm assistant health
89
82
90
-
Run this in Terminal 3:
83
+
Run the following command in the third terminal to confirm the health of the assistant:
The command can keep running after the last request lines appear. It is still sampling telemetry and waiting for the assistant to settle back toward idle.
157
+
The command can keep running after the last request lines appear. It's still sampling telemetry and waiting for the assistant to settle back toward idle.
The summary should show successful requests and the assistant running on the N4A node pool. Do not continue if the summary line is missing or reports a different node pool.
165
+
The summary shows successful requests and the assistant running on the N4A node pool. Don't continue if the summary line is missing or reports a different node pool.
173
166
174
-
## What you've accomplished
167
+
## What you've accomplished and what's next
175
168
176
-
You've observed the assistant as a live workload and captured the N4A benchmark baseline.
169
+
You've now observed the assistant as a live workload and captured the N4A benchmark baseline.
177
170
178
171
Next, you'll move only the assistant tier to C4A and run the same benchmark again.
0 commit comments