Skip to content

Commit f882ca9

Browse files
Content dev
1 parent 8027df4 commit f882ca9

File tree

6 files changed

+63
-43
lines changed

6 files changed

+63
-43
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ learning_objectives:
1010
- Provision an Arm-based C4A VM on Google Cloud Platform (GCP)
1111
- Install and configure Envoy Proxy on a C4A instance
1212
- Validate Envoy functionality with baseline tests
13-
- Benchmark Envoy performance on Arm64 (AArch64) infrastructure
13+
- Benchmark Envoy performance on both Arm64 (AArch64) and x86_64 architectures
1414

1515
prerequisites:
1616
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free?utm_source=google&hl=en) account with billing enabled

content/learning-paths/servers-and-cloud-computing/envoy-gcp/background.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ Google Axion C4A is a family of Arm-based virtual machines powered by Google’s
1111

1212
The C4A series can provide a cost-efficient alternative to x86 VMs while leveraging the scalability and performance characteristics of the Arm64 (AArch64) architecture on Google Cloud.
1313

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

1616
## Envoy Proxy for service proxying and traffic management on Arm
1717

18-
Envoy Proxy is an open-source, high-performance edge and service proxy designed for cloud-native applications. It handles service-to-service communication, traffic routing, load balancing, and observability, improving the reliability and security of microservices.
18+
Envoy Proxy is an open-source, high-performance edge and service proxy designed for cloud-native applications. It handles service-to-service communication, traffic routing, load balancing, and observability - improving the reliability and security of microservices.
1919

20-
Envoy is widely used in service meshes, API gateways, and modern cloud environments. Learn more on the [Envoy website](https://www.envoyproxy.io/) and in the [documentation](https://www.envoyproxy.io/docs/envoy/latest/).
20+
Envoy is widely used in service meshes, API gateways, and modern cloud environments. Learn more on the [Envoy website](https://www.envoyproxy.io/) and in the [Envoy documentation](https://www.envoyproxy.io/docs/envoy/latest/).

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

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,35 @@
11
---
2-
title: Envoy baseline testing on Google Axion C4A Arm Virtual machine
2+
title: Run baseline Envoy testing on a Google Axion C4A Arm VM
33
weight: 5
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9+
## Validate Envoy installation with a baseline test
910

10-
With Envoy installed successfully on your GCP C4A Arm virtual machine, you will proceed to validate that the Envoy is running as expected.
11+
With Envoy installed successfully on your GCP C4A Arm virtual machine, you can now validate that Envoy is running as expected.
1112

12-
## Validate Envoy installation with a baseline test
13+
In this section, you will do the following:
14+
15+
- Create a minimal Envoy config
16+
- Start Envoy with it with config
17+
- Verify functionality using `curl`
18+
19+
The test confirms the following:
1320

14-
In this section, you will learn how to create a minimal Envoy config, start Envoy with it, and verify functionality using `curl`.
15-
The test will confirm that Envoy listens on port **10000**, forwards requests to `httpbin.org`, and returns a successful **200 OK** response.
21+
- Envoy listens on port **10000**
22+
- Forwards requests to `httpbin.org`
23+
- Returns a **200 OK** response
1624

17-
### Create a Minimal Configuration File
25+
## Create a minimal configuration file
1826

19-
Using a file editor of your choice, create a file named `envoy_config.yaml`, and add the below content to it. This file configures Envoy to listen on port **10000** and forward all traffic to `http://httpbin.org`. The `host_rewrite_literal` is essential to prevent 404 Not Found errors from the upstream server.
27+
Using a text editor, create a file named `envoy_config.yaml` and add the following content as shown below.
2028

21-
```YAML
29+
This configures Envoy to listen on port **10000** and forward all traffic to `http://httpbin.org`. The `host_rewrite_literal` is required to prevent `404 Not Found` from the upstream server.
30+
31+
32+
```yaml
2233
static_resources:
2334
listeners:
2435
- name: listener_0
@@ -64,18 +75,18 @@ static_resources:
6475
address: httpbin.org
6576
port_value: 80
6677
```
67-
- **Listeners:** Envoy is configured to accept incoming HTTP requests on port **10000** of your VM.
68-
- **HTTP Connection Manager:** A filter processes the incoming requests, directing them to the appropriate backend.
78+
- **Listeners:** Envoy accepts incoming HTTP requests on port **10000** of your VM.
79+
- **HTTP Connection Manager:** Processes incoming requests, and applies routing.
6980
- **Routing:** All traffic is routed to the `service_httpbin` cluster, with the `Host` header rewritten to `httpbin.org`.
70-
- **Clusters:** The `service_httpbin` cluster defines the upstream service as `httpbin.org` on port **80**, which is where requests are ultimately forwarded.
81+
- **Clusters:** The `service_httpbin` cluster defines the upstream as `httpbin.org:80`.
7182

72-
### Run and Test Envoy
83+
## Run and test Envoy
7384

7485
This is the final phase of functional validation, confirming that the proxy is operational.
75-
Start the Envoy proxy using your configuration file as shown on your current terminal:
86+
Start the Envoy proxy using your configuration file:
7687

7788
```console
78-
envoy -c envoy_config.yaml --base-id 1
89+
envoy -c envoy_config.yaml --base-id 1
7990
```
8091
The output should look similar to:
8192

@@ -90,14 +101,14 @@ The output should look similar to:
90101
[2025-08-21 11:53:51.599][67137][info][config] [source/common/listener_manager/listener_manager_impl.cc:930] all dependencies initialized. starting workers
91102
```
92103

93-
Now, open a new terminal and send a test request to the Envoy listener using `curl`.
104+
Leave this terminal running. In a new terminal, send a test request to the Envoy listener using `curl`:
94105

95106
```console
96107
curl -v http://localhost:10000/get
97108
```
98109
The `-v` flag provides verbose output, showing the full request and response headers. A successful test will show a **HTTP/1.1 200 OK** response with a JSON body from `httpbin.org`.
99110

100-
The output should look similar to:
111+
A successful test shows HTTP/1.1 200 OK with a JSON body from httpbin.org, for example:
101112

102113
```output
103114
* Trying 127.0.0.1:10000...
@@ -131,11 +142,11 @@ The output should look similar to:
131142
}
132143
* Connection #0 to host 127.0.0.1 left intact
133144
```
134-
#### Summary of the curl Output
145+
## Summary of the curl output
135146

136-
- **Successful Connection:** The `curl` command successfully connected to the Envoy proxy on `localhost:10000`.
137-
- **Correct Status Code:** Envoy successfully forwarded the request and received a successful `200 OK` response from the upstream server.
138-
- **Host Header Rewrite:** The Host header was correctly modified from `localhost:10000` to `httpbin.org` as defined in the configuration.
139-
- **End-to-End Success:** The proxy is fully operational, proving that requests are correctly received, processed, and forwarded to the intended backend.
147+
- **Successful connection:** The `curl` command successfully connected to the Envoy proxy on `localhost:10000`.
148+
- **Correct status code:** Envoy forwards the request and receives a successful `200 OK` response from the upstream.
149+
- **Host header rewrite:** Envoy rewrites `Host` to `httpbin.org` as configured.
150+
- **End-to-end Success:** The proxy is operational; requests are received, processed, and forwarded to the ackend.
140151

141-
This confirms the end-to-end flow with Envoy server is working correctly.
152+
To stop Envoy in the first terminal, press **Ctrl+C**. This confirms the end-to-end flow with Envoy server is working correctly.

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

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Envoy performance benchmarks on Arm64 and x86_64 in Google Cloud
2+
title: Benchmark Envoy on Google Cloud for Arm64 and x86_64 with Siege
33
weight: 6
44

55
### FIXED, DO NOT MODIFY
@@ -12,7 +12,8 @@ layout: learningpathall
1212

1313
Follow the steps outlined to run Envoy benchmarks using Siege.
1414

15-
### Install Siege(Build from Source)
15+
## Install Siege (build from source)
16+
1617

1718
1. Install required build tools
1819

@@ -30,7 +31,8 @@ cd siege-4.1.6
3031
make
3132
sudo make install
3233
```
33-
You have now successfully built and installed Seige on your Arm-based machine.
34+
You have now successfully built and installed Siege on your Arm-based machine.
35+
3436

3537
3. Verify installation
3638

@@ -46,7 +48,8 @@ This is free software; see the source for copying conditions.
4648
There is NO warranty; not even for MERCHANTABILITY or FITNESS
4749
FOR A PARTICULAR PURPOSE.
4850
```
49-
### Envoy Benchmarking
51+
## Envoy benchmarking
52+
5053

5154
1. To start, make sure Envoy is up and running with your config file (listening on port 10000):
5255

@@ -56,16 +59,18 @@ envoy -c envoy_config.yaml --base-id 1
5659
```
5760
This runs the Envoy proxy with your configuration file (envoy_config.yaml) so it can start listening for requests.
5861

59-
2. On another terminal, verify that envoy is running as expected with curl:
62+
2. On another terminal, verify that Envoy is running as expected with curl:
63+
6064

6165
```
6266
curl -v http://127.0.0.1:10000/get
6367
```
6468
Running from another terminal returns a **200 OK** status, confirming that Envoy is running and successfully processing requests.
6569

66-
3. Run a Time-based Load Test
70+
## Run a time-based load test
71+
72+
There are different ways you can set up your benchmark tests. Here, you will run a benchmark for a fixed time instead of using a request count:
6773

68-
There are different ways you can setup your benchmark tests. Here you will run a Benchmark for a fixed time instead of using request count:
6974

7075
```console
7176
siege -c30 -t10S http://127.0.0.1:10000/get
@@ -101,7 +106,7 @@ Longest transaction: 2.89
101106
Shortest transaction: 0.02
102107
```
103108

104-
### Understanding Envoy benchmark metrics and results with Siege
109+
## Understanding Envoy benchmark metrics and results with Siege
105110

106111
- **Transactions**: Total number of completed requests during the benchmark.
107112
- **Availability**: Percentage of requests that returned a successful response.
@@ -116,8 +121,9 @@ Shortest transaction: 0.02
116121
- **Longest Transaction**: Maximum response time observed for a single request.
117122
- **Shortest Transaction**: Minimum response time observed for a single request.
118123

119-
### Benchmark summary on x86_64:
120-
To compare the benchmark results, the following results were collected by running the same benchmark on a `c3-standard-4` (4 vCPU, 2 core, 16 GB Memory) x86_64 virtual machine in GCP, running RHEL 9.
124+
## Benchmark summary on x86_64
125+
To compare the benchmark results, the following were collected by running the same benchmark on a `c3-standard-4` (4 vCPU, 16 GB memory) x86_64 VM in GCP, running RHEL 9:
126+
121127

122128
| Metric | Value | Metric | Value |
123129
|-------------------------|--------------|---------------------------|-----------------|
@@ -128,8 +134,9 @@ To compare the benchmark results, the following results were collected by runnin
128134
| Successful transactions | 720 | Failed transactions | 8 |
129135
| Longest transaction | 4.63 secs | Shortest transaction | 0.02 secs |
130136

131-
### Benchmark summary on Arm64:
132-
Results from the earlier run on the c4a-standard-4 (4 vCPU, 16 GB memory) Arm64 VM in GCP (RHEL 9):
137+
## Benchmark summary on Arm64
138+
Results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (RHEL 9):
139+
133140

134141
| Metric | Value | Metric | Value |
135142
|-------------------------|---------------|---------------------------|-----------------|

content/learning-paths/servers-and-cloud-computing/envoy-gcp/deploy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: How to deploy Envoy on Google Axion C4A Arm virtual machines
2+
title: Deploy Envoy on Google Axion C4A Arm virtual machines
33
weight: 4
44

55
### FIXED, DO NOT MODIFY

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ weight: 3
66
layout: learningpathall
77
---
88

9-
## How to create a Google Axion C4A Arm VM on Google Cloud
9+
## Overview
1010

11-
In this section, you will learn how to provision a Google Axion C4A Arm virtual machine on Google Cloud Platform (GCP) using the **c4a-standard-4 (4 vCPUs, 16 GB memory)** machine type in the Google Cloud Console.
11+
In this section, you will learn how to provision a Google Axion C4A Arm virtual machine on Google Cloud Platform (GCP) using the `c4a-standard-4` (4 vCPUs, 16 GB memory) machine type in the Google Cloud Console.
1212

13-
For details on GCP setup, refer to the [Getting started with Google Cloud Platform](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/google/) Learning Path.
13+
{{% notice Note %}}
14+
For support on GCP setup, see the Learning Path [Getting started with Google Cloud Platform](https://learn.arm.com/learning-paths/servers-and-cloud-computing/csp/google/).
15+
{{% /notice %}}
1416

15-
### Create a Google Axion C4A Arm VM in Google Cloud Console
17+
## Provision a Google Axion C4A Arm VM in Google Cloud Console
1618

1719
To create a virtual machine based on the C4A instance type:
1820
1. Navigate to the [Google Cloud Console](https://console.cloud.google.com/).

0 commit comments

Comments
 (0)