设置 Google Cloud 资源

除了满足安装、硬件和操作系统前提条件外,您还必须配置并设置 Google Cloud 项目、API 和服务帐号,以运行 Anthos clusters on Bare Metal。

请注意,bmctl 命令可在创建集群时自动启用服务帐号和 API,但您也可以手动设置这些服务以更好地控制操作。

准备工作

创建 Google Cloud 项目结算帐号

在安装过程中,您必须提供以下凭据:

  • 访问集群节点机器所需的 SSH 私钥。
  • 集群节点机器的登录名(如果不使用 root)。

请确保您已拥有所有必要凭据,然后再尝试安装 Anthos clusters on Bare Metal。

登录 gcloud

  1. 使用 gcloud auth application-default login 以用户身份登录 gcloud:
  2. gcloud auth application-default login
    
    您需要具有 Project Owner/Editor 角色才能使用自动 API 启用和服务帐号创建功能,具体如下所述。您还可以向用户添加以下 IAM 角色:
    • Service Account Admin
    • Service Account Key Admin
    • Project IAM Admin
    • Compute Viewer
    • Service Usage Admin
    或者,如果您已有具备这些角色的服务帐号,请运行以下命令:
    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    
    JSON_KEY_FILE 指定服务帐号 JSON 密钥文件的路径。
  3. 获取要用于创建集群的 Google Cloud 项目 ID:
  4. export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

设置默认的 Google Cloud 项目 ID 和角色

除了配置服务帐号之外,您还可以设置默认 project id

您必须具有项目的 ownereditor 角色,才能使用 Anthos clusters on Bare Metal。

要设置默认项目,请发出以下命令,并将 PROJECT_ID 替换为您的 Google Cloud 项目 ID:

gcloud config set project PROJECT_ID

启用 API

在安装 Anthos clusters on Bare Metal 之前,您需要在关联的 Google Cloud 项目中启用多个 API。如需在项目中启用 API,您必须获得 Google Cloud 项目中的以下角色之一:roles/ownerroles/editorroles/serviceusage.serviceUsageAdmin

如需了解详情,请参阅授予单个角色

拥有所需的 IAM 权限后,启用以下 API:

  • anthos.googleapis.com
  • anthosaudit.googleapis.com
  • anthosgke.googleapis.com
  • cloudresourcemanager.googleapis.com
  • connectgateway.googleapis.com
  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • iam.googleapis.com
  • logging.googleapis.com
  • monitoring.googleapis.com
  • opsconfigmonitoring.googleapis.com
  • serviceusage.googleapis.com
  • stackdriver.googleapis.com

您还可以使用 bmctl 工具来启用这些服务。

手动配置服务帐号

创建集群时,Anthos clusters on Bare Metal 的 bmctl 命令可自动设置 Google 服务帐号和 API。

但是,如需获取更多系统控制权或使用默认服务、帐号和项目简化集群创建,您可以手动设置这些服务。

在生产环境中,您应该针对不同的目的创建单独的服务帐号。Anthos Clusters on Bare Metal 需要以下不同类型的 Google Cloud 服务帐号,具体取决于其目的:

  • 访问 Container Registry (gcr.io) 不需要特殊角色。
  • 如需在舰队中注册集群,请将 roles/gkehub.admin IAM 角色授予 Google Cloud 项目中的服务帐号。
  • 如需连接到舰队,请将 roles/gkehub.connect IAM 角色授予 Google Cloud 项目中的服务帐号。
  • 如需向 Google Cloud 的运维套件发送日志和指标,请将以下 IAM 角色授予 Google Cloud 项目中的服务帐号:

    • roles/logging.logWriter
    • roles/monitoring.metricWriter
    • roles/stackdriver.resourceMetadata.writer
    • roles/monitoring.dashboardEditor
    • roles/opsconfigmonitoring.resourceMetadata.writer

Anthos clusters on Bare Metal 会将集群连接到 Google Cloud。此连接可实现以下功能:

  • 使用 Connect 将 Bare Metal 集群连接到 Google Cloud。这样,您就能够访问集群和工作负载管理功能(包括统一的界面和 Cloud Console),以便与集群进行交互。
  • 使用 LoggingMonitoring 在 Cloud Console 中查看来自集群的日志和指标。
  • 集群快照自动上传到 Cloud Storage 存储桶。

手动配置访问权限的过程包括:

  • 在 Cloud 项目中启用必要的 Google 服务。
  • 创建包含必要角色的以下服务帐号:
    • connect-agent 服务帐号:Connect 使用此服务帐号维护集群与 Google Cloud 之间的连接。
    • connect-register 服务帐号:Connect 使用此服务帐号向 Google Cloud 注册集群。
    • logging-monitoring 服务帐号:Connect 使用此服务帐号将日志和指标从集群导出到 Logging 和 Monitoring。
    • storage-agent 服务帐号bmctl 使用此服务帐号将集群的快照自动存储到 Cloud Storage。

  • 下载每个服务帐号的 JSON 密钥文件。

