8.11. 手动创建安装配置文件
安装集群要求您手动创建安装配置文件。
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
-
获取命令输出中的
imageContentSources 部分来
镜像存储库。 - 获取您的镜像 registry 的证书内容。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意您必须将此配置文件命名为
install-config.yaml
。-
除非使用 RHCOS 默认信任的 registry,如
docker.io
,否则必须在additionalTrustBundle
部分中提供镜像存储库的证书内容。在大多数情况下,您必须为您的镜像提供证书。 -
您必须包含命令输出中的
imageContentSources
部分,才能镜像存储库。
-
除非使用 RHCOS 默认信任的 registry,如
备份
install-config.yaml
文件,以便用于安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
8.11.1. VMware vSphere 的 install-config.yaml
文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
apiVersion: v1 baseDomain: example.com 1 compute: 2 name: worker replicas: 0 3 controlPlane: 4 name: master replicas: 3 5 metadata: name: test 6 platform: vsphere: vcenter: your.vcenter.server 7 username: username 8 password: password 9 datacenter: datacenter 10 defaultDatastore: datastore 11 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" 12 resourcePool: "/<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>" 13 diskType: thin 14 fips: false 15 pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "you@example.com"}}}' 16 sshKey: 'ssh-ed25519 AAAA...' 17 additionalTrustBundle: | 18 -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE----- imageContentSources: 19 - mirrors: - <mirror_host_name>:<mirror_port>/<repo_name>/release source: <source_image_1> - mirrors: - <mirror_host_name>:<mirror_port>/<repo_name>/release-images source: <source_image_2>
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 4
controlPlane
部分是一个单个映射,但 compute 部分是一系列映射。为了满足不同数据结构的要求,compute
部分的第一行必须以连字符(-
)开头,controlPlane
部分的第一行不能以它开头。虽然这两个部分目前都定义了单一机器池,但未来的 OpenShift Container Platform 版本可能在安装过程中支持定义多个计算池。仅使用一个 control plane 池。- 3
replicas
参数的值必须设置为0
。此参数控制集群为您创建和管理的 worker 数量,在使用用户置备的基础架构时集群不会执行这些功能。在完成 OpenShift Container Platform 安装前,您必须手动为集群部署 worker 机器。- 5
- 您添加到集群的 control plane 机器数量。由于集群使用此值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。
- 6
- 您在 DNS 记录中指定的集群名称。
- 7
- vCenter 服务器的完全限定主机名或 IP 地址。重要
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
- 8
- 用于访问服务器的用户的名称。
- 9
- 与 vSphere 用户关联的密码。
- 10
- vSphere 数据中心.
- 11
- 要使用的默认 vSphere 数据存储。
- 12
- 可选参数:对于安装程序置备的基础架构,安装程序创建虚拟机的现有文件夹的绝对路径,如
/<datacenter_name>/vm/<folder_name>/<subfolder_name>
。如果没有提供这个值,安装程序会在数据中心虚拟机文件夹中创建一个顶层文件夹,其名称为基础架构 ID。如果您为集群提供基础架构,且您不想使用默认的StorageClass
对象(名为thin
),您可以从install-config.yaml
文件中省略folder
参数。 - 13
- 可选参数:对于安装程序置备的基础架构,安装程序创建虚拟机的现有文件夹的绝对路径,如
/<datacenter_name>/vm/<folder_name>/<subfolder_name>
。如果没有提供这个值,安装程序会在数据中心虚拟机文件夹中创建一个顶层文件夹,其名称为基础架构 ID。如果您为集群提供基础架构,请省略此参数。 - 14
- vSphere 磁盘置备方法。
- 15
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。只有在
x86_64
、ppc64le
和s390x
架构的 OpenShift Container Platform 部署中才支持使用 FIPS 验证的或Modules In Process 加密库。 - 16
- 对于
<local_registry>
,请指定 registry 域名,以及您的镜像 registry 用来提供内容的可选端口。例如registry.example.com 或
registry.example.com:5000
。对于<credentials>
,请为您的镜像 registry 指定 base64 编码的用户名和密码。 - 17
- Red Hat Enterprise Linux CoreOS(RHCOS)中
core
用户的默认 SSH 密钥的公钥部分。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。 - 18
- 提供用于镜像 registry 的证书文件内容。
- 19
- 提供命令输出中的
imageContentSources 部分来
镜像存储库。
8.11.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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
。使用*
绕过所有目的地的代理。您必须包含 vCenter 的 IP 地址以及用于其机器的 IP 范围。 - 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
对象,且无法创建额外的代理。
8.11.3. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
VMware vSphere 区域和区启用只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令。红帽没有提供 govc
命令。红帽支持不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站。
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
注意在 VMware vSphere 平台上安装 OpenShift Container Platform 集群后,您无法更改故障域。您可以在集群安装后添加额外的故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
apiVersion: v1 baseDomain: example.com featureSet: TechPreviewNoUpgrade 1 compute: name: worker replicas: 3 vsphere: zones: 2 - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" controlPlane: name: master replicas: 3 vsphere: zones: 3 - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" metadata: name: cluster platform: vsphere: vcenter: <vcenter_server> 4 username: <username> 5 password: <password> 6 datacenter: datacenter 7 defaultDatastore: datastore 8 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" 9 cluster: cluster 10 resourcePool: "/<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>" 11 diskType: thin failureDomains: 12 - name: <machine_pool_zone_1> 13 region: <region_tag_1> 14 zone: <zone_tag_1> 15 topology: 16 datacenter: <datacenter1> 17 computeCluster: "/<datacenter1>/host/<cluster1>" 18 resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" 19 networks: 20 - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" 21 - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" # ...
- 1
- 您必须将
TechPreviewNoUpgrade
定义为此参数的值,以便您可以使用 VMware vSphere 区域和区启用功能。 - 2 3
- 用于指定 vCenter 集群的可选参数。您可以使用
openshift-zone
标签类别中的标签来定义区。如果没有定义此参数,节点将分布到所有定义的 failure-domains 中。 - 4 5 6 7 8 9 10 11
- 默认 vCenter 拓扑。安装程序使用此拓扑信息来部署 bootstrap 节点。另外,拓扑定义了 vSphere 持久性卷的默认数据存储。
- 12
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如数据存储对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。如果没有定义此参数,安装程序将使用默认 vCenter 拓扑。
- 13
- 定义故障域的名称。在
zones
参数中引用每个故障域,将机器池范围到故障域。 - 14
- 您可以使用
openshift-region
标签类别中的标签来定义区域。标签必须附加到 vCenter 数据中心。 - 15
- 您可以使用
openshift-zone tag
类别中的标签来定义区。标签必须附加到 vCenter 数据中心。 - 16
- 指定与故障域关联的 vCenter 资源。
- 17
- 用于定义与故障域关联的 vSphere 数据中心的可选参数。如果没有定义此参数,安装程序将使用默认 vCenter 拓扑。
- 18
- 可选参数,用于指示与故障域关联的计算集群的绝对路径。如果没有定义此参数,安装程序将使用默认 vCenter 拓扑。
- 19
- 安装程序置备的基础架构的可选参数。参数设置安装程序创建虚拟机的现有资源池的绝对路径,例如
/<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>/<optional_nested_resource_pool_name>
。如果没有指定值,则会在集群/example_datacenter/host/example_cluster/Resources
根中安装资源。 - 20
- 列出 vCenter 实例中包含您配置的虚拟 IP 地址和 DNS 记录的任何网络的可选参数。如果没有定义此参数,安装程序将使用默认 vCenter 拓扑。
- 21
- 用于指定用于置备卷的数据存储的可选参数。如果没有定义此参数,安装程序将使用默认 vCenter 拓扑。