探索 GKE Enterprise


使用 Terraform 部署示例应用,探索 Google Kubernetes Engine (GKE) Enterprise 版。它将部署真正的实操环境,其中包含一个 GKE 集群、Anthos Service Mesh 和一个具有多个微服务的应用。本教程将为您介绍这些功能,通过一个虚构的银行让您了解部署在 Google Cloud 上的 GKE Enterprise。然后,您可以按照我们的后续教程进一步探索银行的 GKE Enterprise 案例,探索您感兴趣的 GKE Enterprise 功能。

如需详细了解支持 GKE Enterprise 的 GKE Enterprise 功能,请参阅我们的技术概览。但是,您无需熟悉 GKE Enterprise 或 Terraform 即可学习本教程。您需要熟悉基本的 Kubernetes 概念(例如集群);如果您还不熟悉,请参阅 Kubernetes 基础知识Google Kubernetes Engine (GKE) 文档针对 Anthos Service Mesh 准备应用

当您准备好进行实际生产安装时,请参阅我们的设置部分

您的旅程

您是 Bank of Anthos 的平台主管。Bank of Anthos 成立于十年前,最开始是一家小型企业,使用两台服务器处理付款。此后,它发展成为一家成功的商业银行,拥有数千名员工和不断壮大的工程组织。现在,Bank of Anthos 希望进一步拓展其业务。

在此期间,您和您的团队发现,您们在维护基础架构方面花费了比创造新业务价值更多的时间和费用。现有堆栈中凝结了数十年的累积经验;但您知道,这种技术无法满足银行在发展壮大过程中需要的全球部署规模。

您已采用 GKE Enterprise 对应用进行现代化改造,并成功迁移到 Google Cloud 以实现扩展目标。

目标

在本教程中,您将通过以下任务了解 GKE Enterprise 的一些主要功能:

  • 使用集群、应用和企业功能部署 GKE Enterprise 环境:Anthos Service Mesh、Config Sync 和 Policy Controller。

  • 使用 Google Cloud 控制台探索应用使用的 GKE 资源。

  • 使用 Anthos Service Mesh 观察应用服务。

部署的内容

部署 Bank of Anthos on Google Cloud 使用以下内容预配您的项目:

  • 在 Google Cloud 上运行的 GKE 集群:anthos-sample-cluster1

  • 安装在集群上的 Anthos Service Mesh。您会使用 Anthos Service Mesh 来管理 anthos-sample-cluster1 上的服务网格。

  • Config Sync政策控制器,用于管理 anthos-sample-cluster1 上的配置和安全政策。

  • 在集群上运行的 Bank of Anthos 应用。这是一个基于网络的银行应用,使用由各种编程语言(包括 Java、Python 和 JavaScript)编写的多个微服务。

费用

部署 Bank of Anthos 应用将产生适用于 Google Cloud 上的 GKE Enterprise 的随用随付费用(具体请参阅价格页面),除非您已购买订阅。

您还需要承担运行 Bank of Anthos 应用期间产生的其他 Google Cloud 费用,例如 Compute Engine 虚拟机和负载平衡器的费用。

我们建议在完成本教程或者浏览部署后清理以避免产生更多费用。

准备工作

请务必满足以下前提条件。

选择或创建项目

您可以使用现有项目,也可以为本教程创建一个新项目。

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  5. 确保您的 Google Cloud 项目已启用结算功能

激活 Cloud Shell

Cloud Shell 是 Google Cloud 的交互式 Shell 环境,可让您通过网络浏览器管理项目和资源。

在 Google Cloud 控制台中,激活 Cloud Shell。

激活 Cloud Shell

授予 IAM 角色

如果您使用的是现有项目,请确保您的 Google Cloud 账号具有本教程所需的 IAM 角色

向您的 Google 账号授予角色。对以下每个 IAM 角色运行以下命令一次: roles/resourcemanager.projectIamAdmin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iam.securityAdmin, roles/serviceusage.serviceUsageAdmin, roles/container.admin, roles/logging.logWriter, roles/gkehub.admin, roles/viewer, roles/monitoring.viewer

$ gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
  • PROJECT_ID 替换为您的项目 ID。
  • EMAIL_ADDRESS 替换为您的电子邮件地址。
  • ROLE 替换为每个角色。

使用 Terraform 部署 Bank of Anthos

