快速入门:设置 Anthos on Google Cloud

设置 Anthos on Google Cloud

本页面介绍如何使用 GKE 集群设置 Anthos on Google Cloud。

前期准备

决定您要如何支付 Anthos on Google Cloud 的费用:

  • 您可以选择允许 Anthos API 访问所有 Anthos 平台功能,但按 vCPU 数量单独收费。通过此选项,您还可以将 Google Cloud 之外的集群添加到您的舰队,以创建混合部署或多云部署。

  • 您可以选择不启用整个 Anthos 平台。通过此选项,您可以创建 GKE 集群舰队,并且除了 GKE 费用之外,您只需支付其使用的 Anthos 功能的费用。

您可以在部署选项中查看每个选项支持的 Anthos 功能的完整列表,并通过我们的价格指南详细了解 Anthos 价格。

如果您决定启用整个 Anthos 平台,请在开始注册集群之前执行以下操作:

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

    转到“项目选择器”

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

  4. 启用 Anthos API。

    启用 API

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

    转到“项目选择器”

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

  8. 启用 Anthos API。

    启用 API

  9. 安装初始化 Google Cloud CLI。

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

集群要求

按照 GKE 文档中的说明创建集群以用于 Anthos。

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

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

向舰队注册集群

您必须向项目舰队注册要用于 Anthos 的所有集群。舰队提供了一种对 Kubernetes 集群进行逻辑分组和标准化的方法,从而简化基础架构的管理。您可以在 Cloud 控制台中浏览和管理舰队集群,许多 Anthos 和 Google Cloud 组件都使用身份相同性和命名空间相同性等舰队概念来简化多个集群的管理。如需详细了解舰队及其支持的功能,请参阅我们的舰队管理指南

注册集群之前,请阅读前提条件,以确保您拥有相关权限和已启用的 API 来注册集群。您可以在注册集群中详细了解 GKE 集群的不同注册选项。

控制台

注册 GKE 集群的最简单快捷方法是从 Cloud 控制台中的“Anthos 集群”页面注册。此选项仅在您启用 Anthos API 后才可用。

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

  1. (可选)如果您希望已注册的集群使用舰队 Workload Identity(推荐),请确保在该集群上启用 GKE Workload Identity。从 Cloud 控制台注册使用 GKE Workload Identity 的集群时,系统会自动为集群启用舰队 Workload Identity。
  2. 在 Cloud 控制台中,前往 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 集群(可选)

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

    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 = "FLEET_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 资源的名称。
    • FLEET_PROJECT_ID:如果未设置此字段,系统将在您之前指定的默认项目 (PROJECT_ID) 中创建集群的成员资格。如果要将 GKE 集群注册到其他项目中的舰队,请设置此字段。
    • 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}

在已注册的 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 插件,则可以使用 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: LOCATION
      initialNodeCount: 1
    

    替换以下内容:

    • CLUSTER_NAME:您选择用来唯一表示您使用 Config Connector 创建的集群的名称。
    • LOCATION:您选择预配 GKE 集群资源的可用区或区域。例如:us-central1-a

    如需了解使用 Config Connector 创建 GKE 集群时的完整选项列表,请参阅 Config Connector 文档

  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: FLEET_PROJECT_ID

替换以下内容:

  • FLEET_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

如果集群是使用 Config Connector 创建的,则无需指定完全限定的集群名称。

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

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

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

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

    替换以下内容:

  2. 通过在 GKEHubMembership 资源块的 spec 字段中添加以下内容来启用舰队 Workload Identity。

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

    替换以下内容:

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

gcloud

使用 Google Cloud CLI 注册集群需要 Google Cloud CLI 281.0.0 或更高版本

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

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

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

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

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

    gcloud container fleet 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 fleet memberships register MEMBERSHIP_NAME \
     --gke-uri=GKE_URI \
     --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH
    

    gcloud container fleet 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

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

启用 Anthos 功能

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

如果您启用了 Anthos API,则可以使用“Anthos 功能”页面在舰队级层启用某些功能,但功能需要进一步配置才能实际使用:例如,指定配置源代码库并使用 Config Sync for Anthos Config Management 向所选的配置源代码库进行身份验证。其他功能必须按照安装指南在集群上设置。如需了解详情,请参阅管理舰队级功能

后续步骤

  • 如果您还需要在混合部署过程中设置本地 Anthos 集群,请参阅本地设置指南
  • 如果您作为多云端部署的一部分,您还需要在其他公有云(例如 AWS)上设置 Anthos 集群,请参阅公有云设置指南
  • 快速入门:将第三方 Kubernetes 集群关联到 Google Cloud,请参阅设置关联的集群