×

创建 GCP 项目

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

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

    如果您使用的是安装程序预配的基础架构,则您的 GCP 项目必须使用高级网络服务层。标准网络服务层不支持使用安装程序安装的集群。安装程序会为api-int.<cluster_name>.<base_domain> URL 配置内部负载平衡;高级层是内部负载平衡所必需的。

在 GCP 中启用 API 服务

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

先决条件
  • 您已创建了一个项目来托管您的集群。

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

    表 1. 必需的 API 服务
    API 服务 控制台服务名称

    Compute Engine API

    compute.googleapis.com

    Cloud Resource Manager API

    cloudresourcemanager.googleapis.com

    Google DNS API

    dns.googleapis.com

    IAM 服务帐户凭据 API

    iamcredentials.googleapis.com

    身份和访问管理 (IAM) API

    iam.googleapis.com

    服务使用情况 API

    serviceusage.googleapis.com

    表 2. 可选的 API 服务
    API 服务 控制台服务名称

    Google Cloud APIs

    cloudapis.googleapis.com

    服务管理 API

    servicemanagement.googleapis.com

    Google Cloud Storage JSON API

    storage-api.googleapis.com

    Cloud Storage

    storage-component.googleapis.com

配置 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,或子域名,例如 clusters.openshiftcorp.com

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

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

  4. 更新您的域名使用的名称服务器的注册机构记录。例如,如果您在 Google Domains 注册了您的域名,请参阅 Google Domains 帮助中的以下主题:如何切换到自定义名称服务器

  5. 如果您已将根域名迁移到 Google Cloud DNS,请迁移您的 DNS 记录。请参阅 GCP 文档中的 迁移到 Cloud DNS

  6. 如果您使用子域名,请按照您公司的流程将它的委派记录添加到父域名。此过程可能包括向您公司的 IT 部门或控制公司根域名和 DNS 服务的部门发出请求。

GCP 帐户限制

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

默认集群包含三台计算机器和三台控制平面机器,它使用以下资源。请注意,某些资源仅在引导过程中需要,并在集群部署后删除。

表 3. 默认集群中使用的 GCP 资源
服务 组件 位置 所需的总资源 引导后删除的资源

服务帐户

IAM

全局

6

1

防火墙规则

计算

全局

11

1

转发规则

计算

全局

2

0

正在使用的全局 IP 地址

计算

全局

4

1

运行状况检查

计算

全局

3

0

镜像

计算

全局

1

0

网络

计算

全局

2

0

静态 IP 地址

计算

区域

4

1

路由器

计算

全局

1

0

路由

计算

全局

2

0

子网

计算

全局

2

0

目标池

计算

全局

3

0

CPU

计算

区域

28

4

持久性磁盘 SSD (GB)

计算

区域

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 集群之前留出时间来解决支持工单。

在 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

必需的 GCP 角色

当您将 Owner 角色附加到您创建的服务帐户时,您会授予该服务帐户所有权限,包括安装 OpenShift Container Platform 所需的权限。如果贵组织的安全策略需要更严格的权限集,您可以使用以下权限创建服务帐户。如果您将集群部署到现有的虚拟专用云 (VPC),则服务帐户不需要某些网络权限,这些权限在以下列表中注明。

安装程序所需的权限
  • Compute 管理员

  • 角色管理员

  • 安全管理员

  • 服务帐户管理员

  • 服务帐户密钥管理员

  • 服务帐户用户

  • 存储管理员

安装期间创建网络资源所需的权限
  • DNS 管理员

在直通模式下使用 Cloud Credential Operator 所需的角色
  • 计算负载平衡器管理员

  • 标签用户

以下角色应用于控制平面和计算机器使用的服务帐户

表 4. GCP 服务帐户角色
帐户 角色

控制平面

roles/compute.instanceAdmin

roles/compute.networkAdmin

roles/compute.securityAdmin

roles/storage.admin

roles/iam.serviceAccountUser

计算

roles/compute.viewer

roles/storage.admin

roles/artifactregistry.reader

安装程序预配的基础架构所需的 GCP 权限

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

