本指南介绍了如何使用 GKE Enterprise 命令行界面 (CLI) 在新的 Google Cloud GKE 集群上安装 Anthos Service Mesh 1.5.10-asm.2。
安装会启用以下功能:
本指南还介绍了如何在与集群位于同一 Google Cloud 项目的队列中注册集群。借助队列,您可以组织集群,以简化多集群管理。通过在队列中注册集群,您可以根据需要对服务和其他基础架构进行分组,以应用一致的政策。
目前,GKE Enterprise CLI 不支持在 GKE on VMware 上安装。如需在 GKE On GKE 上安装 Anthos Service Mesh,请参阅在本地安装 Anthos Service Mesh。
准备工作
本指南假定您已具备以下各项:
开始安装之前,请执行以下操作:
- 设置您的环境。
- 安装 GKE Enterprise CLI。
- 查看以下要求和限制。
使用要求
您必须拥有 GKE Enterprise 试用许可或订阅。如需了解详情,请参阅 GKE Enterprise 价格指南。
您的 GKE 集群必须满足以下要求:
如需将服务端口纳入服务网格,必须为服务端口命名,并且名称必须包含以下语法的端口协议:
name: protocol[-suffix]
,其中方括号表示必须以短划线开头的可选后缀。 如需了解详情,请参阅命名服务端口。如果您是在专用集群上安装 Anthos Service Mesh,则必须添加防火墙规则来打开端口 15017,以使用自动 Sidecar 注入。如果您未添加防火墙规则并启用了自动 Sidecar 注入,则在部署工作负载时会收到错误。如需详细了解如何添加防火墙规则,请参阅针对特定用例添加防火墙规则。
如果您在组织中创建了服务边界,则可能需要将 Mesh CA 服务添加到边界。如需了解详情,请参阅将 Mesh CA 添加到服务边界。
限制
仅支持每个 Google Cloud 项目安装一次 Anthos Service Mesh。不支持在单个项目中进行多次网格部署。
证书数据
来自 Mesh CA 的证书包含有关应用的服务的以下数据:
- Google Cloud 项目 ID
- GKE 命名空间
- GKE 服务账号名称
设置项目和集群默认值
获取将在其中创建集群的项目的项目 ID:
gcloud
gcloud projects list
控制台
在 Google Cloud 控制台中,前往信息中心页面:
点击页面顶部的从以下列表中选择:下拉列表。在随即显示的从以下列表中选择:窗口中,选择您的项目。项目 ID 会显示在项目信息中心的项目信息卡片上。
为项目 ID 创建环境变量:
export PROJECT_ID=
YOUR_PROJECT_ID
设置 Google Cloud CLI 的默认项目 ID:
gcloud config set project ${PROJECT_ID}
为集群选择区域或地区。
创建以下几个环境变量:
设置集群名称:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
集群名称只能包含小写字母、数字和“-”,必须以字母开头,以字母数字结尾,并且不能超过 40 个字符。
将
CLUSTER_LOCATION
设置为您的集群区域或集群地区:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
为 Google Cloud CLI 设置默认可用区或区域。
对于单区域集群,请设置默认区域:
gcloud config set compute/zone ${CLUSTER_LOCATION}
对于地区集群,设置默认地区:
gcloud config set compute/region ${CLUSTER_LOCATION}
准备资源配置文件
(可选)为 Anthos Service Mesh 软件包资源配置文件创建一个新目录。如果您计划设置多个集群,则可能需要使用集群名称作为目录名称。
切换到您要在其中下载 Anthos Service Mesh 软件包的目录。
将 Anthos Service Mesh 软件包下载到当前工作目录:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm .
设置集群名称:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
(可选)使用
kpt
setter 自定义资源配置文件。默认情况下,这些 setter 使用gcloud config
的默认值。如果设置gcloud config
默认值,或者如果您要更改值,请运行以下 setter 方法:设置项目 ID:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
设置默认可用区或区域:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
(可选)您可以将资源配置文件签入到您自己的源代码控制系统(例如 Cloud Source Repositories),以便您可以跟踪这些文件的更改。
设置可选值
使用 GKE Enterprise CLI,您还可以设置其他值。要查看可用 setter 的列表,请执行以下操作:
kpt cfg list-setters asm/
输出类似于以下内容:
NAME VALUE SET BY DESCRIPTION COUNT anthos.servicemesh.hub your_anthos_hub 1 anthos.servicemesh.tag your_anthos_tag 1 gcloud.compute.location your_zone_or_region 8 gcloud.compute.network default 1 gcloud.compute.subnetwork default 1 gcloud.container.cluster your_cluster_name 9 gcloud.container.cluster.releaseChannel REGULAR 1 gcloud.container.nodepool.max-nodes 4 1 gcloud.core.project your_project_ID kpt 21 gcloud.project.projectNumber your_project_number kpt 4
例如,要从默认值 REGULAR
更改发布版本,请在以下命令中将 YOUR_CHANNEL
替换为 STABLE
或 RAPID
:
kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL
如需了解每个发布版本,请参阅您可以获得哪些发布版本。
更改机器类型或节点数
GKE Enterprise CLI 会创建具有所需节点数和 Anthos Service Mesh 所需的机器类型的新集群。这些值是在 nodepool.yaml 中指定的。您可以修改 nodepool.yaml
的本地副本,以指定另一个机器类型,前提是至少具有 4 个 vCPU。
您可以根据系统要求通过以下 setter 增加节点数:
kpt cfg set asm gcloud.container.nodepool.max-nodes NUMBER_OF_NODES
在新集群上安装 Anthos Service Mesh
GKE Enterprise CLI 会在集群上启用 Anthos Service Mesh 所需的以下选项:
以
proj-PROJECT_NUMBER
格式向集群添加mesh_id
标签,其中PROJECT_NUMBER
是将在其中创建集群的项目的编号。mesh_id
标签对于在 Google Cloud 控制台中的 Anthos Service Mesh 信息中心上显示指标是必需的。如果您的集群已有标签,GKE Enterprise CLI 会保留这些标签。在发布版本概览中注册集群。
运行以下命令以创建一个新集群,并使用您之前自定义的 Anthos Service Mesh 配置文件安装 Anthos Service Mesh:
gcloud beta anthos apply asm
检查控制层面组件
检查 istio-system
中的控制层面 Pod 是否已启动:
kubectl get pod -n istio-system
预期输出如下所示:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
注册您的集群
您必须向项目的队列注册集群,才能获取对 Google Cloud 控制台中的统一界面的访问权限。队列提供一种统一方法来查看和管理集群及其工作负载,包括 Google Cloud 之外的集群。
创建 Google Cloud 服务账号和密钥文件
必须提供包含服务账号凭据的 JSON 文件才能注册集群。为遵循最小权限原则,我们建议您为注册的每个集群创建不同的服务账号。
如需创建服务账号和密钥文件,请执行以下操作:
为服务账号选择一个名称并为其创建环境变量:
export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
创建服务账号:
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
列出项目的所有服务账号以确认服务账号已创建:
gcloud iam service-accounts list
将 gkehub.connect IAM 角色绑定到服务账号:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
为您要保存 JSON 文件的本地文件路径创建环境变量。我们建议您使用服务账号名称和项目 ID 命名文件,例如:
/tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json
export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
下载服务账号的私钥 JSON 文件:
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \ --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
注册集群
在以下命令中,将 MEMBERSHIP_NAME
替换为一个唯一表示要在 Hub 中注册的集群的名称。
gcloud container hub memberships register MEMBERSHIP_NAME \ --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \ --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}
该命令会返回如下输出:
kubeconfig entry generated for CLUSTER_NAME. Waiting for membership to be created...done. Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME] Generating the Connect Agent manifest... Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]... Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]. Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.
此服务账号密钥作为 Secret(名为 creds-gcp
)存储在 gke-connect
命名空间中。
如需详细了解集群注册,请参阅 Connect 文档中的注册集群。
注入 Sidecar 代理
Anthos Service Mesh 使用边车代理来增强网络安全性、可靠性和可观测性。借助 Anthos Service Mesh,这些功能可以从应用的主容器中抽象出来,并在作为同一 Pod 中单独容器提供的常见进程外代理中实施。
在部署工作负载之前,请务必配置边车代理注入,以便 Anthos Service Mesh 可以监控和保护流量。您可以使用一个命令启用自动 Sidecar 注入,例如:
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
其中,NAMESPACE
是应用服务的命名空间的名称;如果未显式创建命名空间,则为 default
。
如需了解详情,请参阅注入 Sidecar 代理。
查看 Anthos Service Mesh 页面
在集群上部署工作负载并注入边车代理后,您可以在 Google Cloud 控制台中探索 Anthos Service Mesh 页面,以了解 Anthos Service Mesh 提供的所有可观测性功能。请注意,部署工作负载后,遥测数据大约需要一两分钟才会显示在 Google Cloud 控制台中。
在 Google Cloud 控制台中访问 Anthos Service Mesh 的权限由 Identity and Access Management (IAM) 控制。如需访问 Anthos Service Mesh 页面,Project Owner 必须为用户授予 Project Editor 或 Viewer 角色,或者授予在 Google Cloud 控制台中控制对 Anthos Service Mesh 的访问权限中所述的限制性更强的角色。
在 Google Cloud 控制台中,前往 Anthos Service Mesh。
从菜单栏的下拉列表中选择 Google Cloud 项目。
如果您有多个服务网格,请从服务网格下拉列表中选择相应网格。
如需了解详情,请参阅在 Google Cloud 控制台中探索 Anthos Service Mesh。
除了 Anthos Service Mesh 页面,系统还会将与服务相关的指标(例如特定服务收到的请求数)发送到 Cloud Monitoring,这些指标显示在 Cloud Monitoring 的 Metrics Explorer 中。
如需查看指标,请执行以下操作:
在 Google Cloud 控制台中,转到监控页面:
选择资源 > Metrics Explorer。
如需查看指标的完整列表,请参阅 Cloud Monitoring 文档中的 Istio 指标。
使用 kpt
安装示例
(可选)您可以使用 kpt
将 Hipster 示例安装到集群中。
下载示例:
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ hipster-demo
启用自动 Sidecar 注入:
kubectl label namespace default istio-injection=enabled
将示例部署到集群:
kubectl apply -f hipster-demo
找到应用的外部 IP 地址:
kubectl get service frontend-external
使用浏览器访问应用,以确认安装:
http://EXTERNAL_IP/
现在您已在运行一个示例,接下来您可以在 Google Cloud 控制台中探索 Anthos Service Mesh 可观测性功能。请注意,拓扑图最长可能需要 10 分钟才会显示网格中的服务。
探索完毕后,移除 Hipster 示例:
kubectl delete -f hipster-demo
后续步骤
详细了解 Anthos CLI 使用的配置资源: