3.10. 创建安装配置文件
您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建
install-config.yaml
文件。进入包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 openstack 作为目标平台。
- 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
- 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
- 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
- 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
- 为集群输入一个名称。名称长度必须为 14 个或更少字符。
-
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
3.10.1. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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> 1 httpsProxy: https://<username>:<pswd>@<ip>:<port> 2 noProxy: example.com 3 additionalTrustBundle: | 4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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 Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
3.10.2. RHOSP 部署中的自定义子网
另外,您还可以在您选择的 Red Hat OpenStack Platform(RHOSP)子网中部署集群。子网的 GUID 作为 install-config.yaml
文件中的 platform.openstack.machinesSubnet
的值传递。
此子网被用作集群的主子网。默认情况下,其上会创建节点和端口。您可以通过将 platform.openstack.machinesSubnet
属性的值设置为子网的 UUID,在不同的 RHOSP 子网中创建节点和端口。
在使用自定义子网运行 OpenShift Container Platform 安装程序前,请验证您的配置是否满足以下要求:
-
platform.openstack.machinesSubnet
使用的子网启用了 DHCP。 -
platform.openstack.machinesSubnet 的
CIDR 与networking.machineNetwork
的 CIDR 匹配。 - 安装程序用户有在此网络上创建端口的权限,包括带有固定 IP 地址的端口。
使用自定义子网的集群有以下限制:
-
如果您计划安装使用浮动 IP 地址的集群,则必须将
platform.openstack.machinesSubnet
子网附加到连接到externalNetwork
网络的路由器。 -
如果在
install-config.yaml
文件中设置了platform.openstack.machinesSubnet
值,安装程序不会为您的 RHOSP 机器创建专用网络或子网。 -
您不能与自定义子网同时使用
platform.openstack.externalDNS
属性。要将 DNS 添加到使用自定义子网的集群,请在 RHOSP 网络上配置 DNS。
默认情况下,API VIP 使用 x.x.x.5,Ingress VIP 从网络 CIDR 块获取 x.x.x.7。要覆盖这些默认值,请为 DHCP 分配池之外的 platform.openstack.apiVIPs
和 platform.openstack.ingressVIPs
设置值。
集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。
3.10.3. 使用裸机部署集群
如果您希望集群使用裸机,请修改 install-config.yaml
文件。集群可以同时在裸机上运行 control plane 和计算机器,或者只在计算机器上运行。
确保 install-config.yaml
文件反映了您用于裸机 worker 的 RHOSP 网络是否支持浮动 IP 地址。
先决条件
- RHOSP Bare Metal 服务(Ironic) 通过 RHOSP Compute API 启用并访问。
- 裸机 可作为 RHOSP 类别 提供。
- 如果您的集群在一个大于 16.1.6 且小于 16.2.4 的 RHOSP 版本上运行,则裸机 worker 无法正常工作,因为存在一个已知问题会导致元数据服务对 OpenShift Container Platform 节点上的服务不可用。
- RHOSP 网络支持 VM 和裸机服务器附加。
- 如果要将机器部署到预先存在的网络中,则会置备 RHOSP 子网。
- 如果要在安装程序置备的网络中部署机器,RHOSP Bare Metal 服务(Ironic)可以侦听在租户网络上运行的 Preboot eXecution Environment(PXE)引导机器并与之交互。
-
作为 OpenShift Container Platform 安装过程的一部分,创建了
install-config.yaml
文件。
流程
在
install-config.yaml
文件中编辑机器的类别:-
如果要使用裸机 control plane 机器,将
controlPlane.platform.openstack.type
的值改为裸机类型。 -
将
compute.platform.openstack.type
的值改为一个裸机类型。 如果要将机器部署到预先存在的网络中,请将
platform.openstack.machinesSubnet
的值改为网络的 RHOSP 子网 UUID。control plane 和计算机器必须使用相同的子网。裸机
install-config.yaml
文件示例controlPlane: platform: openstack: type: <bare_metal_control_plane_flavor> 1 ... compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: openstack: type: <bare_metal_compute_flavor> 2 replicas: 3 ... platform: openstack: machinesSubnet: <subnet_UUID> 3 ...
-
如果要使用裸机 control plane 机器,将
使用更新的 install-config.yaml
文件完成安装过程。部署期间创建的计算机器使用添加到 文件的类别。
在等待裸机引导时,安装程序可能会超时。
如果安装程序超时,重启并使用安装程序的 wait-for
命令完成部署。例如:
$ ./openshift-install wait-for install-complete --log-level debug
3.10.4. RHOSP 提供商网络上的集群部署
您可以使用供应商网络上的主网络接口在 Red Hat OpenStack Platform(RHOSP)上部署 OpenShift Container Platform 集群。提供商网络通常用于为项目提供可用于访问互联网的公共网络的直接访问权限。您还可以在项目间共享提供商网络,作为网络创建流程的一部分。
RHOSP 提供商网络直接映射到数据中心内的现有物理网络。RHOSP 管理员必须创建它们。
在以下示例中,OpenShift Container Platform 工作负载使用提供商网络连接到数据中心:

