设置 Traffic Director 前的准备工作

设置 Traffic Director 分为几个阶段:

  1. 授予权限并启用 Traffic Director API
  2. 使用 Envoy 代理部署应用。
  3. 创建服务和路由规则,以确定流量如何通过服务网格传输。

本文档介绍如何开展第一阶段。以下平台特定指南介绍了第二和第三阶段:

在阅读本指南之前,先熟悉 Traffic Director 概念性概览

前提条件

无论您打算使用 Traffic Director 来配置与虚拟机和/或容器上的应用一同运行的 Envoy 代理,您都需要先完成以下任务:

  1. 启用结算功能
  2. 确定如何安装 Envoy
  3. 授予所需权限
  4. 为您的项目启用 Traffic Director API
  5. 确保 Envoy 代理使用的服务帐号具有足够的权限来访问 Traffic Director API

以下部分提供了各项任务的说明。

启用结算功能

确保您的 Google Cloud 项目已启用结算功能。 如需了解详情,请参阅为项目启用、停用或更改结算功能

确定如何安装 Envoy

Traffic Director 可让您轻松安装 Envoy 代理并管理此基础架构层。

  • 在 Compute Engine 上,您可以将 Envoy 自动添加到虚拟机上运行的应用。您将使用安装 Envoy、将其连接到 Traffic Director 并配置虚拟机的网络的虚拟机模板。

  • 在 GKE 上,您可以将 Envoy Sidecar 代理自动添加到服务的 Pod。您需要在集群中安装 Envoy Sidecar 注入脚本,并将 Envoy Sidecar 代理连接到 Traffic Director 并配置容器的网络。

最后,您还可以借助 Traffic Director 使用来自第三方提供商的 Envoy 部署解决方案。例如,GetEnvoy 就是这样一种产品,其中提供一个基于软件包管理器的 Envoy 代理安装和更新方法。

关于 Envoy 版本控制

1.9.1 或更高版本的 Envoy 才能与 Traffic Director 配合使用。 此外,我们建议始终使用最新的 Envoy 版本,以确保已知的安全漏洞得到缓解。

如果您决定使用我们的自动化方法之一部署 Envoy,我们按以下方式处理此任务:

  • 当您对 Compute Engine 虚拟机使用自动 Envoy 部署时,已安装的 Envoy 版本已经过验证,可与 Traffic Director 搭配使用。使用实例模板创建新虚拟机时,虚拟机将收到已经过我们验证的最新版本。如果您有长时间运行的虚拟机,则可以使用滚动更新来替换现有虚拟机和获取最新版本
  • 当您将 Envoy Sidecar 注入 GKE 时,注入器配置为使用经验证可与 Traffic Director 搭配使用的最新版 Envoy。当 Sidecar 注入您的工作负载 Pod 时,它会接收此版本的 Envoy。如果您想选用较新版本的 Envoy,请更新 Envoy Sidecar 注入程序

如需了解特定的 Envoy 版本,请参阅版本记录。如需了解安全漏洞,请参阅安全公告

授予所需的 IAM 权限

您必须具有足够的权限才能创建虚拟机实例和修改网络以配置 Traffic Director。如果您在启用了 Traffic Director 的项目中拥有项目 Owner 或 Editor 角色,您将自动拥有正确的权限。

否则,您必须具有以下所有 Compute Engine IAM 角色。如果您具有这些角色,则还具有相关权限,如 Compute Engine IAM 文档中所述。

任务 所需角色
为服务帐号设置 Identity and Access Management (IAM) 政策 Service Account Admin
获取全局转发规则资源 Compute Network Viewer
启用 Traffic Director Service Usage Admin
创建网络、子网和负载平衡器组件 Network Admin
添加和移除防火墙规则 Security Admin
创建实例 Compute Instance Admin

此外,GKE 节点池或 Compute Engine 虚拟机必须具有 https://www.googleapis.com/auth/cloud-platform 范围。

启用 Traffic Director API

控制台

  1. 在 Cloud Console 中,转到项目的“API 和服务”。
    转到“API 库”页面
  2. 如需查找 Traffic Director API,请使用搜索字段。如果系统未列出 Traffic Director API,则表示您没有启用 Traffic Director API 所需的权限。
  3. 点击 Traffic Director API。
  4. 在显示 API 相关信息的页面中,点击启用

gcloud

gcloud services enable trafficdirector.googleapis.com

启用服务帐号以访问 Traffic Director API

当您设置数据平面并将其连接到 Traffic Director 时,您的 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 v2,我们建议您使用 xDS v3 配置新的 Envoy 部署,或迁移到 xDS v3。

  • 使用 xDS v3 时,客户端使用的服务帐号必须具有 trafficdirector.networks.reportMetricstrafficdirector.networks.getConfigs 权限。您可以使用 IAM 角色 trafficdirector.client,该角色包含这两种权限。
  • 使用 xDS v2 时,客户端使用的服务帐号必须具有 compute.globalForwardingRules.get 项目级层 IAM 权限。您还可以通过向服务帐号分配 compute.networkViewer 角色来授予此权限。

控制台

  1. 转到 Cloud Console 中的 IAM 和管理页面。

    转到“IAM 和管理”页面

  2. 选择您的项目。

  3. 确定要向其添加角色的服务帐号。

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

  5. 选择 Other > Traffic Director Client 角色。

  6. 点击保存,将角色应用到服务帐号。

gcloud

${SERVICE_ACCOUNT_EMAIL} 变量替换为正确的值。

PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding ${PROJECT} \
--member serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
--role roles/trafficdirector.client

继续设置流程

现在,您已完成前提条件步骤,可以开始设置服务网格。以下指南针对 Compute Engine 和 GKE 提供特定于平台的说明:

请注意,虽然这些指南都侧重于在单个 Compute Engine(Compute Engine 或 GKE)上部署 Envoy Sidecar 代理,但 Traffic Director 非常灵活,且支持 Compute Engine 和 GKE 的部署。