满足所有前提条件后,在 Cloud Shell 上运行以下命令以部署 Bank of Anthos:

  1. 确保您的默认项目设置为您要在其中部署应用的项目 ID。如果尚未设置,请在 Cloud Shell 中运行以下命令:

    gcloud config set project PROJECT_ID
    

    PROJECT_ID 替换为您的 Google Cloud 项目 ID。

  2. 将 Bank of Anthos GitHub 代码库克隆到 Cloud Shell:

    git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git
    
  3. TF_VAR_project 环境变量设置为项目 ID:

    export TF_VAR_project=PROJECT_ID
    

    PROJECT_ID 替换为您的 Google Cloud 项目 ID。

  4. 切换到托管安装脚本的目录:

    cd bank-of-anthos/iac/tf-anthos-gke
    
  5. 初始化 Terraform。如需使用最新的 Google 提供程序版本,请添加 -upgrade 标志:

    terraform init -upgrade
    
  6. (可选)查看将创建的资源:

    terraform plan
    
  7. 应用 Terraform 配置以创建必要的资源并部署 Bank of Anthos:

    terraform apply
    

如果上述命令成功完成,则 Bank of Anthos 应用及其运行的资源将部署在您的项目中。如果遇到任何部署错误,请参阅问题排查

使用 GKE Enterprise 概览

GKE Enterprise 功能围绕“舰队”的概念构建:舰队是可以共同管理的 Kubernetes 集群的逻辑分组。Google Cloud 控制台中的 GKE Enterprise 概览提供了整个舰队的概览视图。

转到 GKE Enterprise 概览

概览会显示以下信息:

  • 舰队中有多少集群,以及运行状况是否良好。在此示例中(如果您没有任何其他现有舰队成员集群),此舰队中的集群部分会告知您,您有一个 GKE 集群。
  • 舰队的资源利用率,包括按舰队和集群汇总的 CPU、内存和磁盘用量。
  • 为舰队识别的任何安全问题、舰队范围内的 Policy Controller 覆盖范围,以及 Config Sync 软件包的同步状态。

探索 GKE 资源

GKE 集群页面会显示项目中的所有集群。注册到舰队的集群会在舰队列中列出其舰队。

在本部分中,您将深入了解 Bank of Anthos 的 GKE 资源。

集群

  1. 在 Google Kubernetes Engine 控制台中,转到集群页面。

    转到“集群”页面

  2. 点击新部署的 anthos-sample-cluster1 集群。在打开的集群详情页面中,您可以查看基本集群详细信息以及集群的网络和安全配置。您还可以在功能部分中查看此集群中启用了哪些 GKE 功能。

  3. 点击节点标签页以查看集群中的所有工作器机器。您可以进一步展开细目以查看每个节点上运行的工作负载 pod 以及节点的资源摘要(CPU、内存、存储空间)。

如需详细了解 GKE 集群和节点,请参阅 GKE 文档

Workloads

GKE 控制台有一个工作负载视图,其中显示您的所有 GKE 集群上运行的工作负载的汇总视图。

在 Google Kubernetes Engine 控制台中,转到 工作负载页面。

转到“工作负载”页面

概览标签页显示 GKE 集群中的工作负载和命名空间的列表。您可以按命名空间过滤以查看每个命名空间中运行的工作负载。

服务和入站流量

Service 和 Ingress 视图显示项目的 Service 和 Ingress 资源。Service 通过端点将一组 Pod 公开为网络服务,而 Ingress 管理对集群中服务的外部访问权限。但是,针对流向银行的流量,Bank for Anthos 并不使用常规的 Kubernetes Ingress,而是使用 Istio 入站流量网关服务,Anthos Service Mesh 用户可以使用该服务向其入站流量添加更复杂的路由。在本教程后面的部分,您会在使用服务网格可观测性功能时看到这一功能的实际应用。

  1. 在 Google Kubernetes Engine 控制台中,转到 Service 和 Ingress 页面。

    转到“Service 和 Ingress”页面

  2. 如需查找 Bank of Anthos Ingress 网关,请向下滚动可用服务列表,并查找名为 frontend 的服务。入站流量网关管理应用服务网格的入站流量,因此在本例中,我们可以使用其详细信息访问银行的网络前端。

  3. 点击 frontend 服务的 IP 地址端点。此时将打开 Bank of GKE Enterprise 网页界面。

观察服务

在 GKE Enterprise 中,服务管理和可观测性由 Anthos Service Mesh 提供,这是一套由 Istio 提供支持的工具,可帮助您监控和管理可靠的服务网格。 如需详细了解 Anthos Service Mesh 以及它如何帮助您管理微服务,请参阅 Anthos Service Mesh 文档。如果您不熟悉如何将微服务与容器结合使用以及它们的作用,请参阅针对 Anthos Service Mesh 准备应用

在我们的示例中,示例部署中的集群运行基于微服务的 Bank of Anthos 示例应用。该应用还包含一个 loadgenerator 实用程序,用于模拟到集群的少量负载,以便您可以在信息中心中查看指标和流量。

在本部分中,您将使用 GKE Service Mesh 页面查看此应用的服务和流量。

在 Google Kubernetes Engine 控制台中,转到 Service Mesh 页面。

转到“Service Mesh”页面

