9.2. 配置 GCP 项目

在安装 OpenShift Container Platform 之前,您必须配置 Google Cloud Platform(GCP)项目来托管它。

9.2.1. 创建 GCP 项目

要安装 OpenShift Container Platform,您必须在 Google Cloud Platform(GCP)帐户中创建项目来托管集群。

流程

  • 创建一个项目来托管 OpenShift Container Platform 集群。请参阅 GCP 文档中的创建和管理 项目

    重要

    如果您使用安装程序置备的基础架构,您的 GCP 项目必须使用 Premium Network Service Tier。使用安装程序安装的集群不支持 Standard Network Service Tier。安装程序为 api-int.<cluster_name>.<base_domain> URL 配置内部负载均衡 ; 内部负载均衡需要 Premium Tier。

9.2.2. 在 GCP 中启用 API 服务

Google Cloud Platform(GCP)项目需要访问多个 API 服务来完成 OpenShift Container Platform 安装。

先决条件

  • 已创建一个项目来托管集群。

流程

  • 在托管集群的项目中启用以下所需的 API 服务。您还可以启用安装不需要的可选 API 服务。请参阅 GCP 文档中的 启用服务

    表 9.1. 所需的 API 服务

    API 服务控制台服务名称

    Compute Engine API

    compute.googleapis.com

    Cloud Resource Manager API

    cloudresourcemanager.googleapis.com

    Google DNS API

    dns.googleapis.com

    IAM Service Account Credentials API

    iamcredentials.googleapis.com

    Identity and Access Management(IAM)API

    iam.googleapis.com

    Service Usage API

    serviceusage.googleapis.com

    表 9.2. 可选 API 服务

    API 服务控制台服务名称

    Google Cloud API

    cloudapis.googleapis.com

    服务管理 API

    servicemanagement.googleapis.com

    Google Cloud Storage JSON API

    storage-api.googleapis.com

    Cloud Storage

    storage-component.googleapis.com

9.2.3. 为 GCP 配置 DNS

要安装 OpenShift Container Platform,您使用的 Google Cloud Platform(GCP)帐户必须在托管 OpenShift Container Platform 集群的同一项目中有一个专用的公共托管区。此区域必须对域具有权威。DNS 服务为集群外部连接提供集群 DNS 解析和名称查询。

流程

  1. 确定您的域或子域,以及注册商。您可以转移现有的域和注册商,或通过 GCP 或其他来源获取新的域和注册商。

    注意

    如果您购买了新的域,则需要时间来传播相关的 DNS 更改。有关通过 Google 购买域的更多信息,请参阅 Google Domains

  2. 在 GCP 项目中为您的域或子域创建一个公共托管区。请参阅 GCP 文档中的 创建公共区

    使用适当的根域,如 openshiftcorp.com 或 子域,如 cluster .openshiftcorp.com

  3. 从托管区域记录中提取新的权威名称服务器。请参阅 GCP 文档中的 查找您的云 DNS 名称服务器

    您通常有四个名称服务器。

  4. 更新域所用名称服务器的注册商记录。例如,如果您将域注册到 Google Domains,请参阅 Google Domains 帮助中的以下主题: 如何切换到自定义名称服务器
  5. 如果您将根域迁移到 Google Cloud DNS,请迁移您的 DNS 记录。请参阅 GCP 文档中的 Migrating to Cloud DNS
  6. 如果您使用子域,请按照贵公司的步骤将其委派记录添加到父域。这个过程可能包括对您公司的 IT 部门或控制您公司的根域和 DNS 服务的部门发出的请求。

9.2.4. GCP 帐户限值

OpenShift Container Platform 集群使用许多 Google Cloud Platform(GCP)组件,但默认的 配额 不会影响您安装默认 OpenShift Container Platform 集群的能力。

默认集群包含三台计算和三台 control plane 机器,它使用以下资源。请注意,有些资源只在 bootstrap 过程中需要,并在集群部署后删除。

表 9.3. 默认集群中使用的 GCP 资源

service组件位置所需的资源总数bootstrap 后删除的资源

服务帐户

IAM

全局

6

1

防火墙规则

Compute

全局

11

1

转发规则

Compute

全局

2

0

使用的全局 IP 地址

Compute

