A.5. Overcloud 采用和准备 DCN 环境
您必须执行以下任务才能采用 overcloud:
- 每个站点都单独升级,一个站点从中央位置开始。
- 采用网络和主机调配配置将导出到 overcloud,用于中央位置堆栈。
- 定义新容器和其他兼容性配置。
采用后,您必须运行执行以下任务的升级准备脚本:
- 将 overcloud 计划更新至 OpenStack Platform 17.1
- 为升级准备节点
有关此升级过程的持续时间和影响的详情,请参阅升级 持续时间和影响。
先决条件
所有节点都处于
ACTIVE状态:$ openstack baremetal node list如果有任何节点处于
MAINTENANCE状态,请将它们设置为ACTIVE:$ openstack baremetal node maintenance unset <node_uuid>-
将
<node_uuid> 替换为节点的 UUID。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc验证 undercloud 升级过程中导出的以下文件是否包含 overcloud 升级的预期配置。您可以在
~/overcloud-deploy目录中找到以下文件:-
tripleo-<stack>-passwords.yaml -
tripleo-<stack>-network-data.yaml -
tripleo-<stack>-virtual-ips.yaml tripleo-<stack>-baremetal-deployment.yaml注意如果在 undercloud 升级后没有生成这些文件,请联系红帽支持。
重要如果您有多单元环境,请参阅 Overcloud 采用多单元环境,例如将文件复制到每个单元堆栈的示例。
-
在主堆栈上,将 password
.yaml文件复制到~/overcloud-deploy/$(<stack>)目录。在环境中的每个堆栈中重复此步骤:$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-passwords.yaml ~/overcloud-deploy/<stack>/<stack>-passwords.yaml-
将
<stack>替换为您的堆栈的名称。
-
将
如果您要在中央位置执行准备和采用,请将
network-data.yaml文件复制到 stack 用户的主目录并部署网络。这只适用于中央位置:$ cp /home/stack/overcloud-deploy/central/tripleo-central-network-data.yaml ~/ $ openstack overcloud network provision --debug \ --output /home/stack/templates/generated-networks-deployed.yaml tripleo-central-network-data.yaml有关更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的置备和部署 overcloud。
如果您要在中央位置执行准备和采用,请将
virtual-ips.yaml文件复制到 stack 用户的主目录,并置备网络 VIP。这只适用于中央位置:$ cp /home/stack/overcloud-deploy/central/tripleo-central-virtual-ips.yaml ~/ $ openstack overcloud network vip provision --debug \ --stack <stack> --output \ /home/stack/templates/generated-vip-deployed.yaml tripleo-central-virtual-ips.yaml在主堆栈上,将
baremetal-deployment.yaml文件复制到 stack 用户的主目录,并置备 overcloud 节点。在环境中的每个堆栈中重复此步骤:$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-baremetal-deployment.yaml ~/ $ openstack overcloud node provision --debug --stack <stack> \ --output /home/stack/templates/baremetal-central-deployment.yaml \ tripleo-<stack>-baremetal-deployment.yaml注意这是 overcloud 采用的最后一步。如果您的 overcloud 采用用 10 分钟的时间完成,请联系红帽支持。
完成以下步骤以准备容器:
备份用于 undercloud 升级的
containers-prepare-parameter.yaml文件:$ cp containers-prepare-parameter.yaml \ containers-prepare-parameter.yaml.orig在运行脚本以更新
containers-prepare-parameter.yaml文件前,定义以下环境变量:-
NAMESPACE: UBI9 镜像的命名空间。例如,NAMESPACE='"namespace":"example.redhat.com:5002",' -
EL8_NAMESPACE:UBI8 镜像的命名空间。 -
NEUTRON_DRIVER:要使用的驱动程序,并确定要使用的 OpenStack Networking (neutron)容器。设置为用于部署原始堆栈的容器类型。例如,设置为NEUTRON_DRIVER='"neutron_driver":"ovn",'以使用基于 OVN 的容器。 EL8_TAGS:UBI8 镜像的标签,如EL8_TAGS='"tag":"17.1",'。-
将
"17.1" 替换为您在内容视图中使用的标签。
-
将
EL9_TAGS:UBI9 镜像的标签,如EL9_TAGS='"tag":"17.1",'。将
"17.1" 替换为您在内容视图中使用的标签。如需有关
tag参数的更多信息,请参阅自定义 Red Hat OpenStack Platform 部署中的 容器镜像准备参数。
CONTROL_PLANE_ROLES:使用--role选项的 control plane 角色列表,如--role ControllerOpenstack, --role Database, --role Messaging, --role Networker, --role CephStorage。要查看环境中的 control plane 角色列表,请运行以下命令:$ export STACK=<stack> \ $ sudo awk '/tripleo_role_name/ {print "--role " $2}' \ /var/lib/mistral/${STACK}/tripleo-ansible-inventory.yaml \ | grep -vi compute-
将
<stack>替换为您的堆栈的名称。
-
将
COMPUTE_ROLES:使用--role选项的 Compute 角色列表,如--Compute-1。要查看环境中的 Compute 角色列表,请运行以下命令:$ sudo awk '/tripleo_role_name/ {print "--role " $2}' \ /var/lib/mistral/${STACK}/tripleo-ansible-inventory.yaml \ | grep -i computeCEPH_OVERRIDE:如果您部署 Red Hat Ceph Storage,请指定 Red Hat Ceph Storage 5 容器镜像。例如:CEPH_OVERRIDE='"ceph_image":"rhceph-5-rhel8","ceph_tag":"<latest>",'将
<latest> 替换为最新的ceph_tag版本,如5-499。以下是
containers-prepare-parameter.yaml文件配置示例:NAMESPACE='"namespace":"registry.redhat.io/rhosp-rhel9",' EL8_NAMESPACE='"namespace":"registry.redhat.io/rhosp-rhel8",' NEUTRON_DRIVER='"neutron_driver":"ovn",' EL8_TAGS='"tag":"17.1",' EL9_TAGS='"tag":"17.1",' CONTROL_PLANE_ROLES="--role Controller" COMPUTE_ROLES="--role Compute" CEPH_TAGS='"ceph_tag":"5",'
-
运行以下脚本以更新
containers-prepare-parameter.yaml文件:警告如果您部署了 Red Hat Ceph Storage,请确保在执行以下命令前将
CEPH_OVERRIDE环境变量设置为正确的值。如果不这样做,会导致升级 Red Hat Ceph Storage 时出现问题。$ python3 /usr/share/openstack-tripleo-heat-templates/tools/multi-rhel-container-image-prepare.py \ ${COMPUTE_ROLES} \ ${CONTROL_PLANE_ROLES} \ --enable-multi-rhel \ --excludes collectd \ --excludes nova-libvirt \ --minor-override "{${EL8_TAGS}${EL8_NAMESPACE}${CEPH_OVERRIDE}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \ --major-override "{${EL9_TAGS}${NAMESPACE}${CEPH_OVERRIDE}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \ --output-env-file \ /home/stack/containers-prepare-parameter.yamlmulti-rhel-container-image-prepare.py脚本支持以下参数:--output-env-file-
编写包含默认
ContainerImagePrepare值的环境文件。 --local-push-destination- 触发上传到本地 registry 的上传。
--enable-registry-login-
启用允许系统在拉取容器前尝试登录到远程 registry 的标记。当没有使用
--local-push-destination且目标系统有到远程 registry 的网络连接时,请使用此标志。不要将这个标志用于可能没有到远程 registry 的网络连接的 overcloud。 --enable-multi-rhel- 启用多rhel。
--excludes- 列出要排除的服务。
--major-override- 列出主发行版本的覆盖参数。
--minor-override- 列出次发行版本的覆盖参数。
--role- 角色列表。
--role-file-
role_data.yaml文件。
-
如果您部署了 Red Hat Ceph Storage,请打开
containers-prepare-parameter.yaml文件,以确认指定了 Red Hat Ceph Storage 5 容器镜像,且没有引用 Red Hat Ceph Storage 6 容器镜像。
如果您有 director 部署的 Red Hat Ceph Storage 部署,请创建一个名为
ceph_params.yaml的文件,并包含以下内容:parameter_defaults: CephSpecFqdn: true CephConfigPath: "/etc/ceph" CephAnsibleRepo: "rhceph-5-tools-for-rhel-8-x86_64-rpms" DeployedCeph: true重要在 RHOSP 升级完成后不要删除
ceph_params.yaml文件。此文件必须存在于 director 部署的 Red Hat Ceph Storage 环境中。此外,每次运行openstack overcloud deploy时,都必须包含ceph_params.yaml文件,例如-e ceph_params.yaml。注意如果您的 Red Hat Ceph Storage 部署包含短名称,您必须将
CephSpecFqdn参数设置为false。如果设置为true,则清单会生成一个短名称和域名,从而导致 Red Hat Ceph Storage 升级失败。在 templates 目录中创建一个名为
upgrade-environment.yaml的环境文件,并包含以下内容:parameter_defaults: ExtraConfig: nova::workarounds::disable_compute_service_check_for_ffu: true DnsServers: ["<dns_servers>"] DockerInsecureRegistryAddress: <undercloud_FQDN> UpgradeInitCommand: | sudo subscription-manager repos --disable=* if $( grep -q 9.2 /etc/os-release ) then sudo subscription-manager repos --enable=rhel-9-for-x86_64-baseos-e4s-rpms --enable=rhel-9-for-x86_64-appstream-e4s-rpms --enable=rhel-9-for-x86_64-highavailability-e4s-rpms --enable=openstack-17.1-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms sudo subscription-manager release --set=9.2 else sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-aus-rpms --enable=rhel-8-for-x86_64-appstream-aus-rpms --enable=rhel-8-for-x86_64-highavailability-aus-rpms --enable=openstack-17.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms sudo subscription-manager release --set=8.4 fi if $(sudo podman ps | grep -q ceph ) then sudo dnf -y install cephadm fi-
将
<dns_servers>替换为 DNS 服务器 IP 地址的逗号分隔列表,例如["10.0.0.36", "10.0.0.37"]。 将
<undercloud_FQDN> 替换为 undercloud 主机的完全限定域名(FQDN),例如"undercloud-0.ctlplane.redhat.local:8787"。有关您可以在环境文件中配置的升级参数的更多信息,请参阅升级 参数。
-
将
如果要在边缘位置执行准备和采用,请将
AuthCloudName参数设置为中央位置的名称:parameter_defaults: AuthCloudName: central如果部署了多个镜像服务(glance)存储,请将 copy-image 的镜像服务 API 策略设置为允许所有规则:
parameter_defaults: GlanceApiPolicies: {glance-copy_image: {key 'copy-image', value: ""}}在 undercloud 上,在 templates 目录中创建一个名为
overcloud_upgrade_prepare.sh的文件。- 您必须为环境中的每个堆栈创建此文件。此文件包含 overcloud 部署文件的原始内容,以及与您的环境相关的环境文件。
如果您要为 DCN 边缘位置创建
overcloud_upgrade_prepare.sh,您必须包含以下模板:包含导出的中央站点参数的环境模板。您可以在
/home/stack/overcloud-deploy/central/central-export.yaml中找到此文件。重要-
如果您将
central-export.yaml文件复制到其他目录中,如/home/stack/templates,在运行升级准备脚本时,central-export.yaml文件会在/home/stack/overcloud-deploy目录中生成。要确保central-export.yaml文件中的更新传递给其他站点,您必须将生成的central-export.yaml文件复制到您使用的目录中。 在对中央堆栈运行
overcloud 升级后,central-export.yaml文件没有正确导出。要修复该文件,您必须强制生成到中央堆栈overcloud-deploy目录中所需的数据,并导出中央堆栈:$ source ~/stackrc $ openstack overcloud upgrade run --yes --limit allovercloud,undercloud --stack $ openstack overcloud export --stack overcloud -f
-
如果您将
-
generated-networks-deployed.yaml,生成的文件来自在中央位置运行openstack overcloud network provision命令。 generated-vip-deployed.yaml,生成的文件在中央位置运行openstack overcloud network vip provision命令。例如:
#!/bin/bash openstack overcloud upgrade prepare --yes \ --timeout 460 \ --templates /usr/share/openstack-tripleo-heat-templates \ --ntp-server 192.168.24.1 \ --stack <stack> \ -r /home/stack/roles_data.yaml \ -e /home/stack/templates/internal.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \ -e /home/stack/templates/network/network-environment.yaml \ -e /home/stack/templates/inject-trust-anchor.yaml \ -e /home/stack/templates/hostnames.yml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/templates/nodes_data.yaml \ -e /home/stack/templates/debug.yaml \ -e /home/stack/templates/firstboot.yaml \ -e /home/stack/templates/upgrades-environment.yaml \ -e /home/stack/overcloud-params.yaml \ -e /home/stack/overcloud-deploy/<stack>/overcloud-network-environment.yaml \ -e /home/stack/overcloud-adopt/<stack>-passwords.yaml \ -e /home/stack/templates/<stack>-baremetal-deployment.yaml \ -e /home/stack/templates/generated-networks-deployed.yaml \ -e /home/stack/templates/generated-vip-deployed.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \ -e /home/stack/skip_rhel_release.yaml \ -e ~/containers-prepare-parameter.yaml注意如果您有多单元环境,请参阅 Overcloud 采用多单元环境,例如,为每个单元堆栈创建
overcloud_upgrade_prepare.sh文件。-
在原始
network-environment.yaml文件中(/home/stack/templates/network/network-environment.yaml),删除所有指向OS::TripleO::*::Net::SoftwareConfig的 resource_registry 资源。 -
在
overcloud_upgrade_prepare.sh文件中,包含与您的环境相关的以下选项:
-
在原始
-
环境文件 (
upgrades-environment.yaml) 带有特定于升级的参数 (-e)。 -
包含新容器镜像位置(
-e)的环境文件(containers-prepare-parameter.yaml)。在大多数情况下,这是 undercloud 使用的环境文件。 -
环境文件(
skip_rhel_release.yaml),带有发行版本参数(-e)。 -
与您的部署相关的任何自定义配置文件(
-e)。 -
如果适用,使用
--roles-file的自定义角色(roles_data)文件。 -
对于 Ceph 部署,环境文件(
ceph_params.yaml)以及 Ceph 参数(-e)。 -
在 overcloud 采用过程中生成的文件(network
-deployed.yaml,vip-deployed.yaml,baremetal-deployment.yaml) (-e)。 -
如果适用,带有您的 IPA 服务(-e)的环境文件(
ipa-environment.yaml)。 如果您使用可组合网络,则使用
--network-file的(network_data)文件。注意不要在 overcloud 部署文件或
overcloud_upgrade_prepare.sh文件中包括network-isolation.yaml文件。网络隔离在network_data.yaml文件中定义。如果使用自定义堆栈名称,请使用
--stack选项传递名称。注意您必须在模板中包含
nova-hw-machine-type-upgrade.yaml文件,直到所有 RHEL 8 Compute 节点都升级到环境中的 RHEL 9。如果排除了此文件,则/var/log/containers/nova目录中的nova_compute.log中会出现一个错误。将所有 RHEL 8 Compute 节点升级到 RHEL 9 后,您可以从配置中删除此文件并更新堆栈。在 director 部署的 Red Hat Ceph Storage 用例中,如果您在您要升级的部署中通过 NFS 启用共享文件系统服务(manila),您必须在
overcloud_upgrade_prepare.sh脚本文件末尾指定额外的环境文件。您必须在脚本末尾添加环境文件,因为它会覆盖之前在脚本中指定的另一个环境文件:-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml在外部 Red Hat Ceph Storage 用例中,如果您在您要升级的部署中通过 NFS 启用共享文件系统服务(manila),您必须检查
overcloud_upgrade_prepare.sh脚本中的关联环境文件是否指向 tripleo-basedceph-nfs角色。如果存在,请删除以下环境文件:-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml并添加以下环境文件:
-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
为环境中的每个堆栈运行升级准备脚本:
$ source stackrc $ chmod 755 /home/stack/overcloud_upgrade_prepare.sh $ sh /home/stack/overcloud_upgrade_prepare.sh注意如果您有多单元环境,您必须为每个为每个单元堆栈创建的
overcloud_upgrade_prepare.sh文件运行脚本。例如,请参阅 Overcloud 对多单元环境采用。- 等待升级准备完成。
下载容器镜像:
$ openstack overcloud external-upgrade run --stack <stack> --tags container_image_prepare