探索 Anthos

Anthos Sample Deployment on Google Cloud(预览版)是一个 Google Cloud Marketplace 解决方案,现在可供预览。它将部署真正的 Anthos 实操环境,其中包含一个 GKE 集群、服务网格和一个具有多个微服务的应用。本教程将为您介绍这些功能,通过一个虚构的银行让您了解部署在 Google Cloud 上的 Anthos。然后,您可以在我们的后续教程中进一步了解银行的 Anthos 故事,探索您感兴趣的 Anthos 功能。

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

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

完成本教程后,请完成我们的调查问卷

您的旅程

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

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

您已采用 Anthos 对应用进行现代化改造,并成功迁移到云端,以实现扩展目标。

目标

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

  • 部署 Anthos 环境,包括集群、应用和 Anthos 组件(Anthos Service Mesh 和 Anthos Config Management)。

  • 使用 Google Cloud Console 探索应用使用的 Anthos 集群资源。

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

费用

除非您订阅了 Anthos,否则使用 Anthos Sample Deployment 将按价格页面上列出的随用随付方式支付 Anthos on Google Cloud 费用

您还需要负责运行 Anthos Sample Deployment 时产生的其他 Google Cloud 费用,例如 Compute Engine 虚拟机和负载平衡器的费用。您可以在部署的 Google Cloud Marketplace 页面上查看所有这些资源的每月估算费用。

我们建议在完成本教程或者浏览部署后清理以避免产生更多费用。Anthos Sample Deployment 不适用于生产环境,其组件无法升级。

准备工作

Anthos Sample Deployment on Google Cloud 要求您使用没有任何现有资源的新项目。

您还需要满足以下的额外项目要求:

  • 目标部署项目和可用区中必须有足够的配额,并且至少要配备 7 个 vCPU、24.6 GB 内存、310-GB 磁盘空间、一个 VPC、2 条防火墙规则和 1 个 Cloud NAT。
  • 您的组织没有明确限制使用一键部署映像的政策

在开始本教程之前,请完成以下操作:

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

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 启用 Compute Engine and Service Management API。

    启用 API

然后,请执行以下操作,确保您的项目满足运行 Anthos Sample Deployment 的要求:

  1. 在新项目中,点击顶部工具栏中的激活 Cloud Shell 激活 Shell 按钮 以启动 Cloud Shell。

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

  2. 使用目标部署可用区配置 Cloud Shell,替换以下命令中的 ZONE

    gcloud config set compute/zone ZONE
    
  3. 输入以下命令,以运行一个检查项目是否符合必要要求的脚本:

    curl -sL https://github.com/GoogleCloudPlatform/anthos-sample-deployment/releases/latest/download/asd-prereq-checker.sh | sh -
    

    输出(示例):

    Your active configuration is: [cloudshell-4100]
    Checking project my-project-id, region us-central1, zone us-central1-c
    
    PASS: User has permission to create service account with the required IAM policies.
    PASS: Org Policy will allow this deployment.
    PASS: Service Management API is enabled.
    PASS: Anthos Sample Deployment does not already exist.
    PASS: Project ID is valid, does not contain colon.
    PASS: Project has sufficient quota to support this deployment.
    

    如果有任何一项不是 PASS,请参阅我们的问题排查指南。如果不修复这些错误,您可能无法部署示例。

部署的内容

Anthos Sample Deployment on Google Cloud 使用以下内容预配您的项目:

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

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

  • 您可以参阅跟进教程 Secure Anthos,了解如何使用 Anthos Config Management 来管理 anthos-sample-cluster1 上的配置和安全政策。

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

  • 一个 Compute Engine 实例(虚拟机),用于在集群创建后执行多种自动化任务以启动教程环境:asd-jump-server

  • 一个 VPC,包含一个位于 GKE 集群和 Compute Engine 实例目标部署区域中的子网。Cloud Router 路由器上的 Cloud NAT 网关,以及用于部署的组件之间的连接的防火墙规则。

启动 Anthos Sample Deployment on Google Cloud

通过 Cloud Marketplace 启动 Anthos Sample Deployment on Google Cloud:

  1. 打开 Anthos Sample Deployment on Google Cloud。

    转到 Anthos Sample Deployment on Google Cloud

  2. 选择并确认要使用的 Google Cloud 项目。这应该是您在准备工作部分创建的项目。

  3. 点击启动。可能需要几分钟时间才能前进到部署配置屏幕,在这期间解决方案会启用一些 API。

  4. 选中 Confirm that all prerequisites have been met 复选框,以确认您已成功运行前提条件脚本。

  5. (可选)在部署配置屏幕中,指定所选的部署名称、所用区和服务帐号。首次部署时,我们建议您接受所有提供的默认值,包括创建新的服务帐号。

  6. 点击部署。部署试验最多可能需要 15 分钟,因此,如果必须等待一段时间,请不必担心。

在部署过程中,Cloud Console 将转换到 Deployment Manager 视图。示例部署完成后,您可以查看完整部署。您应该会看到所有已启用资源的列表,其中包括一个 GKE 集群 (anthos-sample-cluster1) 和一个 Compute Engine 实例 (asd-jump-server)。

如果遇到任何部署错误,请参阅我们的问题排查指南

使用 Anthos 信息中心

针对应用的所有资源(包括集群、服务和工作负载),Anthos 提供开箱即用的结构化视图,您可以一目了然地查看资源概况,也可以根据需要展开细目,找到所需的详细信息。如需查看部署的顶级信息中心,请转到 Google Cloud Console 中您项目的 Anthos 信息中心。

转到 Anthos 信息中心

