除了满足安装、硬件和操作系统前提条件外,您还必须配置并设置 Google Cloud 项目、API 和服务账号,以运行 GKE on Bare Metal。
请注意,bmctl
命令可在创建集群时自动启用服务账号和 API,但您也可以手动设置这些服务以更好地控制操作。
准备工作
创建 Google Cloud 项目和结算账号。
在安装过程中,您必须提供以下凭据:
- 访问集群节点机器所需的 SSH 私钥。
- 集群节点机器的登录名(如果不使用
root
)。
请确保您已拥有所有必要凭据,然后再尝试安装 GKE on Bare Metal。
登录 gcloud
- 使用
gcloud auth application-default
login 以用户身份登录 gcloud: - Service Account Admin
- Service Account Key Admin
- Project IAM Admin
- Compute Viewer
- Service Usage Admin
- 获取要用于创建集群的 Google Cloud 项目 ID:
gcloud auth application-default login您需要具有 Project Owner/Editor 角色才能使用自动 API 启用和服务账号创建功能,具体如下所述。您还可以向用户添加以下 IAM 角色:
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILEJSON_KEY_FILE 指定服务账号 JSON 密钥文件的路径。
export CLOUD_PROJECT_ID=$(gcloud config get-value project)
设置默认的 Google Cloud 项目 ID 和角色
除了配置服务账号之外,您还可以设置默认 project id
。
您必须具有项目的 owner
或 editor
角色,才能使用 GKE on Bare Metal。
要设置默认项目,请发出以下命令,并将 PROJECT_ID 替换为您的 Google Cloud 项目 ID:
gcloud config set project PROJECT_ID
启用 API
在安装 GKE on Bare Metal 之前,您需要在关联的 Google Cloud 项目中启用多个 API。如需在项目中启用 API,您必须获得 Google Cloud 项目中的以下角色之一:roles/owner
、roles/editor
、roles/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
工具来启用这些服务。
手动配置服务账号
创建集群时,GKE on Bare Metal 的 bmctl
命令可自动设置 Google 服务账号和 API。
但是,如需获取更多系统控制权或使用默认服务、账号和项目简化集群创建,您可以手动设置这些服务。
在生产环境中,您应该针对不同的目的创建单独的服务账号。根据用途,GKE 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
GKE on Bare Metal 将集群连接到 Google Cloud。此连接可实现以下功能:
- 使用 Connect 将 Bare Metal 集群连接到 Google Cloud。这样,您就能够访问集群和工作负载管理功能(包括统一的界面和 Cloud 控制台),以便与集群进行交互。
- 使用 Logging 和 Monitoring 在 Cloud 控制台中查看来自集群的日志和指标。
- 将集群快照自动上传到 Cloud Storage 存储桶。
手动配置访问权限的过程包括:
- 在 Cloud 项目中启用必要的 Google 服务。
- 创建包含必要角色的以下服务账号:
- gcr 服务账号:GKE on Bare Metal 使用此服务账号从 Container Registry 下载容器映像。
- connect-agent 服务账号:Connect 使用此服务账号维护集群与 Google Cloud 之间的连接。
- connect-register 服务账号:Connect 使用此服务账号向 Google Cloud 注册集群。
- cloud-ops 服务账号:Connect 使用此服务账号将日志和指标从集群导出到 Logging 和 Monitoring。
- storage-agent 服务账号:
bmctl
使用此服务账号将集群的快照自动存储到 Cloud Storage。
- 下载每个服务账号的 JSON 密钥文件。
然后,将对 JSON 密钥文件的引用添加到相应的集群配置文件。如需了解详情,请参阅创建集群:概览。
配置服务账号以拉取容器映像
如需创建服务账号和密钥文件以拉取 GKE on Bare Metal 容器映像,请执行以下操作:
确保您位于
baremetal
目录中。创建具有必要角色的 anthos-baremetal-gcr 服务账号并下载密钥文件。
以下步骤将在
baremetal
目录中创建anthos-baremetal-gcr.json
密钥文件:创建服务账号:
gcloud iam service-accounts create anthos-baremetal-gcr --project=PROJECT_ID
下载服务账号 JSON 密钥文件:
gcloud iam service-accounts keys create anthos-baremetal-gcr.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
配置服务账号以与 Connect 搭配使用
要创建服务账号和密钥文件,请执行以下操作:
- 确保您位于
baremetal
目录中。 - 在 Cloud 项目中启用必要的 Google 服务:
- 创建具有必要角色的 anthos-baremetal-connect 服务账号并下载密钥文件。
以下步骤将在
baremetal
目录中创建anthos-baremetal-connect.json
密钥文件:- 创建服务账号:
- 授予 gkehub.connect 角色:
- 下载服务账号 JSON 密钥文件:
gcloud iam service-accounts create anthos-baremetal-connect --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
gcloud iam service-accounts keys create connect-agent.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
- 创建具有必要角色的 anthos-baremetal-register 服务账号并下载密钥文件。以下步骤将在
baremetal
目录中创建anthos-baremetal-register.json
密钥文件:- 创建服务账号:
- 授予 gkehub.admin 角色:
- 下载服务账号 JSON 密钥文件: anthos-baremetal-register
gcloud iam service-accounts create anthos-baremetal-register \ --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/gkehub.admin
gcloud iam service-accounts keys create connect-register.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
gcloud services enable --project=PROJECT_ID \ gkeconnect.googleapis.com \ gkehub.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ anthos.googleapis.com
配置服务账号以审核日志和监控项目
要为日志记录和监控创建服务账号和密钥文件,请执行以下操作:
- 确保您位于
baremetal
目录中。 - 在 Cloud 项目中启用必要的 Google 服务:
- 创建具有必要角色的 anthos-baremetal-cloud-ops 服务账号并下载密钥文件。以下步骤将在
baremetal
目录中创建anthos-baremetal-cloud-ops.json
密钥文件: - 创建服务账号
- 授予 logging.logWriter 角色
- 授予 monitoring.metricWriter 角色
- 授予 roles/stackdriver.resourceMetadata.writer 角色
- 授予 roles/opsconfigmonitoring.resourceMetadata.writer 角色
- 授予 roles/monitoring.dashboardEditor 角色
- 下载服务账号 JSON 密钥文件:
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
gcloud iam service-accounts create anthos-baremetal-cloud-ops \ --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.dashboardEditor"
gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \ --project=PROJECT_ID \ --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
配置可访问 Cloud Storage 存储桶的服务账号
您可以使用服务账号和密钥文件访问 Cloud Storage。您可以使用此服务账号启用将集群快照自动上传到 Cloud Storage 存储桶的功能,或从 Cloud Storage 存储桶导入虚拟机 (VM) 映像以用于 VM Runtime on Google Distributed Cloud。
如需创建服务账号和密钥文件,请完成以下步骤:
- 确保您位于
baremetal
目录中。 - 在 Cloud 项目中启用必要的 Google 服务:
- 创建一个您的集群可用于访问 Cloud Storage 存储桶的服务账号:
- 为此服务账号授予
storage.admin
角色,以便此服务账号可以将数据上传到 Cloud Storage 存储桶或导入虚拟机映像: - 下载服务账号 JSON 密钥文件:
gcloud services enable --project=PROJECT_ID \ storage.googleapis.com
gcloud iam service-accounts create anthos-baremetal-storage \ --project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:anthos-baremetal-storage@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.admin"
gcloud iam service-accounts keys create anthos-baremetal-storage.json \ --iam-account=anthos-baremetal-storage@PROJECT_ID.iam.gserviceaccount.com
如需详细了解如何创建集群快照并将其自动上传到 Cloud Storage 存储桶,请参阅创建快照以帮助诊断集群问题。
如需详细了解如何从 Cloud Storage 导入虚拟机映像,请参阅创建并使用凭据从 Cloud Storage for VM Runtime on Google Distributed Cloud。