准备使用 Envoy 设置 Cloud Service Mesh
设置 Cloud Service Mesh 包括以下阶段:
- 授予权限、启用 Traffic Director API、配置 Cloud DNS(如果您使用的是 Compute Engine)。
- 使用 Envoy 代理部署应用。
- 创建服务和路由规则,以确定流量如何通过服务网格传输。
本文档介绍了第一阶段,在您使用 较旧的 API。本单元的第二阶段和第三阶段 继续设置流程中列出的针对具体平台的指南 详细介绍
在阅读本指南之前,请先熟悉 Cloud Service Mesh 概览。 如果您使用的是服务路由 API,请参阅 服务路由 API 概览。
前提条件
是否计划使用 Cloud Service Mesh 来配置正在运行的 Envoy 代理 虚拟机 (VM) 实例、容器或 您需要先完成以下任务:
- 启用结算功能。
- 确定如何安装 Envoy。
- 授予所需权限。
- 为您的项目启用 Traffic Director API。
- 如果您使用的是 Compute Engine,请启用 Cloud DNS API 并配置 Cloud DNS。
- 确保 Envoy 代理使用的服务账号具有足够的权限来访问 Traffic Director API。
以下部分提供了各项任务的说明。
启用结算功能
确保您的 Google Cloud 项目已启用结算功能。如需了解详情,请参阅为项目启用、停用或更改结算功能。
确定如何安装 Envoy
借助 Cloud Service Mesh,您可以安装 Envoy 代理并管理 此基础架构层:
在 Compute Engine 上,您可以将 Envoy 自动添加到虚拟机上运行的应用。您使用安装 Envoy 的虚拟机模板,将其连接到 Cloud Service Mesh,并配置虚拟机的网络。
在 Google Kubernetes Engine (GKE) 上,您可以将 Envoy Sidecar 代理自动添加到服务的 pod 中。将 Envoy Sidecar 注入器安装到集群 这会添加 Envoy Sidecar 代理,并将其连接到 Cloud Service Mesh, 用于配置容器的网络。
最后,您还可以使用第三方提供商的 Envoy 部署解决方案 Cloud Service Mesh例如,GetEnvoy 就是这样一种产品,其中提供一个基于软件包管理器的 Envoy 代理安装和更新方法。
关于 Envoy 版本控制
Envoy 必须为 1.9.1 或更高版本才能与 Cloud Service Mesh 配合使用。 我们建议始终使用最新的 Envoy 版本,以确保已知的安全漏洞得到缓解。
如果您决定使用我们的自动化方法之一部署 Envoy,我们会按以下方式处理此任务:
当您对 Compute Engine 虚拟机使用自动 Envoy 部署时,已安装的 Envoy 版本已经过验证,可与 Cloud Service Mesh 搭配使用。使用实例模板创建新虚拟机时,虚拟机将收到已经过我们验证的最新版本。如果您有长时间运行的虚拟机,则可以使用滚动更新来替换现有虚拟机和获取最新版本。
将 Envoy Sidecar 注入器与 GKE 搭配使用时, 注入器配置为使用我们已验证的最新版 Envoy 与 Cloud Service Mesh 搭配使用当 Sidecar 注入您的工作负载 Pod 时,它会接收此版本的 Envoy。如果您想选用较新版本的 Envoy,请更新 Envoy Sidecar 注入器。
如需了解特定的 Envoy 版本,请参阅版本记录。如需了解安全漏洞,请参阅安全公告。
授予所需的 IAM 权限
您必须具有足够的 Identity and Access Management (IAM) 权限,才能创建虚拟机实例和修改网络以配置 Cloud Service Mesh。如果您有
项目的角色
所有者或编辑者(roles/owner
或
roles/editor
)。
正在启用 Cloud Service Mesh,那么您会自动拥有正确的权限。
否则,您必须具有下表中显示的所有 Compute Engine IAM 角色。如果您具有这些角色,则您也会拥有这些角色相应的权限,如 Compute Engine IAM 文档中所述。
任务 | 所需角色 |
---|---|
为服务账号设置 IAM 政策。 | Service Account Admin
( roles/iam.serviceAccountAdmin ) |
启用 Cloud Service Mesh。 | Service Usage Admin
( roles/serviceusage.serviceUsageAdmin ) |
创建网络、子网和负载平衡器组件。 | Compute Network Admin
( roles/compute.networkAdmin ) |
添加和移除防火墙规则。 | Compute Security Admin
( roles/compute.securityAdmin ) |
创建实例。 | Compute Instance Admin
( roles/compute.instanceAdmin ) |
GKE 节点池或 Compute Engine 虚拟机
拥有
https://www.googleapis.com/auth/cloud-platform
范围。如需了解详情,请参阅排查使用 Envoy 的部署的问题。
在 xDS v3 中,授予 Cloud Service Mesh Envoy 客户端使用的服务账号
roles/trafficdirector.client
角色。
启用 Traffic Director API
控制台
在 Google Cloud Console 中,转到您的项目的 API 库页面。
在搜索 API 和服务字段中,输入
Traffic Director
。在搜索结果列表中,点击 Traffic Director API。如果系统未列出 Traffic Director API,则表示您没有启用 Traffic Director API 所必需的权限。
在 Traffic Director API 页面上,点击启用。
gcloud
运行以下命令:
gcloud services enable trafficdirector.googleapis.com
启用 Cloud DNS API 并配置 Cloud DNS
如果要在 Cloud Storage 中配置 Cloud Service Mesh, Compute Engine您必须启用 Cloud DNS API 并配置 Cloud DNS 以进行 DNS 名称解析。
如需了解 Cloud Service Mesh 和 DNS 解析的背景信息,请参阅 Cloud Service Mesh 和 DNS 名称解析。
首先,按照以下说明启用 Cloud DNS API。
控制台
在 Google Cloud Console 中,转到您的项目的 API 库页面。
在搜索 API 和服务字段中,输入
DNS
。在搜索结果列表中,点击 Cloud DNS API。如果系统未列出 Cloud DNS API,则表示您没有启用 Cloud DNS API 所需的必要权限。
在 Cloud DNS API 页面上,点击启用。
gcloud
运行以下命令:
gcloud services enable dns.googleapis.com
接下来,配置 Cloud DNS 代管式专用区域。按照创建专用区域中的说明执行操作。
启用服务账号以访问 Traffic Director API
设置数据平面并将其连接到 Cloud Service Mesh 时,
xDS 客户端(例如 Envoy 代理)会连接到
trafficdirector.googleapis.com
个 xDS 服务器。这些 xDS 客户端会向 xDS 服务器提供服务账号身份,以确保数据层面和控制层面之间的通信已获得适当授权:
- 对于 Compute Engine 虚拟机,xDS 客户端会使用分配给该虚拟机的服务账号。
- 对于 GKE,如果未启用
Workload Identity
,则 xDS 客户端会使用分配给底层 GKE 节点的服务账号。 - 如果启用了
Workload Identity
,则 xDS 客户端使用绑定到 Kubernetes pod 服务账号的 Google 服务账号。
您需要以下权限。仅支持 xDS v3。如果您使用的是 xDS v2,则必须迁移到 xDS v3。如需了解如何迁移,请参阅从 xDS v2 迁移到 xDS v3。
使用 xDS v3 时,客户端使用的服务账号必须具有 trafficdirector.networks.reportMetrics
和 trafficdirector.networks.getConfigs
权限。您可以使用 IAM
Cloud Service Mesh Client 角色
(roles/trafficdirector.client
),其中封装了这两项权限。
控制台
在 Google Cloud 控制台中,转到 IAM 和管理页面。
选择您的项目。
确定要向其添加角色的服务账号:
- 如果该服务账号不在成员列表中,则表明还没有为它分配任何角色。点击添加,然后输入该服务账号的电子邮件地址。
- 如果该服务账号已经在成员列表中,则表明它具有现有角色。请选择服务账号,然后点击角色标签页。
展开角色。对于要修改的服务账号,点击
修改。选择其他 > Cloud Service Mesh Client 角色。
如需将角色应用于服务账号,请点击保存。
gcloud
运行以下命令:
gcloud projects add-iam-policy-binding PROJECT \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role=roles/trafficdirector.client
请替换以下内容:
PROJECT
:输入gcloud config get-value project
SERVICE_ACCOUNT_EMAIL
:与服务账号关联的电子邮件
继续设置流程
现在您已完成前提条件步骤,可以开始设置服务网格。