然后,将对 JSON 密钥文件的引用添加到相应的集群配置文件。如需了解详情,请参阅创建集群:概览

配置服务帐号以与 Connect 搭配使用

要创建服务帐号和密钥文件,请执行以下操作:

  1. 确保您位于 baremetal 目录中。
  2. 在 Cloud 项目中启用必要的 Google 服务:
  3. gcloud services enable --project=PROJECT_ID \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        connectgateway.googleapis.com \
        cloudresourcemanager.googleapis.com \
        anthos.googleapis.com
  4. 创建具有必要角色的 connect-agent 服务帐号并下载密钥文件。以下步骤将在 baremetal 目录中创建 connect-agent.json 密钥文件:
    1. 创建服务帐号:
    2. gcloud iam service-accounts create connect-agent-svc-account --project=PROJECT_ID
    3. 授予 gkehub.connect 角色:
    4. gcloud projects add-iam-policy-binding  PROJECT_ID \
          --member="serviceAccount:connect-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/gkehub.connect"
    5. 下载服务帐号 JSON 密钥文件:
    6. gcloud iam service-accounts keys create connect-agent.json \
          --project=PROJECT_ID \
          --iam-account=connect-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com
      
  5. 创建具有必要角色的 connect-register 服务帐号并下载密钥文件。以下步骤将在 baremetal 目录中创建 connect-register.json 密钥文件:
    1. 创建服务帐号:
    2. gcloud iam service-accounts create connect-register-svc-account \
          --project=PROJECT_ID
    3. 授予 gkehub.admin 角色:
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:connect-register-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role=roles/gkehub.admin
    5. 下载服务帐号 JSON 密钥文件:
    6. gcloud iam service-accounts keys create connect-register.json \
          --project=PROJECT_ID \
          --iam-account=connect-register-svc-account@PROJECT_ID.iam.gserviceaccount.com
      

配置服务帐号以审核日志和监控项目

要为日志记录和监控创建服务帐号和密钥文件,请执行以下操作:

  1. 确保您位于 baremetal 目录中。
  2. 在 Cloud 项目中启用必要的 Google 服务:
  3. gcloud services enable --project PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com
    
  4. 创建具有必要角色的 logging-monitoring 服务帐号并下载密钥文件。以下步骤将在 baremetal 目录中创建 cloud-ops.json 密钥文件:
    1. 创建服务帐号
    2. gcloud iam service-accounts create logging-monitoring-svc-account \
          --project=PROJECT_ID
      
    3. 授予 logging.logWriter 角色
    4. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/logging.logWriter"
      
    5. 授予 monitoring.metricWriter 角色
    6. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.metricWriter"
      
    7. 授予 roles/stackdriver.resourceMetadata.writer 角色
    8. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/stackdriver.resourceMetadata.writer"
      
    9. 授予 roles/opsconfigmonitoring.resourceMetadata.writer 角色
    10. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/opsconfigmonitoring.resourceMetadata.writer"
      
    11. 授予 roles/monitoring.dashboardEditor 角色
    12. gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/monitoring.dashboardEditor"
      
    13. 下载服务帐号 JSON 密钥文件:
    14. gcloud iam service-accounts keys create cloud-ops.json \
          --project=PROJECT_ID \
          --iam-account=logging-monitoring-svc-account@PROJECT_ID.iam.gserviceaccount.com
      

配置可访问 Cloud Storage 存储桶的服务帐号

您可以使用服务帐号和密钥文件访问 Cloud Storage。您可以使用此服务帐号启用将集群快照自动上传到 Cloud Storage 存储桶的功能,或从 Cloud Storage 存储桶导入虚拟机 (VM) 映像以用于 Anthos VM Runtime。

如需创建服务帐号和密钥文件,请完成以下步骤:

  1. 确保您位于 baremetal 目录中。
  2. 在 Cloud 项目中启用必要的 Google 服务:
  3. gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
  4. 创建一个您的集群可用于访问 Cloud Storage 存储桶的服务帐号:
  5. gcloud iam service-accounts create storage-agent-svc-account \
        --project=PROJECT_ID
  6. 为此服务帐号授予 storage.admin 角色,以便此服务帐号可以将数据上传到 Cloud Storage 存储桶或导入虚拟机映像:
  7. gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:storage-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    
  8. 下载服务帐号 JSON 密钥文件:
  9. gcloud iam service-accounts keys create storage-agent.json \
        --iam-account=storage-agent-svc-account@PROJECT_ID.iam.gserviceaccount.com

如需详细了解如何创建集群快照并将其自动上传到 Cloud Storage 存储桶,请参阅创建快照以帮助诊断集群问题

如需详细了解如何从 Cloud Storage 导入虚拟机映像,请参阅创建并使用凭据从 Cloud Storage for Anthos VM Runtime 导入映像