Skip to content

Commit 368adc0

Browse files
authored
Merge pull request #2306 from madeline-underwood/Envoy
Envoy_ready to publish
2 parents 6f8c54e + 8e63e35 commit 368adc0

File tree

6 files changed

+112
-98
lines changed

6 files changed

+112
-98
lines changed
Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
---
2-
title: Deploy Envoy on Google Axion processors
2+
title: Deploy Envoy Proxy on Google Cloud C4A (Arm-based Axion VMs)
33

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

10-
who_is_this_for: This is an introductory topic is for software developers interested in migrating their Envoy workloads from x86_64 servers to Arm-based servers, specifically on Google Axion–based C4A virtual machines.
6+
who_is_this_for: This introductory topic for software developers migrating Envoy Proxy workloads from x86_64 to Arm-based servers, specifically on Google Cloud C4A virtual machines built on Axion processors.
7+
118

129
learning_objectives:
13-
- Start an Arm virtual machine on Google Cloud Platform (GCP) using the C4A Google Axion instance
14-
- Install and configure Envoy on Arm-based GCP C4A instances
15-
- Validate Envoy functionality through baseline testing
16-
- Benchmark Envoy performance on Arm
10+
- Provision an Arm-based C4A VM on Google Cloud Platform (GCP)
11+
- Install and configure Envoy Proxy on a C4A instance
12+
- Validate Envoy functionality with baseline tests
13+
- Benchmark Envoy performance on both Arm64 (AArch64) and x86_64 architectures
1714

