升级

本节描述了如何从一个 OpenStack 版本升级到另一个版本。

准备工作

在开始之前,请务必备份所有本地更改、配置和数据。

迁移 Kayobe 配置

Kayobe 配置选项可能会在 kayobe 的不同版本之间发生变化。确保所有站点本地配置都迁移到目标版本格式。如果使用 kayobe-config git 仓库来管理本地配置,则可以通过 git 管理此过程。例如,要从 origin 远程仓库获取版本 1.0.0 的配置并将其合并到当前分支

$ git fetch origin 1.0.0
$ git merge 1.0.0

合并后,应手动检查配置以确保其正确。此时可以设置任何新的配置选项。特别是,如果未使用其默认值,则可能需要更改以下选项

  • kolla_openstack_release

  • kolla_tag

  • kolla_sources

  • kolla_build_blocks

  • kolla_build_customizations

配置迁移完成后,可以查看所有主机的全局变量

(kayobe) $ kayobe configuration dump

此命令的输出是一个 JSON 对象,用于将主机映射到其配置。可以使用 --host--hosts--var-name--dump-facts 选项来限制命令的输出。

如果使用 kayobe-env 环境文件在 kayobe-config 中,也应检查其更改并根据需要修改以适应本地 ansible 控制主机环境。准备就绪后,激活环境文件

$ source kayobe-env

Kayobe 版本说明 提供了有关每个新版本的信息。特别是,升级说明弃用说明 部分提供了可能影响配置迁移的信息。

对配置所做的所有更改都应提交并推送到托管 git 仓库。

更新 Kayobe 配置

确保 Kayobe 配置已签出到所需的提交。

首先,确保仓库中没有未提交的本地更改

$ cd <base_path>/src/kayobe-config/
$ git status

从托管仓库拉取更改。例如,要从 master 分支的 origin 远程仓库拉取更改

$ git checkout master
$ git pull --ff-only origin master

根据您的环境调整此过程。

升级 Kayobe

如果 kayobe 的新版本可用,则应安装它。如 安装 中所述,Kayobe 可以通过 PyPI 上发布的 Python 包或从源代码安装。从 Python 包安装的支持始于 Kayobe 5.0.0。

Kayobe 支持跳级升级 (SLURP),请参阅 Kolla Ansible 文档 以获取详细信息。

从 PyPI 升级

本节描述了如何从虚拟环境中的 Python 包升级 Kayobe。这从 Kayobe 5.0.0 开始支持。

确保已激活虚拟环境

$ source <base_path>/venvs/kayobe/bin/activate

更新 pip 包

(kayobe) $ pip install -U pip

注意

在更新高于版本 2.9.x 的 Ansible 时,首先使用 pip uninstall ansible 卸载它。下一个命令将安装一个较新的版本,作为 Kayobe 的依赖项。如果安装了 Ansible 2.10.x 并且想要使用较新的版本,则还使用 pip uninstall ansible-base 卸载 ansible-base 包。

如果升级到 Kayobe 的最新版本

(kayobe) $ pip install -U kayobe

或者,要升级到 Kayobe 的特定版本

(kayobe) $ pip install kayobe==5.0.0

从源代码升级

本节描述了如何在虚拟环境中从源代码安装 Kayobe。

首先,签出 Kayobe 源代码的所需版本。可以通过从 opendev.org 拉取新版本来完成。确保对 kayobe 的任何本地更改都已提交并与新的上游代码合并,如必要。例如,要从 origin 远程仓库拉取版本 5.0.0

$ cd <base_path>/src/kayobe
$ git pull origin 5.0.0

确保已激活虚拟环境

$ source <base_path>/venvs/kayobe/bin/activate

更新 pip 包

(kayobe) $ pip install -U pip

如果使用 Kayobe 的非可编辑安装

(kayobe) $ cd <base_path>/src/kayobe
(kayobe) $ pip install -U .

或者,如果使用 Kayobe 的可编辑安装(版本 5.0.0 及更高版本,请参阅 可编辑的源代码安装 以获取详细信息)

