设置 Traffic Director 前的准备工作

设置 Traffic Director 分为几个阶段:

  1. 授予权限并启用 Traffic Director API
  2. 与应用一同部署 Envoy Sidecar 代理,并将代理连接到 Traffic Director
  3. 设置 Traffic Director,使 Traffic Director 能够配置数据平面。

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

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

前提条件

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

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

确定如何安装 Envoy

对于基于虚拟机和容器的工作负载,Traffic Director 提供自动 Envoy 部署方法以设置服务网格。

  • 在 Compute Engine 上,您可以使用虚拟机模板在虚拟机上自动部署受支持的 Envoy 二进制文件版本。此 Envoy 会自动引导以连接到 Traffic Director。

  • 在 GKE 上,您可以安装 Envoy Sidecar 注入器,以便自动部署 Sidecar 代理和新创建的 pod,并将它们连接到 Traffic Director。

如果要手动部署 Envoy,则可以将 Envoy 部署为二进制文件(仅限 Compute Engine)或容器(Compute Engine 或 GKE)。您还必须提供 Envoy 引导配置文件,以将代理连接到 Traffic Director 并接收配置。如需详细了解引导,请查阅为 Traffic Director 配置 Envoy 引导属性

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

如果您要自动安装 Envoy

请确保启用 Cloud OS Config API,否则您无法在虚拟机上安装所需组件。

为此,请按以下说明操作:

控制台

  1. 在 Cloud Console 中,转到 API 和服务。
    转到“API 库”页面
  2. 选择正确的项目。
  3. 在搜索框中输入 Cloud OS Config API,然后按 Enter
  4. 选择 Cloud OS Config API
  5. 点击启用

gcloud

gcloud services enable osconfig.googleapis.com

如果您要手动安装 Envoy

Traffic Director 支持 Envoy 1.9.1 或更高版本。我们强烈建议您使用最新的 Envoy 版本,以确保所有已知的安全漏洞都得到缓解。

本指南中的说明介绍了如何从 Docker 映像获取 Envoy 二进制文件。如果您决定使用本指南中的手动设置步骤,则需要 Docker 来解压缩 Envoy 代理二进制文件。您还需要 Docker 权限才能从 Docker 拉取映像。如果您以非根用户身份运行 Docker 工具,请按照 Docker 的安装后说明进行操作。

授予所需的 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 服务帐号。

xDS 客户端使用的服务帐号必须具有 compute.globalForwardingRules.get 项目级 IAM 权限。您还可以通过向服务帐号分配 compute.networkViewer 角色来授予此权限。

控制台

  1. 在 Cloud Console 中打开 IAM 和管理员页面。

    打开“IAM 和管理”页面

  2. 选择您的项目。

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

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

  5. 选择 Compute Engine > Compute Network Viewer 角色。

  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/compute.networkViewer

继续设置流程

现在您已完成必要的步骤,可以部署您的 Sidecar 代理并配置 Traffic Director。以下指南针对 Compute Engine 和 GKE 提供特定于平台的说明:

请注意,尽管这些指南重点介绍如何在单个环境(Compute Engine 或 GKE)上部署 Envoy Sidecar 代理,但 Traffic Director 十分灵活,并且支持跨环境部署。

您可以使用 Compute Engine 负载平衡 SDK 或 REST API 配置 Traffic Director。请参阅负载平衡 API 和 gcloud 参考