您应该会看到:

  • 服务网格部分,显示您有 9 个服务(但您需要执行操作以查看其运行状况)。本教程后面的部分将详细介绍其含义。

  • 集群状态部分,显示您有一个运行状况良好的 GKE 集群。

Anthos 信息中心的屏幕截图

探索 Anthos 集群资源

“Anthos 集群”页面会显示项目中注册到 Anthos 的所有集群,包括 Google Cloud 外部的集群。您还可以使用“Google Kubernetes Engine 集群”页面查看项目中的所有集群。实际上,如果您需要查看集群和节点的详细信息,可以从 Anthos 集群页面展开至 GKE 页面。

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

集群管理

  1. 在 Google Cloud Console 中,转到 Anthos 集群页面。

    转到“集群”页面

  2. 点击 anthos-sample-cluster1 集群,在右侧窗格中查看基本详情,包括其类型主版本位置。您还可以在集群功能部分中查看此集群中启用了哪些 Anthos 功能。

  3. 如需详细了解此集群,请点击 More details in GKE。您随即会进入 Google Kubernetes Engine 控制台中此集群的页面,其中包含集群的所有当前设置。

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

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

集群工作负载

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

此时会显示 GKE 集群和命名空间中的工作负载。例如,boa 命名空间中的工作负载正在 anthos-sample-cluster1 中运行。

服务和入站流量

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 网关,请向下滚动可用服务列表,以查找名为 istio-ingressgateway 的服务。

  3. 点击 istio-ingressgateway 行尾的向下箭头,以显示服务的更多信息,包括其所有外部端点。入站流量网关管理应用服务网格的入站流量,因此在本例中,我们可以使用其详细信息访问银行的网络前端。

  4. 点击使用端口 80istio-ingressgateway 外部端点。您应该能够浏览 Bank of Anthos 的网页界面。

观察服务

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

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

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

查看 Service 表格视图

  1. 转到 Anthos Service Mesh 页面

    转到 Anthos Service Mesh 页面

  2. 页面默认显示表格视图,其中显示项目的所有微服务(包括系统服务)的列表。如需仅过滤 Bank of Anthos 服务,请从页面左上角的命名空间下拉列表中选择 boa

表中的每一行都是构成 Bank of Anthos 应用的服务之一;例如,frontend 服务会呈现应用的 Web 界面,userservice 服务则负责管理用户帐号和身份验证。

每个服务列表都会显示该服务的最新指标,例如错误率和关键延迟时间。系统会以开箱即用的方式为部署在 Anthos 上的服务收集这些指标。您无需编写任何应用代码即可查看这些统计信息。

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

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

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

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

观察 Service 拓扑视图

表格视图不是观察 Anthos 中的服务的唯一方式。通过拓扑视图,您可以重点关注服务如何交互

  1. 如果尚未返回,请通过点击页面顶部的返回箭头返回服务详情视图中的表视图。

  2. 在页面右上角,点击拓扑以从表视图切换到工作负载/服务图可视化。从图例中可以看出,该图表显示应用的 Anthos Service Mesh 服务和实现这些服务的 GKE 工作负载。

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

您现在可以探索拓扑图。Anthos Service Mesh 会自动观察哪些服务在互相通信并显示服务到服务连接的详细信息:

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

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

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

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

进一步探索 Anthos

虽然本教程介绍了许多 Anthos 功能,但在我们的部署中,Anthos 仍有更多值得研究和使用的功能。在按照下一部分中的清理说明操作之前,请访问我们的某个后续教程,使用 Anthos 尝试一些实操任务,或者继续自行探索 Anthos Sample Deployment on Google Cloud。

尝试更多教程

清理

学完 Anthos Sample Deployment 后,您可以清理在 Google Cloud 上创建的资源,以避免这些资源占用配额,日后产生费用。以下部分介绍如何删除或关闭这些资源。

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

  • 选项 2.(实验性)如果您正在处理现有的空项目,则可能更希望从删除部署开始手动还原本教程中的所有步骤。

  • 选项 3.(实验性)如果您是 Google Cloud 专家或者在集群中已有资源,则可能希望手动清除在本教程中创建的资源。

删除项目(选项 1)

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除部署(选项 2)

此方法依赖于允许 Deployment Manager 撤消其创建的内容这一功能。即使部署有错误,您也可以使用此方法来撤消它。

  1. 在 Cloud Console 的导航菜单上,点击 Deployment Manager

  2. 选择您的部署,然后点击删除

  3. 再次点击删除进行确认。

  4. 即使部署存在错误,您仍然可以选择并删除它。

  5. 如果点击删除不起作用,作为最后的办法,您可以尝试删除但保留资源。如果 Deployment Manager 无法删除任何资源,您需要记下这些资源并尝试手动删除它们。

  6. 等待 Deployment Manager 完成删除。

  7. (临时步骤)在导航菜单中,点击网络服务 > 负载平衡,然后删除 anthos-sample-cluster1 集群创建的转发规则。

  8. (可选)转到 https://source.cloud.google.com/<project_id>。删除名称包含 config-repo 的代码库(如有)。

  9. (可选)删除您在部署期间创建的服务帐号及其所有 IAM 角色。

执行手动清理(选项 3)

此方法依赖于从 Google Cloud Console 手动删除资源。

  1. 在 Cloud Console 的导航菜单上,点击 Kubernetes Engine

  2. 选择您的集群,然后点击删除,然后再次点击删除进行确认。

  3. 在 Cloud Console 的导航菜单上,点击 Compute Engine

  4. 选择跳转服务器并点击删除,然后再次点击删除进行确认。

  5. 遵循选项 2 中的第 7 步和第 8 步操作。

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

后续步骤