如何在 Debian 11 上安装和配置 Envoy 代理
在此页
- 先决条件
- 添加特使存储库
- 安装 Envoy 代理
- 配置特使代理
- 结论
Envoy Proxy 是一款免费开源的服务代理,专为云原生应用而设计。它与 Nginx 和 haproxy 相当,可以用作反向代理,但 Envoy 代理是为现代服务和基础设施设计的。
Envoy 是一种高性能服务代理,适用于任何应用程序语言。它使用 YAML 配置文件进行静态配置,还使用一组基于 gRPC 的 API。
Envoy代理毕业于云原生计算基金会(CNCF)。它用于大多数现代基础设施和容器技术。
在本教程中,我们将向您展示如何在 Debian 11 服务器上安装和配置 Envoy 代理。
先决条件
对于 Envoy 安装,我们将使用以下内容:
- Linux 服务器 Debian 11 Bullseye
- 具有 sudo 权限的非根用户
添加特使存储库
Envoy 可以通过多种方式安装,包括使用 Envoy 存储库提供的二进制包或使用 Docker。在此示例中,我们将使用 Envoy 存储库中的二进制包安装 Envoy。
在添加和安装 Envoy 之前,您必须安装以下软件包。 gnupg2 将用于将 GPG 密钥添加到您的 Debian 服务器, apt-transport-https 允许您从安全的 https 连接安装软件包。
sudo apt install gnupg2 apt-transport-https -y
接下来,使用以下命令添加并验证 Envoy GPG 密钥。
curl -sL 'https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key' | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
如果密钥有效,您将看到诸如 OK 之类的输出消息。

现在使用以下命令将 Envoy 存储库添加到您的系统。
echo "deb [arch=amd64 \
signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] \
https://deb.dl.getenvoy.io/public/deb/debian \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
最后,更新并刷新您的 Debian 存储库。
sudo apt update
在下面的屏幕截图中,您将看到 Envoy 存储库已添加到 Debian 系统中。

安装特使代理
您现在已经添加了 Envoy GPG 密钥和存储库,现在您将把 Envoy 包安装到您的系统中。
运行下面的 apt 命令将 Envoy 软件包安装到您的 Debian 11 系统。
sudo apt install getenvoy-envoy
您可以在下面看到 Envoy 安装过程。

Envoy 安装完成后,使用以下命令验证 Envoy 版本。
envoy --version
下面你可以看到安装在 Debian 11 上的 Envoy v1.18。这是 Envoy 存储库提供的最新版本的 Envoy 代理。如果您想获取最新版本,可以使用 Envoy 网站上预构建的二进制文件。

此外,您还可以使用以下命令检查 envoy 命令的所有可用选项。
envoy --help
您将看到许多可用于设置 Envoy 的选项。
配置特使代理
安装 Envoy 后,您现在将学习如何设置 Envoy。
首先,使用以下命令创建一个新目录 /etc/envoy/。
mkdir -p /etc/envoy/
现在使用 nano 编辑器创建一个新文件 /etc/envoy/demo.yaml。
sudo nano /etc/envoy/demo.yaml
将以下配置添加到文件中。在此示例中,您将为 Envoy 使用 static_resources 配置,其中必须包括 listeners、clusters 和 static_resources。
侦听器确定哪个 IP 地址和端口将用于 Envoy。在此示例中,Envoy 将在公共 IP 地址 0.0.0.0 和端口 80 上运行。
这里的集群service_envoyproxy_io会作为服务的端点,也就是域名www.envoyproxy.io。
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 80
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
access_log:
- name: envoy.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
host_rewrite_literal: www.envoyproxy.io
cluster: service_envoyproxy_io
clusters:
- name: service_envoyproxy_io
type: LOGICAL_DNS
connect_timeout: 5s
# Comment out the following line to test on v6 networks
dns_lookup_family: V4_ONLY
load_assignment:
cluster_name: service_envoyproxy_io
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: www.envoyproxy.io
port_value: 443
transport_socket:
name: envoy.transport_sockets.tls
typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
sni: www.envoyproxy.io
完成后保存并关闭文件。
接下来,运行下面的 envoy 命令来验证配置文件 demo.yaml。
envoy --mode validate -c /etc/envoy/demo.yaml
如果您的 YAML 配置正确,您将看到类似“configuration /etc/envoy/demo.yaml OK”的输出。

现在使用以下命令使用配置文件 demo.yml 运行 Envoy。
envoy -c /etc/envoy/demo.yaml
您将在下面看到日志输出。另外,请确保您没有收到错误消息。

现在移动到您的本地计算机并使用 nano 编辑器编辑配置文件 /etc/hosts 。
sudo nano /etc/hosts
使用您的服务器 IP 地址添加 www.envoyproxy.io 域名,如下所示。
192.168.5.10 www.envoyproxy.io
完成后保存并关闭文件。
最后,打开浏览器访问域名www.envoyproxy.io,你应该可以看到域名www.envoyproxy.io的首页。

结论
恭喜!您现在已经在 Debian 11 服务器上成功安装了 Envoy。您还学习了如何使用 YAML 配置来设置 Envoy 以代理网站 www.envoyproxy.io。