全局

4

1

健康检查

Compute

全局

3

0

镜像

Compute

全局

1

0

网络

Compute

全局

2

0

静态 IP 地址

Compute

区域

4

1

路由器

Compute

全局

1

0

Routes

Compute

全局

2

0

子网

Compute

全局

2

0

目标池

Compute

全局

3

0

CPU

Compute

区域

28

4

永久磁盘 SSD(GB)

Compute

区域

896

128

注意

如果在安装过程中任何配额不足,安装程序会显示一个错误信息,包括超过哪个配额,以及显示区域。

请考虑您的集群的实际大小、预定的集群增长,以及来自与您的帐户关联的其他集群的使用情况。CPU、静态 IP 地址和持久磁盘 SSD(存储)配额是最可能不足的。

如果您计划在以下区域之一部署集群,您将超过最大存储配额,并可能会超过 CPU 配额限制:

  • asia-east2
  • asia-northeast2
  • asia-south1
  • australia-southeast1
  • europe-north1
  • europe-west2
  • europe-west3
  • europe-west6
  • northamerica-northeast1
  • southamerica-east1
  • us-west2

您可以从 GCP 控制台 增加资源配额,但可能需要提交一个支持问题单。务必提前规划集群大小,以便在安装 OpenShift Container Platform 集群前有足够的时间来等待支持问题单被处理。

9.2.5. 在 GCP 中创建服务帐户

OpenShift Container Platform 需要一个 Google Cloud Platform(GCP)服务帐户,它提供访问 Google API 中数据的验证和授权。如果您没有包含项目中所需角色的现有 IAM 服务帐户,您必须创建一个。

先决条件

  • 已创建一个项目来托管集群。

流程

  1. 在用于托管 OpenShift Container Platform 集群的项目中创建一个服务帐户。请参阅 GCP 文档中的 创建服务帐户
  2. 为服务帐户授予适当的权限。您可以逐一授予权限,也可以为其分配 Owner 角色。请参阅将角色转换到特定资源的服务帐户

    注意

    将服务帐户设置为项目的所有者是获取所需权限的最简单方法,这意味着该服务帐户对项目有完全的控制权。您必须确定提供这种能力所带来的风险是否可以接受。

  3. 您可以使用 JSON 格式创建服务帐户密钥,或将服务帐户附加到 GCP 虚拟机。请参阅 GCP 文档中的创建服务帐户密钥以及为实例创建并启用服务帐户

    您必须有一个服务帐户密钥或带有附加服务帐户的虚拟机来创建集群。

    注意

    如果您使用附加服务帐户的虚拟机来创建集群,则必须在安装前在 install-config.yaml 文件中设置 credentialsMode: Manual

其他资源

9.2.5.1. 所需的 GCP 角色

Owner 角色附加到您创建的服务帐户时,您可以为该服务帐户授予所有权限,包括安装 OpenShift Container Platform 所需的权限。如果机构的安全策略需要更严格的权限集,您可以创建具有以下权限的服务帐户:

重要

如果将 Cloud Credential Operator 配置为以 passthrough 模式运行,则必须使用角色而不是粒度权限。

如果您将集群部署到现有的虚拟私有云 (VPC) 中,则服务帐户不需要某些网络权限,如以下列表中记录:

安装程序所需的角色

  • Compute Admin
  • IAM Security Admin
  • Service Account Admin
  • Service Account Key Admin
  • Service Account User
  • Storage Admin

安装过程中创建网络资源所需的角色

  • DNS Administrator

使用 passthrough 凭证模式所需的角色

  • Compute Load Balancer Admin
  • IAM 角色视图

角色应用到 control plane 和计算机器使用的服务帐户:

表 9.4. GCP 服务帐户权限

帐户角色

Control Plane

roles/compute.instanceAdmin

roles/compute.networkAdmin

roles/compute.securityAdmin

roles/storage.admin

roles/iam.serviceAccountUser

Compute

roles/compute.viewer

roles/storage.admin

9.2.5.2. 安装程序置备的基础架构所需的 GCP 权限

Owner 角色附加到您创建的服务帐户时,您可以为该服务帐户授予所有权限,包括安装 OpenShift Container Platform 所需的权限。

