设置高级配置
本文档包含一些在配置时可能会有帮助的注意事项。 Cloud Service Mesh。
为 Cloud Service Mesh 配置单个 Compute Engine 虚拟机
以此过程为例,了解边车代理如何部署和流量 可以实施拦截,使虚拟机能够访问 Cloud Service Mesh 服务。
如需使用此过程,您需要安装 Docker。请按照 Docker 的说明安装 Docker Engine。
如果您按照此过程在集群上配置 Cloud Service Mesh, 一个虚拟机,但某些设置任务要求您能够访问 Linux 主机。主机可以是在您的 Virtual Private Cloud 网络上运行的本地机器或虚拟机。
首先,下载并准备配置文件和示例脚本。
登录您在设置过程中使用的 Linux 主机。
将所需文件的归档文件下载到 Linux 主机并解压缩归档文件:
wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
归档文件包含以下文件:
- sidecar.env – 具有环境变量的配置文件。
- iptables.sh – 用于设置 netfilter 规则的脚本。
- bootstrap_template.yaml – Envoy 的引导模板文件。
- run.sh – 顶级脚本,使用
sidecar.env
配置文件来设置用于拦截的iptables
并运行 Envoy Sidecar 代理。
在运行 Sidecar 代理的每个主机上,创建一个系统用户以运行 Envoy 代理进程。这是 Envoy 代理用户。Envoy 代理用户的登录已停用。
sudo adduser --system --disabled-login envoy
修改
sidecar.env
文件以修改配置。请阅读配置文件中的内嵌注释,详细了解每个变量。- 在
sidecar.env
文件中,将ENVOY_USER
变量设置为您选择作为 Envoy 代理用户的用户名。
- 在
接下来,对于使用 Cloud Service Mesh 运行应用的每个虚拟机主机,请执行 执行下列步骤:
- 将带有修改后的
sidecar.env
文件的整个traffic-director-xdsv3
目录复制到每个虚拟机主机,其运行您预计使用 Cloud Service Mesh 的应用。 - 将
run.sh
脚本添加到系统的启动脚本中,以确保在每次虚拟机重新启动后运行该脚本。 在每个虚拟机主机上,运行
run.sh
脚本:cd traffic-director-xdsv3 sudo ./run.sh start
验证 Envoy 代理是否已正常启动。
sudo ./run.sh status
您会看到以下输出内容:
OK: Envoy seems to be running. OK: Traffic interception seems to be enabled.
您可以使用以下方式验证流量拦截方向:
sudo iptables -S -t nat | grep ISTIO_REDIRECT
预期输出为
-N ISTIO_REDIRECT -A ISTIO_OUTPUT -j ISTIO_REDIRECT -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
路由规则映射
在路由规则映射中配置路由的方法有两种。
您可以根据服务的实际目标 VIP 和端口启用路由。如果您将服务的 VIP 配置为转发规则的 IPAddress
参数,则只有流向此地址及关联端口的流量才与规则匹配,然后系统会根据网址映射中指定的主机和路径参数路由这些流量。
或者,您可以将转发规则的地址设置为 0.0.0.0
。这将配置代理以仅根据目标端口匹配流量,而不考虑请求的目标 IP 地址。然后,系统会根据网址映射中指定的主机和路径参数路由流量。
根据这两种方法,与目标 VIP 和端口的组合关联或仅与目标端口关联(当 VIP 设置为 0.0.0.0
时)的主机名(该主机名在主机规则中配置),在您的服务网格配置中必须是唯一的。也就是说,您不能拥有两项不同的服务,它们使用同一个主机名,但具有不同的后端集。
无论选择哪种方法,流向您服务主机名/FQDN 解析到的 VIP 以及服务所侦听端口的流量都一定会被拦截并重定向到 Sidecar 代理。如需了解完整的主机配置信息,请参阅为 Cloud Service Mesh 配置单个 Compute Engine 虚拟机。
VPC 网络中的每个转发规则在各个 VPC 网络中都必须具有唯一的 IP 地址和端口组合,包括 0.0.0.0
地址。如果您在特定 VPC 网络中创建了多个具有相同 IP 地址和端口的转发规则,则只有第一个转发规则才有效。其他规则会被忽略。
如需避免丢失流量,请按照下面的高级流量拦截配置部分操作。
高级流量拦截配置
如果您的虚拟机运行的应用需要访问由 Cloud Service Mesh,您必须安装边车代理并配置流量 在虚拟机上进行拦截以允许边车代理管理路由到 这些服务的后端
如果您的部署不接受拦截所有传出虚拟机流量,您可以将特定流量重定向到 Sidecar 代理,而其余流量将遵循主机网络配置定义的常规路由。
为此,请在以下位置修改 Compute Engine 虚拟机主机设置: 通过虚拟机和手动 Envoy 部署设置 Cloud Service Mesh 操作步骤如下:
确定 Cloud Service Mesh 控制的 IP 地址范围 服务的解析大小。目标为这些 IP 地址的流量会被拦截并重定向到 Sidecar 代理。该范围取决于您的部署。
在
sidecar.env
文件中,将SERVICE_CIDR
的值设置为此范围。流向这些 IP 地址的流量由 netfilter 重定向到边车代理 根据 Google Cloud 提供的配置 Cloud Service Mesh。Sidecar 代理并不严格要求以被排除在流量拦截之外的专门用户的身份运行。不过,我们仍建议您这样做。
按照主过程中所述执行
run.sh
脚本后,iptables
便会配置为仅针对此特定范围进行拦截和重定向。运行以下命令以验证 netfilter 是否配置正确。请使用您配置为拦截的 IP 地址范围的值替换 ${SERVICE_CIDR}。
sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"