如果贵组织的安全策略需要更严格的权限集,您可以使用必要的权限创建 自定义角色。创建和删除 OpenShift Container Platform 集群的安装程序预配的基础架构需要以下权限。

创建网络资源所需的权限
  • 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

  • 计算引擎转发规则列表

  • 计算引擎设置转发规则标签

  • 创建计算引擎全局地址

  • 获取计算引擎全局地址

  • 使用计算引擎全局地址

  • 创建计算引擎全局转发规则

  • 获取计算引擎全局转发规则

  • 设置计算引擎全局转发规则标签

  • 创建计算引擎网络

  • 获取计算引擎网络

  • 列出计算引擎网络

  • 更新计算引擎网络策略

  • 使用计算引擎网络

  • 创建计算引擎路由器

  • 获取计算引擎路由器

  • 列出计算引擎路由器

  • 更新计算引擎路由器

  • 列出计算引擎路由

  • 创建计算引擎子网

  • 获取计算引擎子网

  • 列出计算引擎子网

  • 使用计算引擎子网

  • 使用计算引擎子网外部IP

创建负载均衡器资源所需的权限
  • 创建计算引擎后端服务

  • 获取计算引擎后端服务

  • 列出计算引擎后端服务

  • 更新计算引擎后端服务

  • 使用计算引擎后端服务

  • 创建计算引擎区域后端服务

  • 获取计算引擎区域后端服务

  • 列出计算引擎区域后端服务

  • 更新计算引擎区域后端服务

  • 使用计算引擎区域后端服务

  • 向计算引擎目标池添加实例

  • 创建计算引擎目标池

  • 获取计算引擎目标池

  • 列出计算引擎目标池

  • 从计算引擎目标池移除实例

  • 使用计算引擎目标池

  • 创建计算引擎目标TCP代理

  • 获取计算引擎目标TCP代理

  • 使用计算引擎目标TCP代理

创建DNS资源所需的权限
  • 创建DNS变更

  • 获取DNS变更

  • 创建DNS托管区域

  • 获取DNS托管区域

  • 列出DNS托管区域

  • 绑定私有DNS区域到网络

  • 创建DNS资源记录集

  • 列出DNS资源记录集

创建服务帐号资源所需的权限
  • 创建服务帐号密钥

  • 删除服务帐号密钥

  • 获取服务帐号密钥

  • 列出服务帐号密钥

  • 以服务帐号身份运行

  • 创建服务帐号

  • 删除服务帐号

  • 获取服务帐号

  • 列出服务帐号

  • 获取资源管理器项目

  • 获取资源管理器项目的IAM策略

  • 设置资源管理器项目的IAM策略

创建计算资源所需的权限
  • 创建计算引擎磁盘

  • 获取计算引擎磁盘

  • 列出计算引擎磁盘

  • 设置计算引擎磁盘标签

  • 创建计算引擎实例组

  • 删除计算引擎实例组

  • 获取计算引擎实例组

  • 列出计算引擎实例组

  • 更新计算引擎实例组

  • 使用计算引擎实例组

  • 创建计算引擎实例

  • 删除计算引擎实例

  • 获取计算引擎实例

  • 列出计算引擎实例

  • 设置计算引擎实例标签

  • 设置计算引擎实例元数据

  • 设置计算引擎实例服务帐号

  • 设置计算引擎实例标签

  • 使用计算引擎实例

  • 获取计算引擎机器类型

  • 列出计算引擎机器类型

创建存储资源所需权限
  • 创建存储桶

  • 删除存储桶

  • 获取存储桶

  • 列出存储桶

  • 创建存储对象

  • 删除存储对象

  • 获取存储对象

  • 列出存储对象

创建健康检查资源所需的权限
  • 创建计算引擎健康检查

  • 获取计算引擎健康检查

  • 列出计算引擎健康检查

  • 以只读模式使用计算引擎健康检查

  • 创建计算引擎HTTP健康检查

  • 获取计算引擎HTTP健康检查

  • 列出计算引擎HTTP健康检查

  • 以只读模式使用计算引擎HTTP健康检查

  • 创建计算引擎区域健康检查

  • 获取计算引擎区域健康检查

  • 以只读模式使用计算引擎区域健康检查