如果机构的安全策略需要更严格的权限集,您可以创建具有所需权限的自定义角色。安装程序置备的基础架构需要以下权限来创建和删除 OpenShift Container Platform 集群。

重要

如果将 Cloud Credential Operator 配置为以 passthrough 模式运行,则必须使用角色而不是粒度权限。如需更多信息,请参阅 "Required GCP roles" 部分中的"Required roles for using passthrough credentials mode"。

例 9.1. 创建网络资源所需的权限

  • compute.addresses.create
  • compute.addresses.createInternal
  • compute.addresses.delete
  • compute.addresses.get
  • compute.addresses.list
  • compute.addresses.use
  • compute.addresses.useInternal
  • compute.firewalls.create
  • compute.firewalls.delete
  • compute.firewalls.get
  • compute.firewalls.list
  • compute.forwardingRules.create
  • compute.forwardingRules.get
  • compute.forwardingRules.list
  • compute.forwardingRules.setLabels
  • compute.networks.create
  • compute.networks.get
  • compute.networks.list
  • compute.networks.updatePolicy
  • compute.routers.create
  • compute.routers.get
  • compute.routers.list
  • compute.routers.update
  • compute.routes.list
  • compute.subnetworks.create
  • compute.subnetworks.get
  • compute.subnetworks.list
  • compute.subnetworks.use
  • compute.subnetworks.useExternalIp

例 9.2. 创建负载均衡器资源所需的权限

  • compute.regionBackendServices.create
  • compute.regionBackendServices.get
  • compute.regionBackendServices.list
  • compute.regionBackendServices.update
  • compute.regionBackendServices.use
  • compute.targetPools.addInstance
  • compute.targetPools.create
  • compute.targetPools.get
  • compute.targetPools.list
  • compute.targetPools.removeInstance
  • compute.targetPools.use

例 9.3. 创建 DNS 资源所需的权限

  • dns.changes.create
  • dns.changes.get
  • dns.managedZones.create
  • dns.managedZones.get
  • dns.managedZones.list
  • dns.networks.bindPrivateDNSZone
  • dns.resourceRecordSets.create
  • dns.resourceRecordSets.list

例 9.4. 创建服务帐户资源所需的权限

  • iam.serviceAccountKeys.create
  • iam.serviceAccountKeys.delete
  • iam.serviceAccountKeys.get
  • iam.serviceAccountKeys.list
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.create
  • iam.serviceAccounts.delete
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

例 9.5. 创建计算资源所需的权限

  • compute.disks.create
  • compute.disks.get
  • compute.disks.list
  • compute.instanceGroups.create
  • compute.instanceGroups.delete
  • compute.instanceGroups.get
  • compute.instanceGroups.list
  • compute.instanceGroups.update
  • compute.instanceGroups.use
  • compute.instances.create
  • compute.instances.delete
  • compute.instances.get
  • compute.instances.list
  • compute.instances.setLabels
  • compute.instances.setMetadata
  • compute.instances.setServiceAccount
  • compute.instances.setTags
  • compute.instances.use
  • compute.machineTypes.get
  • compute.machineTypes.list

例 9.6. 创建存储资源需要

  • storage.buckets.create
  • storage.buckets.delete
  • storage.buckets.get
  • storage.buckets.list
  • storage.objects.create
  • storage.objects.delete
  • storage.objects.get
  • storage.objects.list

例 9.7. 创建健康检查资源所需的权限

  • compute.healthChecks.create
  • compute.healthChecks.get
  • compute.healthChecks.list
  • compute.healthChecks.useReadOnly
  • compute.httpHealthChecks.create
  • compute.httpHealthChecks.get
  • compute.httpHealthChecks.list
  • compute.httpHealthChecks.useReadOnly

例 9.8. 获取 GCP 区域和区域相关信息所需的权限

  • compute.globalOperations.get
  • compute.regionOperations.get
  • compute.regions.list
  • compute.zoneOperations.get
  • compute.zones.get
  • compute.zones.list

例 9.9. 检查服务和配额所需的权限

  • monitoring.timeSeries.list
  • serviceusage.quotas.get
  • serviceusage.services.list

例 9.10. 安装所需的 IAM 权限

  • iam.roles.get

例 9.11. 安装的可选镜像权限

  • compute.images.list