在提供商网络上安装的 OpenShift Container Platform 集群不需要租户网络或浮动 IP 地址。安装程序不会在安装过程中创建这些资源。
提供商网络类型示例包括 flat(未标记)和 VLAN(802.1Q 标记)。
集群可以在网络类型允许的情况下支持任意数量的提供商网络连接。例如,VLAN 网络通常支持多达 4096 个连接。
您可以在 RHOSP 文档中的 了解更多有关供应商和租户网络的信息。
3.10.4.1. 集群安装的 RHOSP 提供商网络要求
在安装 OpenShift Container Platform 集群前,您的 Red Hat OpenStack Platform(RHOSP)部署和提供商网络必须满足以下多个条件:
- RHOSP 网络服务(Neutron)通过 RHOSP 网络 API 启用 并访问。
- RHOSP 网络服务 启用了端口安全性并允许地址对扩展。
提供商网络可以与其他租户共享。
提示使用
openstack network create
命令和--share
标志来创建可共享的网络。用于安装集群的 RHOSP 项目必须拥有提供商网络以及适当的子网。
提示- 要为名为"openshift"的项目创建网络,请输入以下命令
$ openstack network create --project openshift
- 要为名为"openshift"的项目创建子网,请输入以下命令
$ openstack subnet create --project openshift
要了解更多有关在 RHOSP 上创建网络的信息,请阅读 提供商网络文档。
如果集群归
admin
用户所有,则必须以该用户身份运行安装程序,以便在网络上创建端口。重要提供商网络必须由用于创建集群的 RHOSP 项目所有。如果没有,则 RHOSP Compute 服务(Nova)无法从该网络请求端口。
验证提供商网络可以访问 RHOSP 元数据服务 IP 地址,默认为
169.254.169.254
。根据 RHOSP SDN 和网络服务配置,您可能需要在创建子网时提供路由。例如:
$ openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
- 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。
3.10.4.2. 在提供商网络上部署具有主接口的集群
您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。
先决条件
- 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。
流程
-
在文本编辑器中,打开
install-config.yaml
文件。 -
将
platform.openstack.apiVIPs
属性的值设置为 API VIP 的 IP 地址。 -
将
platform.openstack.ingressVIPs
属性的值设置为 Ingress VIP 的 IP 地址。 -
将
platform.openstack.machinesSubnet
属性的值设置为提供商网络子网的 UUID。 -
将
networking.machineNetwork.cidr
属性的值设置为提供商网络子网的 CIDR 块。
platform.openstack.apiVIPs
和 platform.openstack.ingressVIPs
属性必须从 networking.machineNetwork.cidr
块中取消分配 IP 地址。
依赖于 RHOSP 提供商网络的集群的安装配置文件部分
... platform: openstack: apiVIPs: 1 - 192.0.2.13 ingressVIPs: 2 - 192.0.2.23 machinesSubnet: fa806b2f-ac49-4bce-b9db-124bc64209bf # ... networking: machineNetwork: - cidr: 192.0.2.0/24
您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetwork
或 platform.openstack.externalDNS
参数。
在部署集群时,安装程序使用 install-config.yaml
文件在提供商网络上部署集群。
您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs
列表中。
部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络。
3.10.5. RHOSP 的自定义 install-config.yaml 文件示例
以下示例 install-config.yaml
文件演示了所有可能的 Red Hat OpenStack Platform (RHOSP) 自定义选项。
此示例文件仅供参考。您必须使用安装程序来获取 install-config.yaml
文件。
例 3.2. 单个堆栈 install-config.yaml
文件示例
apiVersion: v1 baseDomain: example.com controlPlane: name: master platform: {} replicas: 3 compute: - name: worker platform: openstack: type: ml.large replicas: 3 metadata: name: example networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 serviceNetwork: - 172.30.0.0/16 networkType: OVNKubernetes platform: openstack: cloud: mycloud externalNetwork: external computeFlavor: m1.xlarge apiFloatingIP: 128.0.0.1 fips: false pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
例 3.3. 双堆栈 install-config.yaml
文件示例
apiVersion: v1 baseDomain: example.com controlPlane: name: master platform: {} replicas: 3 compute: - name: worker platform: openstack: type: ml.large replicas: 3 metadata: name: example networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 - cidr: fd01::/48 hostPrefix: 64 machineNetwork: - cidr: 192.168.25.0/24 - cidr: fd2e:6f44:5dd8:c956::/64 serviceNetwork: - 172.30.0.0/16 - fd02::/112 networkType: OVNKubernetes platform: openstack: cloud: mycloud externalNetwork: external computeFlavor: m1.xlarge apiVIPs: - 192.168.25.10 - fd2e:6f44:5dd8:c956:f816:3eff:fec3:5955 ingressVIPs: - 192.168.25.132 - fd2e:6f44:5dd8:c956:f816:3eff:fe40:aecb controlPlanePort: fixedIPs: - subnet: name: openshift-dual4 - subnet: name: openshift-dual6 network: name: openshift-dual fips: false pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
3.10.6. 使用双栈网络配置集群
您可以在 RHOSP 上创建双栈集群。但是,只有在您使用带有 IPv4 和 IPv6 子网的 RHOSP 网络时,才会启用双栈配置。
RHOSP 不支持将 IPv4 单堆栈集群转换为双栈集群网络。
3.10.6.1. 部署双栈集群
对于 OpenShift Container Platform 集群中的双栈网络,您可以为集群节点配置 IPv4 和 IPv6 地址端点。
先决条件
- 您在子网上启用动态主机配置协议(DHCP)。
流程
创建具有 IPv4 和 IPv6 子网的网络。
ipv6-ra-mode
和ipv6-address-mode
字段的可用地址模式包括:dhcpv6-stateful
,dhcpv6-stateless
, 和slaac
。注意双栈网络 MTU 必须同时容纳 IPv6 的最小 MTU,即
1280
,OVN-Kubernetes 封装开销为100
。- 创建 API 和 Ingress VIP 端口。
- 将 IPv6 子网添加到路由器,以启用路由器公告。如果使用提供商网络,您可以通过将网络添加为外部网关来启用路由器广告,该网关也可以启用外部连接。
选择以下
install-config.yaml
配置之一:对于将 IPv4/IPv6 双栈集群(将 IPv4 设置为集群节点的主端点)的 IPv4/IPv6 双栈集群,请编辑
install-config.yaml
文件,如下例所示:apiVersion: v1 baseDomain: mydomain.test compute: - name: worker platform: openstack: type: m1.xlarge replicas: 3 controlPlane: name: master platform: openstack: type: m1.xlarge replicas: 3 metadata: name: mycluster networking: machineNetwork: 1 - cidr: "192.168.25.0/24" - cidr: "fd2e:6f44:5dd8:c956::/64" clusterNetwork: 2 - cidr: 10.128.0.0/14 hostPrefix: 23 - cidr: fd01::/48 hostPrefix: 64 serviceNetwork: 3 - 172.30.0.0/16 - fd02::/112 platform: openstack: ingressVIPs: ['192.168.25.79', 'fd2e:6f44:5dd8:c956:f816:3eff:fef1:1bad'] 4 apiVIPs: ['192.168.25.199', 'fd2e:6f44:5dd8:c956:f816:3eff:fe78:cf36'] 5 controlPlanePort: 6 fixedIPs: 7 - subnet: 8 name: subnet-v4 id: subnet-v4-id - subnet: 9 name: subnet-v6 id: subnet-v6-id network: 10 name: dualstack id: network-id
- 1 2 3
- 您必须为 IPv4 和 IPv6 地址系列指定一个 IP 地址范围。
- 4
- 指定 Ingress VIP 服务的虚拟 IP (VIP)地址端点,以为集群提供接口。
- 5
- 指定 API VIP 服务的虚拟 IP (VIP)地址端点,以为集群提供接口。
- 6
- 指定集群中所有节点用于其网络需要的双栈网络详情。
- 7
- 此字段中指定的任何子网的无类别域间路由(CIDR)必须与
networks.machineNetwork
上列出的 CIDR 匹配。 - 8 9
- 您可以为
name
或id
指定值,或同时指定两者的值。 - 10
- 在
ControlPlanePort
字段中指定network
是可选的。
对于一个 IPv6/IPv4 双栈集群(将 IPv6 设置为集群节点的主端点),请编辑
install-config.yaml
文件,如下例所示:apiVersion: v1 baseDomain: mydomain.test compute: - name: worker platform: openstack: type: m1.xlarge replicas: 3 controlPlane: name: master platform: openstack: type: m1.xlarge replicas: 3 metadata: name: mycluster networking: machineNetwork: 1 - cidr: "fd2e:6f44:5dd8:c956::/64" - cidr: "192.168.25.0/24" clusterNetwork: 2 - cidr: fd01::/48 hostPrefix: 64 - cidr: 10.128.0.0/14 hostPrefix: 23 serviceNetwork: 3 - fd02::/112 - 172.30.0.0/16 platform: openstack: ingressVIPs: ['fd2e:6f44:5dd8:c956:f816:3eff:fef1:1bad', '192.168.25.79'] 4 apiVIPs: ['fd2e:6f44:5dd8:c956:f816:3eff:fe78:cf36', '192.168.25.199'] 5 controlPlanePort: 6 fixedIPs: 7 - subnet: 8 name: subnet-v6 id: subnet-v6-id - subnet: 9 name: subnet-v4 id: subnet-v4-id network: 10 name: dualstack id: network-id
可选: 当您在隔离的双栈网络中使用安装主机时,重启后可能无法正确重新分配 IPv6 地址。要在 Red Hat Enterprise Linux (RHEL) 8 中解决这个问题,请完成以下步骤:
创建名为
/etc/NetworkManager/system-connections/required-rhel8-ipv6.conf
的文件,其中包括以下配置:[connection] type=ethernet [ipv6] addr-gen-mode=eui64 method=auto
- 重启安装主机。
可选: 当您在隔离的双栈网络中使用安装主机时,重启后可能无法正确重新分配 IPv6 地址。要在 Red Hat Enterprise Linux (RHEL) 9 中解决这个问题,请完成以下步骤:
创建名为
/etc/NetworkManager/conf.d/required-rhel9-ipv6.conf
的文件,其中包括以下配置:[connection] ipv6.addr-gen-mode=0
- 重启安装主机。
ip=dhcp,dhcp6
内核参数(在所有节点上设置)会导致一个同时在多个接口上激活的 Network Manager 连接配置文件。由于此行为,任何额外网络使用相同的 UUID 强制连接。如果您需要特定于接口的配置,为该接口创建新的连接配置集,以便不再对默认连接进行强制。
3.10.7. 使用用户管理的负载均衡器在 OpenStack 上安装集群配置
以下示例 install-config.yaml
文件演示了如何配置使用外部用户管理的负载均衡器而不是默认的内部负载均衡器的集群。
apiVersion: v1 baseDomain: mydomain.test compute: - name: worker platform: openstack: type: m1.xlarge replicas: 3 controlPlane: name: master platform: openstack: type: m1.xlarge replicas: 3 metadata: name: mycluster networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 192.168.10.0/24 platform: openstack: cloud: mycloud machinesSubnet: 8586bf1a-cc3c-4d40-bdf6-c243decc603a 1 apiVIPs: - 192.168.10.5 ingressVIPs: - 192.168.10.7 loadBalancer: type: UserManaged 2