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
title: Deploy Envoy Proxy on Google Cloud C4A (Arm-based Axion VMs)
3
3
4
-
draft: true
5
-
cascade:
6
-
draft: true
7
-
8
4
minutes_to_complete: 30
9
5
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
+
11
8
12
9
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
17
14
18
15
prerequisites:
19
16
- 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/)
title: Getting started with Envoy on Google Axion C4A (Arm Neoverse-V2)
2
+
title: Get started with Envoy Proxy on Google Axion C4A (Arm NeoverseV2)
3
3
4
4
weight: 2
5
-
6
5
layout: "learningpathall"
7
6
---
8
7
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
12
9
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.
14
11
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.
16
13
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).
18
15
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
20
17
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.
22
19
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/).
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/envoy-gcp/baseline-testing.md
+35-22Lines changed: 35 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,24 +1,32 @@
1
1
---
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
3
3
weight: 5
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
+
## Validate Envoy installation with a baseline test
9
10
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.
11
12
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:
13
20
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
16
24
17
-
###Create a Minimal Configuration File
25
+
## Create a minimal configuration file
18
26
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.
20
28
21
-
```YAML
29
+
```yaml
22
30
static_resources:
23
31
listeners:
24
32
- name: listener_0
@@ -64,18 +72,23 @@ static_resources:
64
72
address: httpbin.org
65
73
port_value: 80
66
74
```
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.
69
82
- **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`.
71
84
72
-
### Run and Test Envoy
85
+
## Run and test Envoy
73
86
74
87
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:
76
89
77
90
```console
78
-
envoy -c envoy_config.yaml --base-id 1
91
+
envoy -c envoy_config.yaml --base-id 1
79
92
```
80
93
The output should look similar to:
81
94
@@ -90,14 +103,14 @@ The output should look similar to:
90
103
[2025-08-21 11:53:51.599][67137][info][config] [source/common/listener_manager/listener_manager_impl.cc:930] all dependencies initialized. starting workers
91
104
```
92
105
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`:
94
107
95
108
```console
96
109
curl -v http://localhost:10000/get
97
110
```
98
111
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`.
99
112
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:
101
114
102
115
```output
103
116
* Trying 127.0.0.1:10000...
@@ -131,11 +144,11 @@ The output should look similar to:
131
144
}
132
145
* Connection #0 to host 127.0.0.1 left intact
133
146
```
134
-
####Summary of the curl Output
147
+
## Summary of the curl output
135
148
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.
140
153
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.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/envoy-gcp/benchmarking.md
+27-21Lines changed: 27 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
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
3
3
weight: 6
4
4
5
5
### FIXED, DO NOT MODIFY
@@ -8,19 +8,20 @@ layout: learningpathall
8
8
9
9
## How to run Envoy benchmarks with Siege on Arm64 in GCP
10
10
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.
12
12
13
13
Follow the steps outlined to run Envoy benchmarks using Siege.
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.
34
35
35
-
3.Verify installation
36
+
Verify installation:
36
37
37
38
```console
38
39
siege --version
39
40
```
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:
41
42
```output
42
43
SIEGE 4.1.6
43
44
@@ -46,26 +47,29 @@ This is free software; see the source for copying conditions.
46
47
There is NO warranty; not even for MERCHANTABILITY or FITNESS
47
48
FOR A PARTICULAR PURPOSE.
48
49
```
49
-
### Envoy Benchmarking
50
+
## Envoy benchmarking
51
+
50
52
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):
52
54
53
55
54
56
```console
55
57
envoy -c envoy_config.yaml --base-id 1
56
58
```
57
59
This runs the Envoy proxy with your configuration file (envoy_config.yaml) so it can start listening for requests.
58
60
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
+
60
63
61
64
```
62
65
curl -v http://127.0.0.1:10000/get
63
66
```
64
67
Running from another terminal returns a **200 OK** status, confirming that Envoy is running and successfully processing requests.
65
68
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:
67
72
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:
69
73
70
74
```console
71
75
siege -c30 -t10S http://127.0.0.1:10000/get
@@ -101,7 +105,7 @@ Longest transaction: 2.89
101
105
Shortest transaction: 0.02
102
106
```
103
107
104
-
###Understanding Envoy benchmark metrics and results with Siege
108
+
## Understanding Envoy benchmark metrics and results with Siege
105
109
106
110
-**Transactions**: Total number of completed requests during the benchmark.
107
111
-**Availability**: Percentage of requests that returned a successful response.
@@ -116,8 +120,9 @@ Shortest transaction: 0.02
116
120
-**Longest Transaction**: Maximum response time observed for a single request.
117
121
-**Shortest Transaction**: Minimum response time observed for a single request.
118
122
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:
@@ -143,7 +149,7 @@ Results from the earlier run on the c4a-standard-4 (4 vCPU, 16 GB memory) Arm64
143
149
### Envoy performance benchmarking comparison on Arm64 and x86_64
144
150
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:
145
151
146
-
- You have more successful transactions, fewer failures.
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.
title: How to deploy Envoy on Google Axion C4A Arm virtual machines
2
+
title: Deploy Envoy on Google Axion C4A Arm virtual machines
3
3
weight: 4
4
4
5
5
### FIXED, DO NOT MODIFY
6
6
layout: learningpathall
7
7
---
8
8
9
9
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.
12
12
13
-
1. Install Dependencies
13
+
##Install Dependencies
14
14
15
15
```console
16
16
sudo dnf install -y \
@@ -25,10 +25,9 @@ sudo dnf install -y \
25
25
pip3 install virtualenv
26
26
```
27
27
28
-
2. Install Envoy (Static Arm64 Binary)
28
+
##Install Envoy (static Arm64 binary)
29
29
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:
32
31
33
32
```console
34
33
sudo curl -L \
@@ -40,17 +39,16 @@ Change the permissions on the downloaded binary to make it an executable:
40
39
```console
41
40
sudo chmod +x /usr/local/bin/envoy
42
41
```
43
-
Verify the installation by checking its version.
42
+
Verify the installation by checking its version:
44
43
45
44
```console
46
45
envoy --version
47
46
```
48
47
This confirms the binary is correctly placed and executable.
0 commit comments