获取GCP区域和可用区相关信息的所需权限
  • 获取计算引擎全局操作

  • 获取计算引擎区域操作

  • 获取计算引擎区域

  • 列出计算引擎区域

  • 获取计算引擎可用区操作

  • 获取计算引擎可用区

  • 列出计算引擎可用区

检查服务和配额所需的权限
  • 列出监控时间序列

  • 获取服务使用配额

  • 列出服务使用服务

安装所需的IAM权限
  • 创建IAM角色

  • 获取IAM角色

  • 更新IAM角色

无需服务帐号密钥进行身份验证时的所需权限
  • 使用服务帐号签名Blob

安装所需的可选镜像权限
  • 列出计算引擎镜像

运行收集引导程序的可选权限
  • 获取计算引擎实例串口输出

删除网络资源所需的权限
  • compute.addresses.delete

  • 删除内部地址

  • compute.addresses.list

  • 设置地址标签

  • compute.firewalls.delete

  • compute.firewalls.list

  • 删除计算引擎转发规则

  • 计算引擎转发规则列表

  • 删除计算引擎全局地址

  • 列出计算引擎全局地址

  • 删除计算引擎全局转发规则

  • 列出计算引擎全局转发规则

  • 删除计算引擎网络

  • 列出计算引擎网络

  • 更新计算引擎网络策略

  • 删除计算引擎路由器

  • 列出计算引擎路由器

  • 列出计算引擎路由

  • 删除计算引擎子网

  • 列出计算引擎子网

删除负载均衡器资源所需的权限
  • 删除计算引擎后端服务

  • 列出计算引擎后端服务

  • 删除计算引擎区域后端服务

  • 列出计算引擎区域后端服务

  • 删除计算引擎目标池

  • 列出计算引擎目标池

  • 删除计算引擎目标TCP代理

  • 列出计算引擎目标TCP代理

删除DNS资源所需的权限
  • 创建DNS变更

  • 删除DNS托管区域

  • 获取DNS托管区域

  • 列出DNS托管区域

  • 删除DNS资源记录集

  • 列出DNS资源记录集

删除服务帐号资源所需的权限
  • 删除服务帐号

  • 获取服务帐号

  • 列出服务帐号

  • 获取资源管理器项目的IAM策略

  • 设置资源管理器项目的IAM策略

删除计算资源所需的权限
  • 删除计算引擎磁盘

  • 列出计算引擎磁盘

  • 删除计算引擎实例组

  • 列出计算引擎实例组

  • 删除计算引擎实例

  • 列出计算引擎实例

  • 停止计算引擎实例

  • 列出计算引擎机器类型

删除存储资源所需权限
  • 删除存储桶

  • 获取存储桶的IAM策略

  • 列出存储桶

  • 删除存储对象

  • 列出存储对象

删除健康检查资源所需的权限
  • 删除计算引擎健康检查

  • 列出计算引擎健康检查

  • 删除计算引擎HTTP健康检查

  • 列出计算引擎HTTP健康检查

  • 删除计算引擎区域健康检查

  • 列出计算引擎区域健康检查

删除镜像所需的权限
  • 列出计算引擎镜像

共享VPC安装所需的GCP权限

将集群安装到共享VPC时,必须为主机项目和服务项目配置服务帐号。如果您不是安装到共享VPC,则可以跳过此部分。

必须将上面列出的标准安装所需的最小角色应用于服务项目。

您可以为在手动或Mint凭据模式下运行的云凭据操作员使用细粒度权限。您不能在直通凭据模式下使用细粒度权限。

确保主机项目对服务帐户应用以下配置之一

在主机项目中创建防火墙所需的权限
  • projects/<host-project>/roles/dns.networks.bindPrivateDNSZone

  • roles/compute.networkAdmin

  • roles/compute.securityAdmin

在主机项目中删除防火墙所需的权限
  • compute.firewalls.delete

  • 更新计算引擎网络策略

最低所需权限
  • projects/<host-project>/roles/dns.networks.bindPrivateDNSZone

  • roles/compute.networkUser

