设置 Anthos on Google Cloud

本页面介绍如何在 Google Cloud 上设置 Anthos。

前期准备

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

    转到“项目选择器”

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

  4. 启用 Anthos API。

    启用 API

  5. 安装并初始化 Cloud SDK
  6. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

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

  8. 启用 Anthos API。

    启用 API

  9. 安装并初始化 Cloud SDK

您可能需要为 Google Cloud 项目启用其他 API 才能启用某些 Anthos 功能。有关详情,请参阅相关的安装指南。

集群要求

Anthos on Google Cloud 支持发布版本和静态版本。但是,我们建议您尽可能使用发布版本,因为它们可以为 GKE 集群提供自动更新等额外好处。

如果您想要使用 Anthos Service Mesh,请注意此功能在安装时需要具有特定的集群要求。如需了解详情,请参阅 Anthos Service Mesh 集群要求

向队列注册集群

必须向项目队列注册要用于 Anthos 的所有集群。队列(以前称为Environ )提供了一种在 Google Cloud 中查看和管理多个集群及其工作负载的统一方式。如需详细了解队列及其功能,请参阅队列指南

在 Anthos 项目中注册集群后,您可以通过 Cloud Console 中的“Anthos 集群”页面浏览和管理所有已注册的集群。您有权在这些集群上启用和使用 Anthos 功能,并且可以通过“Anthos 功能”页面在队列中启用某些 Anthos 功能。Anthos 费用仅适用于您注册的集群。

注册集群之前,请查看 Connect 前提条件,以确保您拥有相关权限和已启用的 API 来注册集群。如需详细了解不同的注册选项,请参阅注册集群

控制台

注册 GKE 集群的最简单快捷方法是从 Cloud Console 的 Anthos 集群页面注册。

如需注册集群,请执行以下操作:

  1. (可选)如果您希望已注册的集群使用队列 Workload Identity,请确保在该集群上启用 GKE Workload Identity。从 Cloud Console 注册具有 GKE Workload Identity 的集群时,系统会自动启用队列 Workload Identity。
  2. 在 Cloud Console 中,转到 Anthos 集群页面。此页面会显示您注册的所有集群。

    转到“Anthos 集群”页面

  3. 点击注册现有集群

  4. 点击要添加到队列的未注册集群旁边的注册

Terraform

您可以使用 google-beta 提供商向 Terraform 注册 GKE 集群。您可以在 Terraform 注册表中找到用于配置注册的 gke_hub_membership 资源的完整参考文档。

注册 GKE 集群

如需注册集群,请在配置中使用以下块。

  1. google-beta 提供商指定为所需的提供商,如以下代码段所示。版本应当高于 3.62.0。

    terraform {
      required_providers {
        google-beta = {
          source = "hashicorp/google-beta"
          version = "3.67.0"
        }
      }
    }
    

    如果要使用 gke_hub_membership,则需要此提供商。

  2. 为该提供商设置以下默认值:

    provider "google-beta" {
      credentials = file("SERVICE_ACCOUNT_KEY_PATH")
      project = "PROJECT_ID"
    }
    

    请替换以下内容:

    • SERVICE_ACCOUNT_KEY_PATH:作为前提条件的一部分予以下载的服务帐号私钥 JSON 文件的本地文件路径。此服务帐号密钥作为 Secret(名为 creds-gcp)存储在 gke-connect 命名空间中。此服务帐号密钥使 Terraform 能够访问您的 Google Cloud 帐号。
    • PROJECT_ID:您选择用来预配 Terraform 资源的默认项目。
  3. 创建 GKE 集群(可选)

    如果要注册现有 GKE 集群,请跳过此步骤。

    resource "google_container_cluster" "TF_CLUSTER_RESOURCE_NAME" {
      provider = google-beta
      name               = "CLUSTER_NAME"
      location           = "ZONE"
      initial_node_count = 1
    }
    

    请替换以下内容:

    • TF_CLUSTER_RESOURCE_NAME:您选择用来唯一标识此块创建的 Terraform google_container_cluster 资源的名称。
    • CLUSTER_NAME:您选择用来唯一标识您创建的集群的名称。
    • ZONE:您选择用来预配 GKE 集群资源的默认可用区。例如:us-central1-a
  4. 为 GKE 集群注册成员资格。

    resource "google_gke_hub_membership" "TF_MEMBERSHIP_RESOURCE_NAME" {
      provider = google-beta
      project_id = "HUB_PROJECT_ID"
      membership_id = "MEMBERSHIP_NAME"
      endpoint {
        gke_cluster {
         resource_link = "//container.googleapis.com/CLUSTER_RESOURCE_NAME"
        }
      }
    }
    

    请替换以下内容:

    • TF_MEMBERSHIP_RESOURCE_NAME:您选择用来唯一标识此块创建的 Terraform google_gke_hub_membership 资源的名称。
    • MEMBERSHIP_NAME:您选择用来唯一表示要注册到队列的集群的成员资格名称。
    • CLUSTER_RESOURCE_NAME:GKE 集群的 Google Cloud 资源名称。例如:projects/my-project/zones/us-west1-a/clusters/my-cluster。如果集群是通过 Terraform 预配的,则此字段为 ${google_container_cluster.TF_CLUSTER_RESOURCE_NAME.id}
    • HUB_PROJECT_ID:如果未设置此字段,系统将在您之前指定的默认项目 (PROJECT_ID) 中创建集群的成员资格。如果要将 GKE 集群注册到其他项目,请设置此字段。

