Skip to content

Commit 493a5ec

Browse files
authored
Merge pull request #3491 from anupras-mohapatra-arm/servers-and-cloud-computing
Storefront AI assistant on GKE editorial review
2 parents bc4ddfb + ba7cf73 commit 493a5ec

9 files changed

Lines changed: 147 additions & 98 deletions

File tree

content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/_index.md

Lines changed: 57 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,74 @@
11
---
2-
title: Build a mixed-placement AI shopping assistant on GKE with Axion
3-
4-
draft: true
5-
cascade:
6-
draft: true
2+
title: Deploy a mixed-placement AI shopping assistant on Google Kubernetes Engine with Axion-based compute
73

84
minutes_to_complete: 120
9-
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.
5+
description: Deploy and validate an Online Boutique storefront on GKE on Arm, add an AI shopping assistant, and compare N4A and C4A placement for the assistant tier.
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.
117

128
learning_objectives:
13-
- Create and validate an Online Boutique storefront on an N4A node pool
9+
- Deploy and validate an Online Boutique storefront on an N4A node pool
1410
- Build and push a `linux/arm64` container image, then add the AI shopping assistant to the storefront
1511
- Use Kustomize overlays to run the assistant on N4A first, then move it to C4A
1612
- Capture and compare benchmark summaries for the same assistant workload on N4A and C4A
1713

