7.2. 配置 GCP 项目
在安装 OpenShift Container Platform 之前,您必须配置 Google Cloud Platform(GCP)项目来托管它。
7.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。
7.2.2. 在 GCP 中启用 API 服务
Google Cloud Platform(GCP)项目需要访问多个 API 服务来完成 OpenShift Container Platform 安装。
先决条件
- 已创建一个项目来托管集群。
流程
在托管集群的项目中启用以下所需的 API 服务。您还可以启用安装不需要的可选 API 服务。请参阅 GCP 文档中的 启用服务。
表 7.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
表 7.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
7.2.3. 为 GCP 配置 DNS
要安装 OpenShift Container Platform,您使用的 Google Cloud Platform(GCP)帐户必须在托管 OpenShift Container Platform 集群的同一项目中有一个专用的公共托管区。此区域必须对域具有权威。DNS 服务为集群外部连接提供集群 DNS 解析和名称查询。
流程
确定您的域或子域,以及注册商。您可以转移现有的域和注册商,或通过 GCP 或其他来源获取新的域和注册商。
注意如果您购买了新的域,则需要时间来传播相关的 DNS 更改。有关通过 Google 购买域的更多信息,请参阅 Google Domains。
在 GCP 项目中为您的域或子域创建一个公共托管区。请参阅 GCP 文档中的 创建公共区。
使用适当的根域,如
openshiftcorp.com 或
子域,如 cluster.openshiftcorp.com
。从托管区域记录中提取新的权威名称服务器。请参阅 GCP 文档中的 查找您的云 DNS 名称服务器。
您通常有四个名称服务器。
- 更新域所用名称服务器的注册商记录。例如,如果您将域注册到 Google Domains,请参阅 Google Domains 帮助中的以下主题: 如何切换到自定义名称服务器。
- 如果您将根域迁移到 Google Cloud DNS,请迁移您的 DNS 记录。请参阅 GCP 文档中的 Migrating to Cloud DNS。
- 如果您使用子域,请按照贵公司的步骤将其委派记录添加到父域。这个过程可能包括对您公司的 IT 部门或控制您公司的根域和 DNS 服务的部门发出的请求。
7.2.4. GCP 帐户限值
OpenShift Container Platform 集群使用许多 Google Cloud Platform(GCP)组件,但默认的 配额 不会影响您安装默认 OpenShift Container Platform 集群的能力。
默认集群包含三台计算和三台 control plane 机器,它使用以下资源。请注意,有些资源只在 bootstrap 过程中需要,并在集群部署后删除。
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 集群前有足够的时间来等待支持问题单被处理。
7.2.5. 在 GCP 中创建服务帐户
OpenShift Container Platform 需要一个 Google Cloud Platform(GCP)服务帐户,它提供访问 Google API 中数据的验证和授权。如果您没有包含项目中所需角色的现有 IAM 服务帐户,您必须创建一个。
先决条件
- 已创建一个项目来托管集群。
流程
- 在用于托管 OpenShift Container Platform 集群的项目中创建一个服务帐户。请参阅 GCP 文档中的 创建服务帐户。
为服务帐户授予适当的权限。您可以逐一授予权限,也可以为其分配
Owner
角色。请参阅将角色转换到特定资源的服务帐户。注意将服务帐户设置为项目的所有者是获取所需权限的最简单方法,这意味着该服务帐户对项目有完全的控制权。您必须确定提供这种能力所带来的风险是否可以接受。
您可以使用 JSON 格式创建服务帐户密钥,或将服务帐户附加到 GCP 虚拟机。请参阅 GCP 文档中的创建服务帐户密钥以及为实例创建并启用服务帐户。
注意如果您使用附加服务帐户的虚拟机来创建集群,则必须在安装前在
install-config.yaml
文件中设置credentialsMode: Manual
。
7.2.5.1. 所需的 GCP 角色
将 Owner
角色附加到您创建的服务帐户时,您可以为该服务帐户授予所有权限,包括安装 OpenShift Container Platform 所需的权限。如果机构的安全策略需要更严格的权限集,您可以创建具有以下权限的服务帐户:如果您将集群部署到现有的虚拟私有云 (VPC) 中,则服务帐户不需要某些网络权限,如以下列表中记录:
安装程序所需的角色
- Compute Admin
- Role Administrator
- Security Admin
- Service Account Admin
- Service Account Key Admin
- Service Account User
- Storage Admin
安装过程中创建网络资源所需的角色
- DNS Administrator
在 passthrough 模式中使用 Cloud Credential Operator 所需的角色
- Compute Load Balancer Admin
以下角色应用到 control plane 和计算机器使用的服务帐户:
帐户 | 角色 |
---|---|
Control Plane |
|
| |
| |
| |
| |
Compute |
|
| |
|
7.2.5.2. 安装程序置备的基础架构所需的 GCP 权限
将 Owner
角色附加到您创建的服务帐户时,您可以为该服务帐户授予所有权限,包括安装 OpenShift Container Platform 所需的权限。
如果机构的安全策略需要更严格的权限集,您可以创建具有所需权限的自定义角色。安装程序置备的基础架构需要以下权限来创建和删除 OpenShift Container Platform 集群。
例 7.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.globalAddresses.create
-
compute.globalAddresses.get
-
compute.globalAddresses.use
-
compute.globalForwardingRules.create
-
compute.globalForwardingRules.get
-
compute.networks.create
-
compute.networks.get
-
compute.networks.list
-
compute.networks.updatePolicy
-
compute.networks.use
-
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
例 7.2. 创建负载均衡器资源所需的权限
-
compute.backendServices.create
-
compute.backendServices.get
-
compute.backendServices.list
-
compute.backendServices.update
-
compute.backendServices.use
-
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
-
compute.targetTcpProxies.create
-
compute.targetTcpProxies.get
-
compute.targetTcpProxies.use
例 7.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
例 7.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
例 7.5. 创建计算资源所需的权限
-
compute.disks.create
-
compute.disks.get
-
compute.disks.list
-
compute.disks.setLabels
-
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
例 7.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
例 7.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
-
compute.regionHealthChecks.create
-
compute.regionHealthChecks.get
-
compute.regionHealthChecks.useReadOnly
例 7.8. 获取 GCP 区域和区域相关信息所需的权限
-
compute.globalOperations.get
-
compute.regionOperations.get
-
compute.regions.get
-
compute.regions.list
-
compute.zoneOperations.get
-
compute.zones.get
-
compute.zones.list
例 7.9. 检查服务和配额所需的权限
-
monitoring.timeSeries.list
-
serviceusage.quotas.get
-
serviceusage.services.list
例 7.10. 安装所需的 IAM 权限
-
iam.roles.get
例 7.11. 在在没有服务帐户密钥的情况下进行身份验证时所需的权限
-
iam.serviceAccounts.signBlob
例 7.12. 安装的可选镜像权限
-
compute.images.list
例 7.13. 运行收集 bootstrap 的可选权限
-
compute.instances.getSerialPortOutput
例 7.14. 删除网络资源所需的权限
-
compute.addresses.delete
-
compute.addresses.deleteInternal
-
compute.addresses.list
-
compute.addresses.setLabels
-
compute.firewalls.delete
-
compute.firewalls.list
-
compute.forwardingRules.delete
-
compute.forwardingRules.list
-
compute.globalAddresses.delete
-
compute.globalAddresses.list
-
compute.globalForwardingRules.delete
-
compute.globalForwardingRules.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
例 7.15. 删除负载均衡器资源所需的权限
-
compute.backendServices.delete
-
compute.backendServices.list
-
compute.regionBackendServices.delete
-
compute.regionBackendServices.list
-
compute.targetPools.delete
-
compute.targetPools.list
-
compute.targetTcpProxies.delete
-
compute.targetTcpProxies.list
例 7.16. 删除 DNS 资源所需的权限
-
dns.changes.create
-
dns.managedZones.delete
-
dns.managedZones.get
-
dns.managedZones.list
-
dns.resourceRecordSets.delete
-
dns.resourceRecordSets.list
例 7.17. 删除服务帐户资源所需的权限
-
iam.serviceAccounts.delete
-
iam.serviceAccounts.get
-
iam.serviceAccounts.list
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
例 7.18. 删除计算资源所需的权限
-
compute.disks.delete
-
compute.disks.list
-
compute.instanceGroups.delete
-
compute.instanceGroups.list
-
compute.instances.delete
-
compute.instances.list
-
compute.instances.stop
-
compute.machineTypes.list
例 7.19. 删除存储资源需要
-
storage.buckets.delete
-
storage.buckets.getIamPolicy
-
storage.buckets.list
-
storage.objects.delete
-
storage.objects.list
例 7.20. 删除健康检查资源所需的权限
-
compute.healthChecks.delete
-
compute.healthChecks.list
-
compute.httpHealthChecks.delete
-
compute.httpHealthChecks.list
-
compute.regionHealthChecks.delete
-
compute.regionHealthChecks.list
例 7.21. 删除所需的镜像权限
-
compute.images.list
7.2.5.3. 共享 VPC 安装所需的 GCP 权限
当将集群安装到 共享 VPC 时,您必须为主机项目和服务项目配置服务帐户。如果您没有安装到共享 VPC 中,您可以跳过本节。
您必须将上面列出的标准安装所需的最小角色应用到服务项目。
对于以手动或 mint 凭证模式运行的 Cloud Credential Operator,您可以使用粒度权限。您不能在 passthrough 凭证模式中使用粒度权限。
确保主机项目将以下配置之一应用到服务帐户:
例 7.22. 在主机项目中创建防火墙所需的权限
-
projects/<host-project>/roles/dns.networks.bindPrivateDNSZone
-
roles/compute.networkAdmin
-
roles/compute.securityAdmin
例 7.23. 所需的最小权限
-
projects/<host-project>/roles/dns.networks.bindPrivateDNSZone
-
roles/compute.networkUser
7.2.6. 支持的 GCP 区域
您可以将 OpenShift Container Platform 集群部署到以下 Google Cloud Platform(GCP)区域:
-
africa-south1
(Johannesburg, South Africa) -
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-central2
(Dammam, Saudi Arabia, 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 文档。