在已注册的 GKE 集群上启用 Workload Identity

启用 Workload Identity 使用与注册集群相同的配置,但还需要执行以下额外步骤。

  1. 通过在相关的 google_container_cluster 资源块中添加以下内容来启用 GKE Workload Identity。新集群和现有集群均需执行此操作。

    workload_identity_config {
      identity_namespace = "PROJECT_ID.svc.id.goog"
    }
    

    请替换以下内容:

    • PROJECT_ID:您选择用来预配 Terraform 资源的默认项目。
  2. 通过在相关的 google_gke_hub_membership 资源块中添加以下内容来启用 Fleet Workload Identity。

    authority {
      issuer = "https://container.googleapis.com/v1/CLUSTER_RESOURCE_NAME"
    }
    

    请替换以下内容:

    • CLUSTER_RESOURCE_NAME:GKE 集群的 Google Cloud 资源。例如:projects/my-project/zones/us-west1-a/clusters/my-cluster。如果集群是通过 Terraform 预配的,则此字段为 ${google_container_cluster.TF_CLUSTER_RESOURCE_NAME.id}

配置连接器

如果您安装了 Config Connector 插件,则可以使用 Config Connector 注册 GKE 集群。确保您拥有高于 1.47.0 的 Config Connector 版本。您可以在 Config Connector 参考文档中找到 GKEHubMembership 资源的完整参考文档。

注册 GKE 集群

如需注册集群,请先按照 Config Connector 指南中的说明指定要创建资源的位置。然后创建一个 YAML 文件以注册并(可选)创建集群,如下所示:

创建和注册 GKE 集群

  1. 创建 GKE 集群。

    apiVersion: container.cnrm.cloud.google.com/v1beta1
    kind: ContainerCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      location: ZONE
      initialNodeCount: 1
    

    请替换以下内容:

    • CLUSTER_NAME:您选择用来唯一表示您使用 Config Connector 创建的集群的名称。
    • ZONE:您选择预配 GKE 集群资源的地区。例如:us-central1-a
  2. 为 GKE 集群注册成员资格。

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubMembership
    metadata:
      name: MEMBERSHIP_NAME
    spec:
      location: global
      endpoint:
        gkeCluster:
          resourceRef:
            name: CLUSTER_NAME
    

    请替换以下内容:

    • MEMBERSHIP_NAME:您选择用来唯一表示要注册到队列的集群的成员资格名称。
    • CLUSTER_NAME:您选择用来唯一表示您使用 Config Connector 创建的集群的名称。

在其他项目中注册集群

将以下内容添加到 GKEHubMembership 资源的 metadata 字段中。

   metadata:
     annotations:
       cnrm.cloud.google.com/project-id: HUB_PROJECT_ID

请替换以下内容:

  • HUB_PROJECT_ID:您选择用于注册 GKE 集群的其他项目。

注册现有集群

如果要注册现有集群(无论其创建方式如何),请使用以下配置。在这种情况下,您需要指定集群的完整资源名称,以便 Config Connector 能够找到它。将 GKEHubMembership 资源的 resourceRef 字段替换为以下内容:

   resourceRef:
     external: //container.googleapis.com/CLUSTER_RESOURCE_NAME

请替换以下内容:

  • CLUSTER_RESOURCE_NAME:GKE 集群的 Google Cloud 资源名称。例如:projects/my-project/zones/us-west1-a/clusters/my-cluster

在已注册的 GKE 集群上启用 Workload Identity

