9.5. 为 GCP 创建安装文件
要在 Google Cloud Platform (GCP) 上安装 OpenShift Container Platform 到共享 VPC 中,您必须生成 install-config.yaml 文件并进行修改,以便集群使用正确的 VPC 网络、DNS 区域和项目名称。
9.5.1. 手动创建安装配置文件 复制链接链接已复制到粘贴板!
安装集群要求您手动创建安装配置文件。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
mkdir <installation_directory>
$ mkdir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml文件模板示例,并将其保存在<installation_directory>中。注意此配置文件必须命名为
install-config.yaml。备份
install-config.yaml文件,以便您可以使用它安装多个集群。重要install-config.yaml文件会在安装过程的下一步中使用。现在必须备份它。
9.5.2. 共享 VPC 安装的自定义 install-config.yaml 文件示例 复制链接链接已复制到粘贴板!
要使用共享 VPC 在 GCP 上安装 OpenShift Container Platform 时需要一些配置参数。以下是显示这些字段的 install-config.yaml 文件示例。
此示例 YAML 文件仅供参考。您必须使用正确的环境和集群值修改此文件。
apiVersion: v1
baseDomain: example.com
credentialsMode: Passthrough
metadata:
name: cluster_name
platform:
gcp:
computeSubnet: shared-vpc-subnet-1
controlPlaneSubnet: shared-vpc-subnet-2
createFirewallRules: Disabled
network: shared-vpc
networkProjectID: host-project-name
publicDNSZone:
id: public-dns-zone
project: host-project-name
projectID: service-project-name
region: us-east1
defaultMachinePlatform:
tags:
- global-tag1
controlPlane:
name: master
platform:
gcp:
tags:
- control-plane-tag1
type: n2-standard-4
zones:
- us-central1-a
- us-central1-c
replicas: 3
compute:
- name: worker
platform:
gcp:
tags:
- compute-tag1
type: n2-standard-4
zones:
- us-central1-a
- us-central1-c
replicas: 3
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: 10.0.0.0/16
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
apiVersion: v1
baseDomain: example.com
credentialsMode: Passthrough
metadata:
name: cluster_name
platform:
gcp:
computeSubnet: shared-vpc-subnet-1
controlPlaneSubnet: shared-vpc-subnet-2
createFirewallRules: Disabled
network: shared-vpc
networkProjectID: host-project-name
publicDNSZone:
id: public-dns-zone
project: host-project-name
projectID: service-project-name
region: us-east1
defaultMachinePlatform:
tags:
- global-tag1
controlPlane:
name: master
platform:
gcp:
tags:
- control-plane-tag1
type: n2-standard-4
zones:
- us-central1-a
- us-central1-c
replicas: 3
compute:
- name: worker
platform:
gcp:
tags:
- compute-tag1
type: n2-standard-4
zones:
- us-central1-a
- us-central1-c
replicas: 3
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: 10.0.0.0/16
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
- 1
credentialsMode必须被设置为Passthrough,以便集群在集群创建后使用提供的 GCP 服务帐户。如需服务帐户必须具有所需的 GCP 权限,请参阅"先决条件"部分。- 2
- 共享 VPC 中要使用的计算机器的子网名称。
- 3
- 共享 VPC 中要使用的 control plane 机器的子网名称。
- 4
- 可选。如果将
createFirewallRules设置为Disabled,您可以使用网络标签手动创建和管理防火墙规则。默认情况下,集群将自动创建和管理集群通信所需的防火墙规则。您的服务帐户必须在主机项目中具有roles/compute.networkAdmin和roles/compute.securityAdmin权限,才能自动执行这些任务。如果您的服务帐户在主机项目中没有roles/dns.admin权限,则必须具有dns.networks.bindPrivateDNSZone权限。 - 5
- 共享 VPC 的名称。
- 6
- 共享 VPC 所在的主机项目的名称。
- 7
- 可选。主机项目中公共 DNS 区域的名称。如果设置这个值,则您的服务帐户必须在主机项目中具有
roles/dns.admin特权。公共 DNS 区域域必须与baseDomain参数匹配。如果没有设置这个值,安装程序会在服务项目中使用公共 DNS 区域。 - 8
- 可选。包含公共 DNS 区域的主机项目的名称。如果您指定了另一个项目中存在的公共 DNS 区域,则需要这个值。
- 9
- 要安装集群的 GCP 项目的名称。
- 10 11 12
- 可选。如果要手动创建和管理 GCP 防火墙规则,您可以将
platform.gcp.createFirewallRules设置为Disabled,然后指定一个或多个网络标签。您可以在计算机器、control plane 机器或所有机器上设置标签。 - 13
- 您可选择提供用于访问集群中机器的
sshKey值。
9.5.3. 安装配置参数 复制链接链接已复制到粘贴板!
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml 文件中修改这些参数。
9.5.3.1. 所需的配置参数 复制链接链接已复制到粘贴板!
下表描述了所需的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
| 字符串 |
|
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
|
Kubernetes 资源 | 对象 |
|
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
|
要执行安装的具体平台配置: | 对象 |
|
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
{
"auths":{
"cloud.openshift.com":{
"auth":"b3Blb=",
"email":"you@example.com"
},
"quay.io":{
"auth":"b3Blb=",
"email":"you@example.com"
}
}
}
|
9.5.3.2. 网络配置参数 复制链接链接已复制到粘贴板!
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
|
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
|
|
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16
|
|
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16
|
|
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
9.5.3.3. 可选的配置参数 复制链接链接已复制到粘贴板!
下表描述了可选的安装配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
|
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
|
将可选功能集合扩展到您在 | 字符串数组 |
|
| 组成计算节点的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
|
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
|
| 组成 control plane 的机器的配置。 |
|
|
|
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
|
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
|
使用 |
|
|
|
使用 |
|
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
|
|
Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。如果要在 GCP 上安装到共享虚拟私有云 (VPC) 中,则 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
|
启用或禁用 FIPS 模式。默认值为 重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
|
使用 | 字符串 |
|
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
|
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
|
|
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
9.5.3.4. 其他 Google Cloud Platform(GCP)配置参数 复制链接链接已复制到粘贴板!
下表描述了其他 GCP 配置参数:
| 参数 | 描述 | 值 |
|---|---|---|
|
|
要部署集群的现有 Virtual Private Cloud (VPC) 的名称。如果要将集群部署到共享 VPC 中,则必须使用包含共享 VPC 的 GCP 项目的名称设置 | 字符串. |
|
| 可选。包含要部署集群的共享 VPC 的 GCP 项目的名称。 | 字符串. |
|
| 安装程序安装集群的 GCP 项目的名称。 | 字符串. |
|
| 托管集群的 GCP 区域的名称。 |
任何有效的区域名称,如 |
|
| 要部署 control plane 机器的现有子网的名称。 | 子网名称。 |
|
| 要部署计算机器的现有子网的名称。 | 子网名称。 |
|
|
可选。如果要使用网络标签创建和管理防火墙规则,则将此值设置为 |
|
|
|
可选。包含公共 DNS 区的项目名称。如果设置这个值,则您的服务帐户必须在指定项目中具有 | 包含公共 DNS 区的项目名称。 |
|
|
可选。现有公共 DNS 区的 ID 或名称。公共 DNS 区域域必须与 | 公共 DNS 区域名称。 |
|
|
可选。包含私有 DNS 区的项目名称。如果设置这个值,则您的服务帐户必须在主机项目中具有 | 包含私有 DNS 区的项目名称。 |
|
| 可选。现有私有 DNS 区的 ID 或名称。如果没有设置这个值,安装程序会在服务项目中创建私有 DNS 区域。 | 私有 DNS 区域名称。 |
|
| 必须应用到计算镜像的许可证 URL 列表。 重要
| license API 可获得的任何许可证,如启用嵌套虚拟化的许可证。您不能将此参数与生成预构建镜像的机制一起使用。使用许可证 URL 强制安装程序在使用前复制源镜像。 |
|
| 安装程序在其中创建机器的可用区。 | |
|
| 以 GB(GB)为单位的磁盘大小。 | 16 GB 到 65536 GB 之间的任何大小。 |
|
|
默认 | |
|
| 可选。默认情况下,安装程序会下载并安装用于引导 control plane 和计算机器的 RHCOS 镜像。您可以通过为安装程序为两种类型的机器指定自定义 RHCOS 镜像的位置来覆盖默认行为。 | 字符串.镜像所在 GCP 项目的名称。 |
|
|
安装程序用来引导 control plane 和计算机器的自定义 RHCOS 镜像名称。如果使用 | 字符串.RHCOS 镜像的名称。 |
|
| 可选。要添加到 control plane 和计算机器的额外网络标签。 |
一个或多个字符串,如 |
|
| control plane 和计算机器的 GCP 机器类型。 |
GCP 机器类型,如 |
|
| 用于机器磁盘加密的客户管理的加密密钥名称。 | 加密密钥名称。 |
|
| KMS 密钥所属的密钥管理服务 (KMS) 密钥环的名称。 | KMS 密钥环名称。 |
|
| KMS 密钥环存在的 GCP 位置。 | GCP 位置。 |
|
|
存在 KMS 密钥环的项目 ID。如果没有设置,则默认值为 | GCP 项目 ID。 |
|
| 用于 control plane 和计算机器加密请求的 GCP 服务帐户。如果没有,则使用 Compute Engine 默认服务帐户。如需有关 GCP 服务帐户的更多信息,请参阅 Google 文档中的服务帐户。 |
GCP 服务帐户电子邮件,如 |
|
| 用于 control plane 机器磁盘加密的客户管理的加密密钥名称。 | 加密密钥名称。 |
|
| 对于 control plane 机器,KMS 密钥环的名称。 | KMS 密钥环名称。 |
|
| 对于 control plane 机器,存在密钥环的 GCP 位置。有关 KMS 位置的更多信息,请参阅 Google 文档中的Cloud KMS 位置。 | 密钥环的 GCP 位置。 |
|
| 对于 control plane 机器,存在 KMS 密钥环的项目 ID。如果没有设置,则默认值是 VM 项目 ID。 | GCP 项目 ID。 |
|
| 用于 control plane 机器的加密请求的 GCP 服务帐户。如果没有,则使用 Compute Engine 默认服务帐户。如需有关 GCP 服务帐户的更多信息,请参阅 Google 文档中的服务帐户。 |
GCP 服务帐户电子邮件,如 |
|
| 以 GB(GB)为单位的磁盘大小。这个值适用于 control plane 机器。 | 16 到 65536 之间的任何整数。 |
|
| control plane 机器的 GCP 磁盘类型。 |
control plane 机器必须使用 |
|
| 可选。默认情况下,安装程序会下载并安装用于引导 control plane 机器的 Red Hat Enterprise Linux CoreOS (RHCOS)镜像。您可以通过只用于 control plane 机器的安装程序指定自定义 RHCOS 镜像的位置来覆盖默认行为。 | 字符串.镜像所在 GCP 项目的名称。 |
|
|
安装程序用来引导 control plane 机器的自定义 RHCOS 镜像名称。如果使用 | 字符串.RHCOS 镜像的名称。 |
|
|
可选。要添加到 control plane 机器的额外网络标签。如果设置,此参数会覆盖 control plane 机器的 |
一个或多个字符串,如 |
|
|
control plane 机器的 GCP 机器类型。如果设置,此参数会覆盖 |
GCP 机器类型,如 |
|
| 安装程序在其中创建 control plane 机器的可用区。 | |
|
| 用于计算机器磁盘加密的客户管理的加密密钥名称。 | 加密密钥名称。 |
|
| 对于计算机器,KMS 密钥环的名称。 | KMS 密钥环名称。 |
|
| 对于计算机器,存在密钥环的 GCP 位置。有关 KMS 位置的更多信息,请参阅 Google 文档中的Cloud KMS 位置。 | 密钥环的 GCP 位置。 |
|
| 对于计算机器,存在 KMS 密钥环的项目 ID。如果没有设置,则默认值是 VM 项目 ID。 | GCP 项目 ID。 |
|
| 用于计算机器加密请求的 GCP 服务帐户。如果没有设置这个值,则使用 Compute Engine 默认服务帐户。如需有关 GCP 服务帐户的更多信息,请参阅 Google 文档中的服务帐户。 |
GCP 服务帐户电子邮件,如 |
|
| 以 GB(GB)为单位的磁盘大小。这个值适用于计算机器。 | 16 到 65536 之间的任何整数。 |
|
| 计算机器的 GCP 磁盘类型。 |
默认 |
|
| 可选。默认情况下,安装程序会下载并安装用于引导计算机器的 RHCOS 镜像。您可以通过为安装程序指定用于计算机器的自定义 RHCOS 镜像的位置来覆盖默认行为。 | 字符串.镜像所在 GCP 项目的名称。 |
|
|
安装程序用来引导计算机器的自定义 RHCOS 镜像名称。如果使用 | 字符串.RHCOS 镜像的名称。 |
|
|
可选。要添加到计算机器的额外网络标签。如果设置,此参数会覆盖计算机器的 |
一个或多个字符串,如 |
|
|
计算机器的 GCP 机器类型。如果设置,此参数会覆盖 |
GCP 机器类型,如 |
|
| 安装程序在其中创建计算机器的可用区。 |
9.5.4. 在安装过程中配置集群范围的代理 复制链接链接已复制到粘贴板!
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml文件。 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在
Proxy 对象的spec.noProxy字段中添加站点来绕过代理。注意Proxy对象status.noProxy字段使用安装配置中的networking.machineNetwork[].cidr、networking.clusterNetwork[].cidr和networking.serviceNetwork[]字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy对象status.noProxy字段也会使用实例元数据端点填充(169.254.169.254)。
流程
编辑
install-config.yaml文件并添加代理设置。例如:apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port> httpsProxy: https://<username>:<pswd>@<ip>:<port> noProxy: example.com additionalTrustBundle: | -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle>apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port>1 httpsProxy: https://<username>:<pswd>@<ip>:<port>2 noProxy: example.com3 additionalTrustBundle: |4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle>5 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 方案必须是
http。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加上
.以仅匹配子域。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目的地的代理。 - 4
- 如果提供,安装程序会在
openshift-config命名空间中生成名为user-ca-bundle的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy对象的trustedCA字段中也会引用此配置映射。additionalTrustBundle字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy对象的配置以引用trustedCA字段中user-ca-bundle配置映射的策略。允许的值是Proxyonly和Always。仅在配置了http/https代理时,使用Proxyonly引用user-ca-bundle配置映射。使用Always始终引用user-ca-bundle配置映射。默认值为Proxyonly。
注意安装程序不支持代理的
readinessEndpoints字段。注意如果安装程序超时,重启并使用安装程序的
wait-for命令完成部署。例如:./openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec。
只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。