例 9.12. 运行收集 bootstrap 的可选权限

  • compute.instances.getSerialPortOutput

例 9.13. 删除网络资源所需的权限

  • compute.addresses.delete
  • compute.addresses.deleteInternal
  • compute.addresses.list
  • compute.firewalls.delete
  • compute.firewalls.list
  • compute.forwardingRules.delete
  • compute.forwardingRules.list
  • compute.networks.delete
  • compute.networks.list
  • compute.networks.updatePolicy
  • compute.routers.delete
  • compute.routers.list
  • compute.routes.list
  • compute.subnetworks.delete
  • compute.subnetworks.list

例 9.14. 删除负载均衡器资源所需的权限

  • compute.regionBackendServices.delete
  • compute.regionBackendServices.list
  • compute.targetPools.delete
  • compute.targetPools.list

例 9.15. 删除 DNS 资源所需的权限

  • dns.changes.create
  • dns.managedZones.delete
  • dns.managedZones.get
  • dns.managedZones.list
  • dns.resourceRecordSets.delete
  • dns.resourceRecordSets.list

例 9.16. 删除服务帐户资源所需的权限

  • iam.serviceAccounts.delete
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

例 9.17. 删除计算资源所需的权限

  • compute.disks.delete
  • compute.disks.list
  • compute.instanceGroups.delete
  • compute.instanceGroups.list
  • compute.instances.delete
  • compute.instances.list
  • compute.instances.stop
  • compute.machineTypes.list

例 9.18. 删除存储资源需要

  • storage.buckets.delete
  • storage.buckets.getIamPolicy
  • storage.buckets.list
  • storage.objects.delete
  • storage.objects.list

例 9.19. 删除健康检查资源所需的权限

  • compute.healthChecks.delete
  • compute.healthChecks.list
  • compute.httpHealthChecks.delete
  • compute.httpHealthChecks.list

例 9.20. 删除所需的镜像权限

  • compute.images.list

9.2.6. 支持的 GCP 区域

您可以将 OpenShift Container Platform 集群部署到以下 Google Cloud Platform(GCP)区域:

  • asia-east1 (Changhua County, Taiwan)
  • asia-east2 (Hong Kong)
  • asia-northeast1 (Tokyo, Japan)
  • asia-northeast2 (Osaka, Japan)
  • asia-northeast3 (Seoul, South Korea)
  • asia-south1 (Mumbai, India)
  • asia-south2 (Delhi, India)
  • asia-southeast1 (Jurong West, Singapore)
  • asia-southeast2 (Jakarta, Indonesia)
  • aia-southeast1( Sydney, Australia)
  • australia-southeast2 (Melbourne, Australia)
  • europe-central2 (Warsaw, USA)
  • europe-north1 (Hamina, Finland)
  • europe-southwest1 (Madrid, Spain)
  • europe-west1 (St. Ghislain, Belgium)
  • europe-west2 (London, England, UK)
  • europe-west3 (Frankfurt, Germany)
  • europe-west4 (Eemshaven, Netherlands)
  • europe-west6 (Zürich, Switzerland)
  • europe-west8 (Milan, Italy)
  • europe-west9 (Paris, France)
  • europe-west12 (Turin, Italy)
  • me-central1 (Doha, Qatar, Middle East)
  • me-west1 (Tel Aviv, Israel)
  • northamerica-northeast1 (Montréal, Québec, Canada)
  • northamerica-northeast2 (Toronto, Ontario, Canada)
  • southamerica-east1 (São Paulo, Brazil)
  • southamerica-west1 (Santiago, Chile)
  • us-central1 (Council Bluffs, Iowa, USA)
  • us-east1 (Moncks Corner, South Carolina, USA)
  • us-east4 (Ashburn, North Virginia, USA)
  • us-east5 (Columbus, Ohio)
  • us-south1 (Dallas, Texas)
  • us-west1 (The Dalles, Oregon, USA)
  • us-west2 (Los Angeles, California, USA)
  • us-west3 (Salt Lake City, Utah, USA)
  • us-west4 (Las Vegas, Nevada, USA)
注意

要确定地区和区域中可以使用哪些机器类型实例,请参阅 Google 文档

9.2.7. 后续步骤