1815
prerequisites:
1916
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free?utm_source=google&hl=en) account with billing enabled
20-
- Familiarity with networking concepts and the [Envoy architecture](https://www.envoyproxy.io/docs/envoy/latest/).
17+
- Familiarity with networking concepts and the [Envoy architecture](https://www.envoyproxy.io/docs/envoy/latest/)
2118

2219
author: Pareena Verma
2320

2421
##### Tags
25-
skilllevels: Advanced
22+
skilllevels: Introductory
2623
subjects: Web
2724
cloud_service_providers: Google Cloud
2825

@@ -31,7 +28,9 @@ armips:
3128

3229
tools_software_languages:
3330
- Envoy
34-
- Siege
31+
- Siege
32+
- Networking
33+
- Service Mesh
3534

3635
operatingsystems:
3736
- Linux
@@ -41,7 +40,7 @@ operatingsystems:
4140
# ================================================================================
4241
further_reading:
4342
- resource:
44-
title: Google Cloud official documentation
43+
title: Google Cloud documentation
4544
link: https://cloud.google.com/docs
4645
type: documentation
4746

@@ -51,11 +50,11 @@ further_reading:
5150
type: documentation
5251

5352
- resource:
54-
title: The official documentation for Siege
53+
title: Siege documentation
5554
link: https://www.joedog.org/siege-manual/
5655
type: documentation
5756

58-
weight: 1 # _index.md always has weight of 1 to order correctly
59-
layout: "learningpathall" # All files under learning paths have this same wrapper
60-
learning_path_main_page: "yes" # Indicates this should be surfaced when looking for related content. Only set for _index.md of learning path content.
57+
weight: 1
58+
layout: "learningpathall"
59+
learning_path_main_page: "yes"
6160
---
Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
---
2-
title: Getting started with Envoy on Google Axion C4A (Arm Neoverse-V2)
2+
title: Get started with Envoy Proxy on Google Axion C4A (Arm Neoverse V2)
33

44
weight: 2
5-
65
layout: "learningpathall"
76
---
87

9-
## Google Axion C4A Arm instances in Google Cloud
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.
8+
## Google Axion C4A instances on Google Cloud
129

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.
10+
Google Axion C4A is a family of Arm-based virtual machines powered by Google’s custom Axion CPU, which is built on Arm Neoverse V2 cores. Designed for high performance and energy efficiency, these VMs are well-suited to modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
1411

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.
12+
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.
1613

17-
## Envoy for service proxy and traffic management on Arm
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).
1815

19-
Envoy is an open-source, high-performance edge and service proxy designed for cloud-native applications.
16+
## Envoy Proxy for service proxying and traffic management on Arm
2017

21-
It handles service-to-service communication, traffic routing, load balancing, and observability, making microservices more reliable and secure.
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.
2219

23-
Envoy is widely used in service meshes, API gateways, and modern cloud environments. Learn more from the [Envoy official website](https://www.envoyproxy.io/) and its [official 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: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
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+
```yaml
2230
static_resources:
2331
listeners:
2432
- name: listener_0
@@ -64,18 +72,23 @@ static_resources:
6472
address: httpbin.org
6573
port_value: 80
6674
```
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.
75+
76+
## Explanatory notes on the configuration
77+
78+
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.
79+
80+
- **Listeners:** Envoy accepts incoming HTTP requests on port **10000** of your VM.
81+
- **HTTP Connection Manager:** Processes incoming requests, and applies routing.
6982
- **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.
83+
- **Clusters:** The `service_httpbin` cluster defines the upstream as `httpbin.org:80`.
7184

72-
### Run and Test Envoy
85+
## Run and test Envoy
7386

7487
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:
88+
Start the Envoy proxy using your configuration file:
7689

7790
```console
78-
envoy -c envoy_config.yaml --base-id 1
91+
envoy -c envoy_config.yaml --base-id 1
7992
```
8093
The output should look similar to:
8194

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

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

95108
```console
96109
curl -v http://localhost:10000/get
97110
```
98111
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`.
99112

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

102115
```output
103116
* Trying 127.0.0.1:10000...
@@ -131,11 +144,11 @@ The output should look similar to:
131144
}
132145
* Connection #0 to host 127.0.0.1 left intact
133146
```
134-
#### Summary of the curl Output
147+
## Summary of the curl output
135148

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.
149+
- **Successful connection:** The `curl` command successfully connected to the Envoy proxy on `localhost:10000`.
150+
- **Correct status code:** Envoy forwards the request and receives a successful `200 OK` response from the upstream.
151+
- **Host header rewrite:** Envoy rewrites `Host` to `httpbin.org` as configured.
152+
- **End-to-end Success:** The proxy is operational; requests are received, processed, and forwarded to the ackend.
140153

141-
This confirms the end-to-end flow with Envoy server is working correctly.
154+
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: 27 additions & 21 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
@@ -8,19 +8,20 @@ layout: learningpathall
88

99
## How to run Envoy benchmarks with Siege on Arm64 in GCP
1010

11-
**Siege** is a lightweight HTTP load testing and benchmarking tool that simulates concurrent users making requests to a target service. It is useful for Envoy benchmarking because it measures availability, throughput, response time, and failure rates under load, thus helping evaluate Envoy’s performance as a proxy under real-world traffic conditions.
11+
Siege is a lightweight HTTP load testing and benchmarking tool that simulates concurrent users making requests to a target service. It is useful for Envoy benchmarking because it measures availability, throughput, response time, and failure rates under load, thus helping evaluate Envoy’s performance as a proxy under real-world traffic conditions.
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)
1616

17-
1. Install required build tools
17+
18+
Install required build tools:
1819

1920
```console
2021
sudo dnf groupinstall -y "Development Tools"
2122
sudo dnf install -y wget make gcc
2223
```
23-
2. Download, extract and build Siege source
24+
Download, extract and build Siege source:
2425

2526
```console
2627
wget http://download.joedog.org/siege/siege-4.1.6.tar.gz
@@ -30,14 +31,14 @@ 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.
3435

35-
3. Verify installation
36+
Verify installation:
3637

3738
```console
3839
siege --version
3940
```
40-
This checks if Siege is installed properly and shows the version number.
41+
This checks if Siege is installed properly and shows the version number:
4142
```output
4243
SIEGE 4.1.6
4344
@@ -46,26 +47,29 @@ This is free software; see the source for copying conditions.
4647
There is NO warranty; not even for MERCHANTABILITY or FITNESS
4748
FOR A PARTICULAR PURPOSE.
4849
```
49-
### Envoy Benchmarking
50+
## Envoy benchmarking
51+
5052

51-
1. To start, make sure Envoy is up and running with your config file (listening on port 10000):
53+
To start, make sure Envoy is up and running with your config file (listening on port 10000):
5254

5355

5456
```console
5557
envoy -c envoy_config.yaml --base-id 1
5658
```
5759
This runs the Envoy proxy with your configuration file (envoy_config.yaml) so it can start listening for requests.
5860

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

6164
```
6265
curl -v http://127.0.0.1:10000/get
6366
```
6467
Running from another terminal returns a **200 OK** status, confirming that Envoy is running and successfully processing requests.
6568

66-
3. Run a Time-based Load Test
69+
## Run a time-based load test
70+
71+
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:
6772

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

7074
```console
7175
siege -c30 -t10S http://127.0.0.1:10000/get
@@ -101,7 +105,7 @@ Longest transaction: 2.89
101105
Shortest transaction: 0.02
102106
```
103107

104-
### Understanding Envoy benchmark metrics and results with Siege
108+
## Understanding Envoy benchmark metrics and results with Siege
105109

106110
- **Transactions**: Total number of completed requests during the benchmark.
107111
- **Availability**: Percentage of requests that returned a successful response.
@@ -116,8 +120,9 @@ Shortest transaction: 0.02
116120
- **Longest Transaction**: Maximum response time observed for a single request.
117121
- **Shortest Transaction**: Minimum response time observed for a single request.
118122

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.
123+
## Benchmark summary on x86_64
124+
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:
125+
121126

122127
| Metric | Value | Metric | Value |
123128
|-------------------------|--------------|---------------------------|-----------------|
@@ -128,8 +133,9 @@ To compare the benchmark results, the following results were collected by runnin
128133
| Successful transactions | 720 | Failed transactions | 8 |
129134
| Longest transaction | 4.63 secs | Shortest transaction | 0.02 secs |
130135

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):
136+
## Benchmark summary on Arm64
137+
Results from the earlier run on the `c4a-standard-4` (4 vCPU, 16 GB memory) Arm64 VM in GCP (RHEL 9):
138+
133139

