在本教程中,您将使用 Google 提供的脚本 install_asm
在新的 Google Kubernetes Engine (GKE) 集群上安装 Anthos Service Mesh 1.9.8-asm.6。本教程将引导您完成以下操作:
- 配置 Google Cloud 项目
- 创建具有 Anthos Service Mesh 所需的最低 vCPU 数量的 GKE 集群
- 使用集群内控制层面安装 Anthos Service Mesh
- 部署示例应用,以便您可以在 Google Cloud 控制台的 Anthos Service Mesh 信息中心查看遥测数据。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
您可使用价格计算器根据您的预计使用情况来估算费用。
完成此快速入门后,您可以通过删除集群来避免继续计费。如需了解详情,请参阅清理。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine API.
- 记下您的项目 ID。
虽然 Anthos Service Mesh 需要其他 API,但 install_asm
脚本会为您启用这些 API。为了降低结算费用,install_asm
脚本未启用 GKE Enterprise API。启用 GKE Enterprise API 后,Google Cloud 控制台存在一些细微差别。如需详细了解这些差异,请参阅 GKE Enterprise 和 Anthos Service Mesh 界面差异。
安装所需的工具
您可以在 Cloud Shell 或运行 Linux 的本地计算机上运行该脚本。Cloud Shell 会预安装所有必需的工具。请注意,由于 macOS 附带了旧版 bash,因此不支持 macOS。
Cloud Shell
Cloud Shell 预配一个运行基于 Debian 的 Linux 操作系统的 g1-small Compute Engine 虚拟机 (VM)。使用 Cloud Shell 的优势如下:
Cloud Shell 包含您需要的
gcloud
、kubectl
、kpt
和其他命令行工具。您的 Cloud Shell $HOME 目录具有 5GB 永久性存储空间。
您可以选择文本编辑器:
代码编辑器,可通过点击 Cloud Shell 窗口顶部的 edit 来访问。
Emac、Vim 或 Nano,可从 Cloud Shell 中的命令行访问。
如需使用 Cloud Shell,请执行以下操作:
- 前往 Google Cloud 控制台。
- 选择您的 Google Cloud 项目。
点击 Google Cloud 控制台窗口顶部的激活 Cloud Shell 按钮。
一个 Cloud Shell 会话随即会在 Google Cloud 控制台底部的新框内打开,并显示命令行提示符。
本地 Linux 计算机
请确保已安装以下工具:
- Google Cloud CLI
- 标准命令行工具:
awk
、curl
、grep
、sed
、sha256sum
、tr
- git
- kpt
- kubectl
- jq
使用 Google Cloud CLI 进行身份验证:
gcloud auth login
更新组件:
gcloud components update
请确保
git
位于您的路径中,以便kpt
能够找到它。
创建 GKE 集群
运行以下命令,创建具有 Anthos Service Mesh 所需的最少 vCPU 数的集群。在此命令中,将占位符替换为以下信息:
- CLUSTER_NAME:您的集群的名称。名称只能包含小写字母、数字和
-
,并且必必须以字母开头,以字母数字结尾,并且不能超过 40 个字符。 - PROJECT_ID:将在其中创建集群的项目 ID。
- CLUSTER_LOCATION 是集群的地区,例如
us-central1-a
。
gcloud container clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION \ --machine-type=e2-standard-4 \ --num-nodes=2 \ --workload-pool=PROJECT_ID.svc.id.goog
- CLUSTER_NAME:您的集群的名称。名称只能包含小写字母、数字和
获取身份验证凭据以便与集群进行交互。此命令还会将
kubectl
的当前上下文设置为该集群。gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION
下载 ASM 安装脚本
将安装 Anthos Service Mesh 1.9.8 的脚本下载到当前工作目录中:
curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9 > install_asm
将文件的 SHA-256 下载到当前工作目录:
curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9.sha256 > install_asm.sha256
在这两个文件位于同一目录的情况下,验证下载:
sha256sum -c --ignore-missing install_asm.sha256
如果验证成功,则该命令会输出
install_asm: OK
为了确保兼容性,
install_asm.sha256
文件包含两次校验和,以允许将脚本的任何版本重命名为install_asm
。如果出现--ignore-missing
不存在的错误,请重新运行上一个命令,但不使用--ignore-missing
标志。让该脚本可执行:
chmod +x install_asm
安装 Anthos Service Mesh
使用以下选项运行 install_asm
脚本,以在之前创建的集群上安装 Anthos Service Mesh。如果您在创建集群以来未关闭过此页面,则占位符具有您为 gcloud container clusters create
命令输入的值。
./install_asm \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--mode install \
--output_dir ./asm-downloads \
--enable_all
install_asm
脚本完成运行可能需要几分钟时间。该脚本会输出信息性消息,便于您跟踪其进度。
该命令会使用以下选项运行 install_asm
:
--mode install
:运行新安装的脚本,并启用 Anthos Service Mesh 证书授权机构 (Mesh CA),这是安装的默认证书授权机构 (CA)。--output_dir ./asm-downloads
:脚本从anthos-service-mesh
代码库下载文件的目录,并且脚本也从该目录下载和解压缩 Anthos Service Mesh 安装文件(其中包含istioctl
、示例和清单)。--enable-registration
:允许脚本注册集群到集群所属的项目。--enable_all
:允许脚本启用所需的 Google API、设置 Identity and Access Management 权限,以及对集群进行所需更新,其中包括启用 GKE Workload Identity。
部署 Online Boutique 示例
使用
kpt
下载示例:kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ online-boutique
为应用创建命名空间:
kubectl create namespace demo
启用自动 Sidecar 注入(自动注入)。使用以下命令查找
istiod
服务中的标签,其中包含要在后续步骤中使用的修订版本标签值。kubectl -n istio-system get pods -l app=istiod --show-labels
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-198-6-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586 istiod-asm-198-6-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
在输出中的
LABELS
列下,记下istiod
修订版本标签的值,该值位于前缀istio.io/rev=
之后。在此示例中,该值为asm-198-6
。将修订版本标签应用于命名空间。在以下命令中,REVISION 是您在上一步中记下的
istiod
修订版本标签的值。kubectl label namespace demo istio-injection- istio.io/rev=REVISION --overwrite
您可以忽略输出中的
"istio-injection not found"
消息。这意味着命名空间之前没有istio-injection
标签,对于 Anthos Service Mesh 的新安装或新部署,这是预期现象。如果命名空间同时具有istio-injection
和修订版本标签,自动注入将失败,因此 Anthos Service Mesh 文档中的所有kubectl label
命令都包含移除istio-injection
标签。将示例部署到集群:
kubectl apply -n demo -f online-boutique
获取入站流量网关的外部 IP 地址:
kubectl get service istio-ingressgateway -n istio-system
输出类似于以下内容:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
在此示例中,入站流量网关的 IP 地址为
35.239.7.64
。使用浏览器访问应用,以确认安装:
http://EXTERNAL_IP/
查看 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。
清理
在清理之前,如果您有兴趣详细了解双向 TLS,请参阅 Anthos Service Mesh(例如:mTLS)。
如果您想防止产生额外费用,请删除集群:
gcloud container clusters delete CLUSTER_NAME \ --project=PROJECT_ID \ --zone=CLUSTER_LOCATION
如果您希望保留集群并移除 Online Boutique 示例,请执行以下操作:
kubectl delete namespaces demo
后续步骤
详细了解以下内容:
- 集群要求
install_asm
脚本的选项和标志。- 部署 Service
- 在本教程中使用的
gcloud
命令