(kayobe) $ cd <base_path>/src/kayobe
(kayobe) $ pip install -U -e .

升级 Ansible 控制主机

在开始升级之前,我们必须升级 Ansible 控制主机。此处执行的任务包括

  • 从 Ansible Galaxy 安装更新的 Ansible 角色依赖项。

  • 如果需要,生成 SSH 密钥并将其添加到当前用户的授权密钥中。

  • 将 Kolla Ansible 本地升级到配置的版本。

要升级 Ansible 控制主机

(kayobe) $ kayobe control host upgrade

升级 Seed Hypervisor

当前,不支持升级 seed hypervisor 服务。但是,升级主机软件包和一些主机服务可能是必要的。

升级主机软件包

在升级 seed hypervisor 之前,可能需要升级 seed hypervisor 主机上的系统软件包。

要更新所有符合条件的软件包,请使用 *,必要时进行转义

(kayobe) $ kayobe seed hypervisor host package update --packages "*"

要仅安装已被标记为安全相关的更新

(kayobe) $ kayobe seed hypervisor host package update --packages "*" --security

升级主机服务

可能需要升级一些主机服务

(kayobe) $ kayobe seed hypervisor host upgrade

请注意,这不会执行主机的完全配置,而是会对必要的特定服务执行有针对性的升级。

升级 Seed

seed 服务分为两步进行升级。首先,应通过本地构建或从镜像仓库拉取来获取新的容器镜像。其次,应使用从新容器镜像创建的新容器替换 seed 服务。

升级主机软件包

在升级 seed 之前,可能需要升级 seed 主机上的系统软件包。

要更新所有符合条件的软件包,请使用 *,必要时进行转义

(kayobe) $ kayobe seed host package update --packages "*"

要仅安装已被标记为安全相关的更新

(kayobe) $ kayobe seed host package update --packages "*" --security

请注意,这些命令不会影响安装在容器中的软件包,只会影响安装在主机上的软件包。

构建 Ironic 部署镜像

注意

可以使用预构建的部署镜像。在这种情况下,可以跳过此步骤。

可以从 OpenStack 托管的 tarballs 或另一个来源使用预构建的部署镜像。在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用下游版本的 Ironic Python Agent (IPA)。为了构建 IPA 镜像,应将 ipa_build_images 变量设置为 True。要本地构建镜像

(kayobe) $ kayobe seed deployment image build

要覆盖现有镜像,请添加 --force-rebuild 参数。

升级主机服务

可能需要升级一些主机服务

(kayobe) $ kayobe seed host upgrade

请注意,这不会执行主机的完全配置,而是会对必要的特定服务执行有针对性的升级。

构建容器镜像

注意

可以使用来自 Quay.io 等镜像仓库的预构建容器镜像。在这种情况下,可以跳过此步骤。

在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用下游版本的 kolla。要本地构建镜像

(kayobe) $ kayobe seed container image build

为了在构建后将镜像推送到仓库,请添加 --push 参数。

升级容器化服务

可以通过使用从仓库拉取或本地构建的更新镜像替换现有容器来升级容器化的 seed 服务。

要升级容器化的 seed 服务

(kayobe) $ kayobe seed service upgrade

升级 Overcloud

overcloud 服务分为两步进行升级。首先,应通过本地构建或从镜像仓库拉取来获取新的容器镜像。其次,应使用从新容器镜像创建的新容器替换 overcloud 服务。

升级主机软件包

在升级 OpenStack 控制平面之前,可能需要升级 overcloud 主机上的系统软件包。

要更新所有符合条件的软件包,请使用 *,必要时进行转义

(kayobe) $ kayobe overcloud host package update --packages "*"

要仅安装已被标记为安全相关的更新

(kayobe) $ kayobe overcloud host package update --packages "*" --security

请注意,这些命令不会影响安装在容器中的软件包,只会影响安装在主机上的软件包。

升级主机服务

在升级 OpenStack 控制平面之前,应升级 overcloud 主机服务

(kayobe) $ kayobe overcloud host upgrade