134140
| Metric | Value | Metric | Value |
135141
|-------------------------|---------------|---------------------------|-----------------|
@@ -143,7 +149,7 @@ Results from the earlier run on the c4a-standard-4 (4 vCPU, 16 GB memory) Arm64
143149
### Envoy performance benchmarking comparison on Arm64 and x86_64
144150
When you compare the benchmarking performance results between the two instance types with the same vCPUs, you will notice that on the Google Axion C4A Arm-based instances:
145151

146-
- You have more successful transactions, fewer failures.
147-
- Lower response times, higher transaction rate, better throughput.
152+
- You have more successful transactions, fewer failures
153+
- Lower response times, higher transaction rate, better throughput
148154

149-
You have successfully learned how to use Siege to benchmark Envoy on your Arm-based Axion Google cloud instance, validating both performance and reliability against similar x86 instances.
155+
You have successfully learned how to use Siege to benchmark Envoy on your Arm-based Axion Google cloud instance, validating both performance and reliability against similar x86_64 instances.
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
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
66
layout: learningpathall
77
---
88

99

10-
## How to deploy Envoy on a Google Axion C4A Arm virtual machine
11-
In this section you will learn how to install Envoy Proxy v1.30.0 on a Google Cloud Axion C4A virtual machine running RHEL 9. You will install the dependencies, download the official static Arm64 Envoy binary and check the installed version.
10+
## Install Envoy Proxy v1.30.0 on a Google Axion C4A Arm VM
11+
In this section you'll install Envoy Proxy v1.30.0 on a Google Cloud Axion C4A virtual machine running RHEL 9. You'll install the dependencies, download the official static Arm64 Envoy binary, and verify the installation.
1212

13-
1. Install Dependencies
13+
## Install Dependencies
1414

1515
```console
1616
sudo dnf install -y \
@@ -25,10 +25,9 @@ sudo dnf install -y \
2525
pip3 install virtualenv
2626
```
2727

28-
2. Install Envoy (Static Arm64 Binary)
28+
## Install Envoy (static Arm64 binary)
2929

30-
You will now download and install the Envoy binary on your Arm-based instance.
31-
Download the binary directly to **/usr/local/bin/envoy**. The `-L` flag is crucial as it follows any redirects from the download URL.
30+
Download the Envoy binary. `-L` follows redirects:
3231

3332
```console
3433
sudo curl -L \
@@ -40,17 +39,16 @@ Change the permissions on the downloaded binary to make it an executable:
4039
```console
4140
sudo chmod +x /usr/local/bin/envoy
4241
```
43-
Verify the installation by checking its version.
42+
Verify the installation by checking its version:
4443

4544
```console
4645
envoy --version
4746
```
4847
This confirms the binary is correctly placed and executable.
4948

50-
The output should look like:
49+
Expected output:
5150

5251
```output
5352
envoy version: 50ea83e602d5da162df89fd5798301e22f5540cf/1.30.0/Clean/RELEASE/BoringSSL
5453
```
55-
This confirms the installation of Envoy.
56-
You can now proceed with the baseline testing in the next section.
54+
Envoy is now installed. Continue to baseline testing in the next section.

0 commit comments

Comments
 (0)