启用 Workload Identity 使用与注册集群相同的配置,但还需要执行以下额外步骤。

  1. 通过在 ContainerCluster 资源的 spec 字段中添加以下内容来启用 GKE Workload Identity。新集群和现有集群均需执行此操作。

    spec:
      workloadIdentityConfig:
        identityNamespace: PROJECT_ID.svc.id.goog
    

    请替换以下内容:

  2. 通过在 GKEHubMembership 资源块的 spec 字段中添加以下内容来启用队列工作负载身份。

    spec:
      authority:
        issuer: https://container.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
    }
    

    请替换以下内容:

    • PROJECT_ID:您通过命名空间注释选择用于创建 GKE 集群资源的默认项目。
    • ZONE:您选择预配 GKE 集群资源的地区。例如:us-central1-a
    • CLUSTER_NAME:您选择用来唯一表示您创建的集群的名称。

gcloud

使用 gcloud 命令行工具注册集群需要 Cloud SDK 版本 281.0.0 或更高版本

从命令行注册集群会在集群上安装 Connect Agent,可以使用 Workload Identity 或 Google Cloud 服务帐号进行身份验证。

使用 Workload Identity 注册 GKE 集群(推荐)

  1. 按照前提条件中的说明,确保集群已启用 GKE Workload Identity。

  2. 运行以下命令之一来注册集群:

    gcloud container hub memberships register MEMBERSHIP_NAME \
     --gke-uri=GKE_URI \
     --enable-workload-identity
    

    gcloud container hub memberships register MEMBERSHIP_NAME \
     --gke-cluster=GKE_CLUSTER \
     --enable-workload-identity
    

    请替换以下内容:

    • MEMBERSHIP_NAME:您选择用来唯一表示要注册到队列的集群的成员资格名称。
    • GKE_URI:GKE 集群的 URI,例如 https://container.googleapis.com/v1/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster。您可以通过运行 gcloud container clusters list --uri 来获取该 URI。
    • GKE_CLUSTER:当前项目中的 GKE 集群的 location/name。该位置可以是可用区或区域,例如 us-central1-a/my-gke-cluster

使用服务帐号注册 GKE 集群

  1. 确保您已按照前提条件中所述创建了供 Connect Agent 使用的服务帐号。

  2. 运行以下任一命令:

    gcloud container hub memberships register MEMBERSHIP_NAME \
     --gke-uri=GKE_URI \
     --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH
    

    gcloud container hub memberships register MEMBERSHIP_NAME \
     --gke-cluster=GKE_CLUSTER \
     --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH
    

    请替换以下内容:

    • MEMBERSHIP_NAME:您选择用来唯一表示要注册到队列的集群的成员资格名称。
    • SERVICE_ACCOUNT_KEY_PATH:作为“前提条件”的一部分予以下载的服务帐号私钥 JSON 文件的本地文件路径。此服务帐号密钥作为 Secret(名为 creds-gcp)存储在 gke-connect 命名空间中。
    • GKE_URI:GKE 集群的 URI,例如 https://container.googleapis.com/v1/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster。您可以通过运行 gcloud container clusters list --uri 来获取该 URI。
    • GKE_CLUSTER:当前项目中的 GKE 集群的 location/name。该位置可以是可用区或区域,例如 us-central1-a/my-gke-cluster

使用 gcloud 命令行工具可提供一些 Cloud Console 中不提供的更高级的集群注册选项,包括自行下载和应用 Connect Agent 清单。如需详细了解这些选项,请参阅 Connect 文档中的高级注册选项

启用 Anthos 功能

设置项目和 GKE 集群后,请使用以下指南为您的应用启用其他 Anthos 功能。如需了解所有 Anthos 组件(包括教程、参考资料等)的完整文档集,请参阅 Anthos 组件

您可以使用 Anthos 功能页面为舰队中的集群启用某些功能(Anthos Config Management、多集群 Ingress),但是它们可能需要进一步配置:例如,指定配置源代码库并使用 Config Sync for Anthos Config Management 向所选的配置源代码库进行身份验证。其他功能必须按照安装指南在集群上设置。

后续步骤

  • 如果您还需要在混合部署过程中设置本地 Anthos 集群,请参阅本地设置指南
  • 如果您作为多云端部署的一部分,您还需要在其他公有云(例如 AWS)上设置 Anthos 集群,请参阅公有云设置指南
  • 如果要将 Anthos 集群添加到您的 Anthos 部署,请参阅设置关联的集群