准备使用 Envoy 设置 Cloud Service Mesh

设置 Cloud Service Mesh 包括以下阶段:

  1. 授予权限、启用 Traffic Director API、配置 Cloud DNS(如果您使用的是 Compute Engine)。
  2. 使用 Envoy 代理部署应用。
  3. 创建服务和路由规则,以确定流量如何通过服务网格传输。

本文档介绍了第一阶段,在您使用旧版 API 时适用。本文档后面部分的继续设置流程中列出的针对具体平台的指南介绍了第二阶段和第三个阶段。

在阅读本指南之前,请先熟悉 Cloud Service Mesh 概览。如果您使用的是服务路由 API,请参阅服务路由 API 概览

前提条件

无论您是计划使用 Cloud Service Mesh 来配置与虚拟机 (VM) 实例和/或容器上的应用一起运行的 Envoy 代理,还是同时需要完成以下任务:

  1. 启用结算功能。
  2. 确定如何安装 Envoy。
  3. 授予所需权限。
  4. 为您的项目启用 Traffic Director API。
  5. 如果您使用的是 Compute Engine,请启用 Cloud DNS API 并配置 Cloud DNS。
  6. 确保 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。如果您在启用 Cloud Service Mesh 的项目中拥有项目 Owner 或 Editorroles/ownerroles/editor)的角色,那么您会自动拥有正确的权限。

否则,您必须具有下表中显示的所有 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

控制台

  1. 在 Google Cloud Console 中,转到您的项目的 API 库页面。

    转到“API 库”

  2. 搜索 API 和服务字段中,输入 Traffic Director

  3. 在搜索结果列表中,点击 Traffic Director API。如果系统未列出 Traffic Director API,则表示您没有启用 Traffic Director API 所必需的权限。

  4. Traffic Director API 页面上,点击启用

gcloud

运行以下命令:

gcloud services enable trafficdirector.googleapis.com

启用 Cloud DNS API 并配置 Cloud DNS

如果您要在 Compute Engine 上配置 Cloud Service Mesh,请按照以下说明操作。您必须启用 Cloud DNS API 并配置 Cloud DNS 以进行 DNS 名称解析。

如需了解 Cloud Service Mesh 和 DNS 解析的背景信息,请参阅 Cloud Service Mesh 和 DNS 名称解析

首先,按照以下说明启用 Cloud DNS API。

控制台

  1. 在 Google Cloud Console 中,转到您的项目的 API 库页面。

    转到“API 库”

  2. 搜索 API 和服务字段中,输入 DNS

  3. 在搜索结果列表中,点击 Cloud DNS API。如果系统未列出 Cloud DNS API,则表示您没有启用 Cloud DNS API 所需的必要权限。

  4. 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 服务账号。

您需要以下权限,具体取决于您用于配置 Envoy 的 xDS 客户端的版本。我们强烈建议您使用 xDS v3 配置新的 Envoy 部署,如果现有部署使用 xDS v2,则建议您迁移到 xDS v3。

  • 使用 xDS v3 时,客户端使用的服务账号必须具有 trafficdirector.networks.reportMetricstrafficdirector.networks.getConfigs 权限。您可以使用 IAM Cloud Service Mesh Client 角色 (roles/trafficdirector.client),该角色封装了这两项权限。

  • 使用 xDS v2 时,客户端使用的服务账号必须具有项目级 IAM compute.globalForwardingRules.get 权限。您还可以通过向服务账号分配 Compute Network Viewer 角色 (roles/compute.networkViewer) 来授予此权限。

控制台

  1. 在 Google Cloud 控制台中,转到 IAM 和管理页面。

    转到“IAM 和管理”

  2. 选择您的项目。

  3. 确定要向其添加角色的服务账号:

    • 如果该服务账号不在成员列表中,则表明还没有为它分配任何角色。点击添加,然后输入该服务账号的电子邮件地址。
    • 如果该服务账号已经在成员列表中,则表明它具有现有角色。请选择服务账号,然后点击角色标签页。
  4. 展开角色。对于要修改的服务账号,点击 修改

  5. 选择其他 > Cloud Service Mesh Client 角色。

  6. 如需将角色应用于服务账号,请点击保存

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:与服务账号关联的电子邮件

继续设置流程

现在您已完成前提条件步骤,可以开始设置服务网格。