该页面并排显示列表视图和拓扑视图,其中显示了项目的所有微服务,包括系统服务。Service Mesh 页面上的数据可能需要一段时间才能完成填充。如果您在拓扑视图中看到部分图表或无示意图,请尝试在集群中重启 Pod,您也可以转到下一部分,稍后再返回查看。

使用列表视图

列表中的每一行都是构成 Bank of Anthos 应用的一项服务。例如,frontend 服务呈现应用的网页界面,userservice 服务管理用户帐号和身份验证。

每个服务列表都会显示该服务的最新指标,例如服务器错误率每秒请求数。系统会以开箱即用的方式为部署在 GKE Enterprise 上的服务收集这些指标。您无需编写任何应用代码即可查看这些统计信息。

您可以在此视图中展开细目,以进一步了解各个服务的详情。例如,要详细了解 transactionhistory 服务,请执行以下操作:

  1. 点击服务列表中的 transactionhistory。服务详情页面会显示此服务可用的所有遥测。

  2. transactionhistory 页面上,从左侧菜单中选择关联的服务。您可以在此处查看服务的入站出站连接。解锁的锁形图标表示此端口上已检测到一些未使用双向 TLS (mTLS) 加密的流量。您可以在保护 GKE Enterprise 教程中详细了解其工作原理。

    Anthos Service Mesh 关联服务视图屏幕截图

使用拓扑视图

通过拓扑视图,您可以重点关注服务如何交互。 从图例中可以看出,该图表显示了应用的 Anthos Service Mesh 服务、Istio 服务、Deployment 和 Pod。如需展开此视图,请点击列表视图上的 切换面板“左侧面板”

Anthos Service Mesh 拓扑视图的屏幕截图

Anthos Service Mesh 会自动观察哪些服务在互相通信并显示服务到服务连接的详细信息:

  • 将鼠标指针悬停在某一项上可查看其他详情,包括每项服务的出站 QPS。

  • 用鼠标拖动节点可改善图表特定部分的视图。

  • 点击服务节点可获取更多服务信息。

  • 将指针放在工作负载节点上时,点击展开可以展开细目进一步查看详情,包括工作负载当前正在运行的实例数。

进一步探索 GKE Enterprise

虽然本教程介绍了许多 GKE Enterprise 功能,但在我们的部署中还有更多值得研究和使用的功能。 试用我们的后续教程,试用 GKE Enterprise 的一些实操任务,或者在清理之前继续自行探索该示例。

问题排查

如果您在部署 Bank of Anthos 应用时遇到问题,请参阅以下问题排查场景。

未启用 Google Cloud API(代码 403)

您可能会看到类似于以下内容的错误:

Error: Error creating Feature: failed to create a diff: failed to retrieve Feature resource: googleapi:
Error 403: GKE Hub API has not been used in project {project-number} before or it is disabled.
Enable it by visiting https://console.developers.google.com/apis/api/gkehub.googleapis.com/overview?project={project-number} then retry.
If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

如错误所提示,请等待几分钟,以便 API 完全启用并使用 terraform apply 再次运行部署。

Service Mesh 页面未显示所有服务

部署 Bank of Anthos 应用后,您可能需要等待几分钟,以便 Service Mesh 页面显示项目的微服务。如果 Service Mesh 页面在几分钟后没有显示部分或全部服务,则说明 Anthos Service Mesh 的某些代理可能无法自动随应用工作负载一起启动。

如需解决此问题,请重启 anthos-sample-cluster1 集群中的 Pod:

  • 获取集群的凭据:

    gcloud container clusters get-credentials anthos-sample-cluster1 --zone us-central1
    
  • 删除 Pod:

    kubectl delete pod -n default --all
    
  • 检查 Pod 是否已重启:

    kubectl get pod -n default
    

Service Mesh 页面应该会在几分钟内填充您项目的微服务。

清理

探索完 Bank of Anthos 应用后,您可以清理在 Google Cloud 上创建的资源,以免这些资源占用配额,日后产生费用。

  • 选项 1. 您可以删除该项目。 但是,如要保留项目,您可以使用选项 2 删除部署。

  • 选项 2.如果要保留当前项目,您可以使用 terraform destroy 删除示例应用和集群。

删除项目(选项 1)

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

    删除 Google Cloud 项目:

    gcloud projects delete PROJECT_ID

删除部署(选项 2)

此方法会删除 Bank of Anthos 应用和集群,但不会删除项目。在 Cloud Shell 上运行以下命令:

  1. 切换到托管安装脚本的目录:

    cd bank-of-anthos/iac/tf-anthos-gke
    
  2. 删除示例和集群:

    terraform destroy
    
  3. 出现提示时,输入项目 ID。

如果您打算重新部署,请验证是否符合准备工作部分中所述的所有要求。

后续步骤