请注意,这不会执行主机的完全配置,而是会对必要的特定服务执行有针对性的升级。

构建 Ironic 部署镜像

注意

可以使用预构建的部署镜像。在这种情况下,可以跳过此步骤。

可以从 OpenStack 托管的 tarballs 或另一个来源使用预构建的部署镜像。在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用下游版本的 Ironic Python Agent (IPA)。为了构建 IPA 镜像,应将 ipa_build_images 变量设置为 True。要本地构建镜像

(kayobe) $ kayobe overcloud deployment image build

要覆盖现有镜像,请添加 --force-rebuild 参数。

升级 Ironic 部署镜像

在升级 OpenStack 控制平面之前,应升级部署镜像。如果您正在使用预构建的镜像,请相应地更新 etc/kayobe/ipa.yml 中的以下变量

  • ipa_kernel_upstream_url

  • ipa_kernel_checksum_url

  • ipa_kernel_checksum_algorithm

  • ipa_ramdisk_upstream_url

  • ipa_ramdisk_checksum_url

  • ipa_ramdisk_checksum_algorithm

或者,您可以更新 URL 指向的文件。如果本地构建镜像,请按照 构建 Ironic 部署镜像 中概述的过程进行操作。

要让 Ironic 使用更新的 overcloud 部署镜像集,可以运行

(kayobe) $ kayobe baremetal compute update deployment image

这将会在 Glance 中注册镜像并更新 Ironic 节点的 deploy_ramdiskdeploy_kernel 属性。

在将更新推广到所有节点之前,在有限的子集上测试镜像可能很有用。为此,可以使用 baremetal-compute-limit 选项。有关详细信息,请参阅 更新部署镜像

构建容器镜像

注意

可以使用来自 Quay.io 等镜像仓库的预构建容器镜像。在这种情况下,可以跳过此步骤。

在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用下游版本的 kolla。要本地构建镜像

(kayobe) $ kayobe overcloud container image build

可以通过提供一个或多个镜像名称正则表达式来构建特定的镜像集

(kayobe) $ kayobe overcloud container image build ironic- nova-api

为了在构建后将镜像推送到仓库,请添加 --push 参数。

拉取容器镜像

注意

可以使用本地构建容器镜像,避免使用 Quay.io 等镜像仓库。在这种情况下,可以跳过此步骤。

在大多数情况下,合适的预构建 kolla 镜像将在 Quay.io 上可用。 openstack.kolla 组织 提供了适合与 kayobe 配合使用的镜像仓库,并且默认情况下将使用它们。要从配置的镜像仓库拉取镜像

(kayobe) $ kayobe overcloud container image pull

保存 Overcloud 服务配置

通常,在重新配置或升级之前,为了检查或与另一个配置集进行比较,能够保存控制平面服务的配置非常有用。此命令将收集并保存所有主机的控制平面配置到 Ansible 控制主机

(kayobe) $ kayobe overcloud service configuration save

默认情况下,保存配置的位置是 $PWD/overcloud-config,但可以通过 output-dir 参数进行更改。要从默认目录 /etc/kolla 以外的目录收集配置,请使用 node-config-dir 参数。

生成 Overcloud 服务配置

在部署、重新配置或升级控制平面之前,生成将在运行的容器上应用但实际上不应用配置可能很有用。配置通常应生成在默认配置目录 /etc/kolla 以外的目录中,以避免覆盖活动配置

(kayobe) $ kayobe overcloud service configuration generate --node-config-dir /path/to/generated/config

配置将在指定的目录中在 overcloud 主机上远程生成,每个容器一个子目录。此命令可以后跟 kayobe overcloud service configuration save 以将生成的配置收集到 Ansible 控制主机。

升级容器化服务

可以通过使用从仓库拉取或本地构建的更新镜像替换现有容器来升级容器化的控制平面服务。

要升级容器化的控制平面服务

(kayobe) $ kayobe overcloud service upgrade

可以指定 Kayobe 和/或 kolla-ansible 的标签以限制升级范围

(kayobe) $ kayobe overcloud service upgrade --tags config --kolla-tags keystone