如果您未在install-config.yaml文件中为控制平面节点提供服务帐户,请将以下权限授予主机项目中的服务帐户。如果您未在install-config.yaml文件中为计算节点提供服务帐户,请将以下权限授予主机项目中的服务帐户以进行集群销毁。

详情
  • 获取资源管理器项目的IAM策略

  • 设置资源管理器项目的IAM策略

用户提供的服务帐户所需的GCP权限

安装集群时,计算节点和控制平面节点需要各自的服务帐号。默认情况下,安装程序会为控制平面和计算节点创建服务帐号。安装程序使用的服务帐号需要《在 GCP 中创建服务帐号》部分列出的角色和权限,以及 `resourcemanager.projects.getIamPolicy` 和 `resourcemanager.projects.setIamPolicy` 权限。这些权限应应用于主机项目中的服务帐号。如果此方法不符合贵组织的安全要求,则可以在 `install-config.yaml` 文件中为控制平面节点或计算节点提供服务帐号电子邮件地址。有关更多信息,请参阅《GCP 的安装配置参数》页面。如果在安装到共享 VPC 时为控制平面节点提供服务帐号,则必须在主机项目中向该服务帐号授予 `roles/compute.networkUser` 角色。如果希望安装程序在提供控制平面服务帐号时自动创建防火墙规则,则必须在主机项目中向该服务帐号授予 `roles/compute.networkAdmin` 和 `roles/compute.securityAdmin` 角色。如果只提供 `roles/compute.networkUser` 角色,则必须手动创建防火墙规则。

以下是控制平面节点和计算节点分别所需的用户提供的服务帐号的角色。

控制平面节点所需的角色
  • roles/compute.instanceAdmin

  • roles/compute.networkAdmin

  • roles/compute.securityAdmin

  • roles/storage.admin

计算节点所需的角色
  • roles/compute.viewer

  • roles/storage.admin

  • roles/artifactregistry.reader

支持的 GCP 区域

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

  • africa-south1(南非约翰内斯堡)

  • asia-east1(台湾彰化县)

  • asia-east2(香港)

  • asia-northeast1(日本东京)

  • asia-northeast2(日本大阪)

  • asia-northeast3(韩国首尔)

  • asia-south1(印度孟买)

  • asia-south2(印度德里)

  • asia-southeast1(新加坡裕廊西)

  • asia-southeast2(印度尼西亚雅加达)

  • australia-southeast1(澳大利亚悉尼)

  • australia-southeast2(澳大利亚墨尔本)

  • europe-central2(波兰华沙)

  • europe-north1(芬兰哈米纳)

  • europe-southwest1(西班牙马德里)

  • europe-west1(比利时圣吉斯兰)

  • europe-west2(英国伦敦)

  • europe-west3(德国法兰克福)

  • europe-west4(荷兰艾姆沙芬)

  • europe-west6(瑞士苏黎世)

  • europe-west8(意大利米兰)

  • europe-west9(法国巴黎)

  • europe-west12(意大利都灵)

  • me-central1(卡塔尔多哈,中东)

  • me-central2(沙特阿拉伯达曼,中东)

  • me-west1(以色列特拉维夫)

  • northamerica-northeast1(加拿大魁北克蒙特利尔)

  • northamerica-northeast2(加拿大安大略多伦多)

  • southamerica-east1(巴西圣保罗)

  • southamerica-west1(智利圣地亚哥)

  • us-central1(美国爱荷华州卡унсил布拉夫斯)

  • us-east1(美国南卡罗来纳州蒙克斯角)

  • us-east4(美国弗吉尼亚州北部阿什本)

  • us-east5(俄亥俄州哥伦布)

  • us-south1(美国德克萨斯州达拉斯)

  • us-west1(美国俄勒冈州达尔斯)

  • us-west2(美国加利福尼亚州洛杉矶)

  • us-west3(美国犹他州盐湖城)

  • us-west4(美国内华达州拉斯维加斯)

要确定按区域和区域划分的可用机器类型实例,请参阅 Google 文档

后续步骤