1814
prerequisites:
1915
- A [Google Cloud account](https://console.cloud.google.com/) with billing enabled
20-
- 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
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, with the Kubernetes Metrics API enabled
17+
- Permissions to get cluster credentials, deploy Kubernetes workloads and services, read pod logs and metrics, and create or use an Artifact Registry Docker repository
18+
- Cloud Shell or a Linux or macOS administrative workstation with Docker Buildx, `gcloud`, `kubectl`, `git`, `curl`, Python 3.10 or later, and `jq`
19+
- Basic familiarity with Docker, Kubernetes, Kustomize, and GKE
20+
21+
# START generated_summary_faq
22+
generated_summary_faq:
23+
template_version: summary-faq-v3
24+
generated_at: '2026-07-13T19:30:38Z'
25+
generator: ai
26+
ai_assisted: true
27+
ai_review_required: true
28+
model: gpt-5
29+
prompt_template: summary-faq-v3
30+
source_hash: cdd45953e2784d3a6b0894fac600b6b03048b514493d6526709908f3049595cc
31+
summary_generated_at: '2026-07-13T19:30:38Z'
32+
summary_source_hash: cdd45953e2784d3a6b0894fac600b6b03048b514493d6526709908f3049595cc
33+
faq_generated_at: '2026-07-13T19:30:38Z'
34+
faq_source_hash: cdd45953e2784d3a6b0894fac600b6b03048b514493d6526709908f3049595cc
35+
summary: >-
36+
You'll deploy the Online Boutique storefront on Google Kubernetes
37+
Engine using Arm-based Axion nodes, validate a baseline on N4A, and add a gRPC-driven AI shopping
38+
assistant. You'll build and push a single `linux/arm64` container image to Artifact Registry, then
39+
use Kustomize overlays to run the assistant on N4A before moving only that tier to C4A. After
40+
reviewing the assistant’s source code and runtime dependencies, you'll confirm scheduling on the intended
41+
node pool and capture benchmark summaries to compare the same assistant workload across N4A
42+
and C4A. You'll finish with a mixed-placement deployment where the steady storefront remains
43+
on N4A and the burstier assistant runs on the selected pool.
44+
faqs:
45+
- question: How do I verify the cluster has both N4A and C4A node pools before I start?
46+
answer: >-
47+
Use `kubectl` to list nodes and confirm that both pools are present. The workflow assumes
48+
an `arm64` GKE Standard cluster with separate N4A and C4A pools.
49+
- question: What result should I expect after I apply the baseline overlay?
50+
answer: >-
51+
The storefront runs on N4A, and `shoppingassistantservice` isn't present. This is intentional
52+
because you'll build and deploy the assistant in later steps.
53+
- question: I've run this path before. What should I remove before I recreate the baseline?
54+
answer: >-
55+
Delete any existing assistant deployment, related service, and service account so the baseline reflects a
56+
storefront without the assistant.
57+
- question: Do I need different container images for N4A and C4A when I deploy the assistant?
58+
answer: >-
59+
No. You'll build one `linux/arm64` image targeted for Axion that'll run in either placement.
60+
- question: How do I confirm the assistant is scheduled on the intended node pool when I switch
61+
from N4A to C4A?
62+
answer: >-
63+
Check the node assigned to the assistant pod and verify it matches the target pool after
64+
applying the appropriate Kustomize overlay. Inspect pod logs and service reachability to
65+
confirm the tier is healthy before capturing benchmarks.
66+
# END generated_summary_faq
2267

2368
author:
2469
- Rani Chowdary Mandepudi
2570

26-
generate_summary_faq: true
71+
generate_summary_faq: false
2772
rerun_summary: false
2873
rerun_faqs: false
2974

@@ -78,3 +123,4 @@ weight: 1 # _index.md always has weight of 1 to order corr
78123
layout: "learningpathall" # All files under learning paths have this same wrapper
79124
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
80125
---
126+

content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/background.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,28 @@ layout: "learningpathall"
99

1010
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.
1111

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.
1313

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.
1515

1616
![Architecture diagram showing the existing multi-architecture storefront image workflow and the final GKE placement on Axion. Core storefront services run on N4A, while the shopping assistant, Ollama sidecar, and Gemma model run together on C4A and call the live cart and catalog services.#center](images/mixed-placement-agentic-storefront-on-axion.webp "Mixed-placement agentic storefront on Axion")
1717

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. It 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 diagram also shows the final placement: core services remain on N4A while the assistant, its Ollama sidecar, and the Gemma model move together to C4A.
1919

2020
## How the storefront already runs on Arm
2121

2222
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`.
2323

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. You'll confirm the storefront image reference from the source tree after you set up your tools and cluster access.
2525

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/).
2727

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.
2928

3029
## How assistant requests flow
3130

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:
31+
The `shoppingassistantservice` is the AI layer for the application. It runs as its own Kubernetes service and handles requests sent through the storefront frontend.
32+
33+
When a shopper uses the assistant, the request follows this path:
3334

3435
1. The browser sends the request to `frontend`.
3536
2. `frontend` forwards the request to `shoppingassistantservice`.
@@ -43,5 +44,8 @@ The `search_catalog` and `get_product_details` tools query the live catalog. The
4344

4445
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.
4546

47+
## What you've learned and what's next
48+
49+
You've now learned about the architecture of the storefront application and its AI assistant.
4650

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.
51+
Next, you'll set up environment variables, connect to the GKE cluster, and clone the source tree that contains the assistant implementation.

content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/build-assistant-image.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
2-
title: Build and push the assistant image
2+
title: Build and push the assistant image to Artifact Registry
33
description: Build the shopping assistant container image for arm64 and push it to Artifact Registry for deployment on Axion.
44
weight: 6
55
layout: "learningpathall"
66
---
77

88
## Build one Arm image for both Axion placements
99

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.
1111

1212
{{% notice Note %}}
1313
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`.
@@ -28,7 +28,7 @@ Confirm the reusable image path you configured during setup:
2828
echo "${ASSISTANT_IMAGE}"
2929
```
3030

31-
## Build and push the assistant image
31+
## Use buildx to build and push the assistant image
3232

3333
Build the assistant image for `linux/arm64` and push it to Artifact Registry:
3434

@@ -46,10 +46,10 @@ List the tags for the assistant image:
4646
gcloud artifacts docker tags list "${ASSISTANT_IMAGE_REPO}"
4747
```
4848

49-
The output should include the `lab-v1` tag.
49+
The output includes the `lab-v1` tag.
5050

51-
## What you've accomplished
51+
## What you've accomplished and what's next
5252

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.
5454

5555
Next, you'll create the N4A overlay and add the assistant to the running storefront.

content/learning-paths/servers-and-cloud-computing/storefront-ai-assistant-gke-axion/deploy-assistant-n4a.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Deploy the assistant on N4A
2+
title: Deploy the assistant on the Google N4A node pool
33
description: Add the assistant component to the storefront and keep the application on the N4A node pool.
44
weight: 7
55
layout: "learningpathall"
@@ -18,7 +18,7 @@ export FRONTEND_IP="$(kubectl get service frontend-external \
1818
export APP_URL="http://${FRONTEND_IP}"
1919
```
2020

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:
2222

2323
```bash
2424
cat <<EOF > kustomize/overlays/storefront-n4a/kustomization.yaml
@@ -49,7 +49,7 @@ sed -n '1,120p' kustomize/overlays/storefront-n4a/node-selector.yaml
4949
kubectl kustomize kustomize/overlays/storefront-n4a | sed -n '1,240p'
5050
```
5151

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.
5353

5454
## Apply the overlay
5555

@@ -62,7 +62,7 @@ kubectl rollout status deployment/shoppingassistantservice --timeout=1200s
6262
```
6363

6464
{{% 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.
6666
{{% /notice %}}
6767

6868
## Confirm pod placement
@@ -99,7 +99,7 @@ The `server` container serves the assistant API. The `ollama` container prepares
9999
The first rollout can take a few minutes because the Ollama sidecar pulls the model when the pod starts. Early `/readyz` checks can return `503` until the model is available.
100100
{{% /notice %}}
101101

102-
## Send a request in one assistant session
102+
## Send a request through one assistant session
103103

104104
Open the assistant endpoint and save its HTTP session cookie in `/tmp/assistant.cookies`. The next request sends the same cookie back, just as a browser would. The assistant can then associate follow-up prompts and cart actions with the same short-lived session.
105105

@@ -121,7 +121,7 @@ for i in {1..12}; do
121121
done
122122
```
123123

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.
125125

126126
## Try the browser flow
127127

@@ -136,10 +136,10 @@ yes
136136
What is in my cart now?
137137
```
138138

139-
The assistant should recommend a catalog item, ask for confirmation before changing the cart, and then show the cart contents.
139+
The assistant recommends a catalog item and asks for confirmation before changing the cart. It then shows the cart's contents.
140140

141-
## What you've accomplished
141+
## What you've accomplished and what's next
142142

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.
144144

145145
Next, you'll observe the assistant as a live workload and capture the N4A benchmark baseline.

0 commit comments

Comments
 (0)