安装依赖工具并验证集群

本页介绍了如何准备环境和集群以安装 Cloud Service Mesh。

安装所需的工具

您可以在 Cloud Shell 或运行 Linux 的本地机器上运行 asmcli。Cloud Shell 会预安装所有必需的工具。

如果您在本地运行 asmcli,请确保已安装以下工具:

配置 gcloud

即使您使用的是 Cloud Shell,仍请执行以下步骤。

  1. 使用 Google Cloud CLI 进行身份验证:

    gcloud auth login --project PROJECT_ID
    
  2. 更新组件:

    gcloud components update
    
  3. 如果您要在 GKE 集群上安装 Cloud Service Mesh,请将 kubectl 配置为指向该集群。

    gcloud container clusters get-credentials CLUSTER_NAME \
         --location CLUSTER_LOCATION \
         --project PROJECT_ID
    

下载 asmcli

本部分介绍如何下载 asmcli

  1. 将安装 Cloud Service Mesh 1.19.10 的版本下载到当前工作目录:

    curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.19 > asmcli
    

    预期输出:

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
    100  167k  100  167k    0     0   701k      0 --:--:-- --:--:-- --:--:--  701k
    
  2. 让该脚本可执行:

    chmod +x asmcli
    

授予集群管理员权限

  1. 确保您已将上下文设置为您的用户集群:

    kubectl config use-context CONTEXT
  2. 向您的用户账号(您的 Google Cloud 登录电子邮件地址)授予集群管理员权限。您需要这些权限,以便为 Cloud Service Mesh 创建必要的基于角色的访问权限控制 (RBAC) 规则:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=USER_ACCOUNT

验证项目和集群

您可以运行 asmcli validate,确保根据需要设置了项目和集群以安装 Cloud Service Mesh。使用此选项时,asmcli 不会对您的项目或集群进行任何更改,也不会安装 Cloud Service Mesh。

asmcli 会验证以下内容:

默认情况下,asmcli 会下载并解压缩安装文件,并将 GitHub 中的 asm 配置软件包下载到临时目录中。在退出之前,asmcli 会输出一条消息,提供临时目录的名称。我们建议您使用 --output_dir DIR_PATH 选项指定下载目录。--output_dir 选项可方便您使用 istioctl 命令行工具。(您可能需要 istioctl排查配置问题在专用 GKE 集群上设置多集群网格)。此外,用于使用 asmcli 启用可选功能的配置文件包含在 asm/istio/options 目录中。

运行以下命令以验证配置并将安装文件和 asm 软件包下载到 OUTPUT_DIR 目录。

GKE

./asmcli validate \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH
  • --project_id--cluster_name--cluster_location 指定集群所在的项目 ID、集群名称以及集群区域或地区。

  • --fleet_id舰队宿主项目的项目 ID。asmcli validate 检查集群是否已注册到指定的舰队。

  • --output_dir添加此选项可指定 asmcli 在其中下载 asm 软件包并提取安装文件的目录,其中包含 istioctl、示例和清单。否则,asmcli 会将文件下载到 tmp 目录。您可以指定相对路径或完整路径。环境变量 $PWD 不适用于此处。

Google Cloud 外部

使用以下命令在以下平台上运行 asmcli validate:Google Distributed Cloud、Google Distributed Cloud、GKE on AWS、Amazon EKS 和 Microsoft AKS。

  1. 将当前上下文设置为用户集群:

    kubectl config use-context CLUSTER_NAME
    
  2. 运行以下命令以验证配置并将安装文件和 asm 软件包下载到 OUTPUT_DIR 目录:

    ./asmcli validate \
      --kubeconfig KUBECONFIG_FILE \
      --fleet_id FLEET_PROJECT_ID \
      --output_dir DIR_PATH \
      --platform multicloud
    
    • --kubeconfigkubeconfig 的路径。您可以指定相对路径或完整路径。环境变量 $PWD 不适用于此处。

    • --fleet_id舰队宿主项目的项目 ID。asmcli validate 检查集群是否已注册到指定的舰队。

    • --output_dir添加此选项可指定 asmcli 在其中下载 asm 软件包并提取安装文件的目录,其中包含 istioctl、示例和清单。否则,asmcli 会将文件下载到 tmp 目录。您可以指定相对路径或完整路径。环境变量 $PWD 不适用于此处。

    • --platform multicloud 指定平台是非 Google Cloud 平台,例如本地平台或多云平台。

成功后,asmcli 输出以下内容:

asmcli: Setting up necessary files...
asmcli: Using asm_kubeconfig as the kubeconfig...
asmcli: Checking installation tool dependencies...
asmcli: Fetching/writing GCP credentials to kubeconfig file...
asmcli: Verifying connectivity (10s)...
asmcli: kubeconfig set to asm_kubeconfig
asmcli: using context gke_example-project-12345_us-central1_cluster-2
asmcli: Getting account information...
asmcli: Downloading ASM..
asmcli: Downloading ASM kpt package...
fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm"
asmcli: Checking required APIs...
asmcli: Checking for project example-project-12345...
asmcli: Reading labels for us-central1/cluster-2...
asmcli: Checking for istio-system namespace...
asmcli: Confirming node pool requirements for example-project-12345/us-central1/cluster-2...
asmcli: Checking Istio installations...
asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized.
asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized
asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components
asmcli: [WARNING]: flag. Otherwise, installation will succeed but Anthos Service Mesh
asmcli: [WARNING]: will not function correctly.
asmcli: Successfully validated all requirements to install ASM.

如果某一个测试未通过验证,asmcli 将输出错误消息。例如,如果您的项目未启用所有必需的 Google API,您会看到以下错误:

ERROR: One or more APIs are not enabled. Please enable them and retry, or run
`asmcli` with the '--enable_gcp_apis' flag to allow `asmcli` to enable them
on your behalf.

如果您收到错误消息,指出需要使用启用标志运行 asmcli,您可以采取以下措施:

  • 在运行 asmcli 来执行实际安装时,添加错误消息中的特定标志或添加 --enable_all 标志。

  • 如果您愿意,可以在运行 asmcli 之前自行更新项目和集群,如自行设置项目和 GKE 集群所述。

请注意,asmcli validate 不允许任何启用标志,因为它仅验证项目和集群已准备好进行安装。

检查集群安装和升级要求

在升级之前,您应检查配置是否与新版本的 Cloud Service Mesh 兼容。

  1. 切换到您在 --output_dir 中指定的目录。

  2. 运行以下命令以检查 Kubernetes 集群是否满足安装和升级要求。请务必使用与新 Cloud Service Mesh 版本一起分发的 istioctl 版本。

    istioctl experimental precheck
    

后续步骤