Operating Kolla

工具版本控制

Kolla 和 Kolla Ansible 使用 x.y.z 语义化版本控制 命名规范来命名版本,主版本号随着每个新系列(例如,Wallaby)的增加而增加。这些工具旨在分别构建和部署 OpenStack 服务在该系列中的 Docker 镜像。建议用户运行目标系列工具的最新版本,最好直接从 Git 仓库的相关分支安装,例如:

pip3 install --upgrade git+https://opendev.org/openstack/kolla-ansible@stable/2025.2

已部署镜像的版本

默认情况下,Kolla Ansible 将使用嵌入在内部配置 (openstack_release) 中的系列名称进行部署或升级,除非使用本地注册表和自定义版本控制策略(例如,当用户希望控制服务升级的时间和版本,可能按服务为基础,但这是一个高级用例场景),否则不建议修改此设置。

升级流程

注意

此流程用于从一个系列升级到另一个系列,而不是在系列内部进行更新。在系列内部,通常只需更新 kolla-ansible 包,重建(如果需要)并拉取镜像,然后再次运行 kolla-ansible deploy 即可。请遵循发行说明,以检查是否有需要注意的问题。

注意

如果您已将 enable_cells 设置为 yes,则应阅读 Nova cells 指南 中的升级说明。

Kolla 的升级策略是绝不造成混乱,并在部署过程中遵循一致的模式,以便从一个环境到下一个环境的升级易于自动化。

Kolla Ansible 实现了用于升级现有部署的单命令操作。

限制和建议

警告

请注意,不建议使用 ansible --limit 选项。原因是,已知它存在一些错误,例如在 升级 nova 的一部分 时。我们接受此问题的错误报告,并在已知问题时尝试修复。核心问题在于 register: 关键字的工作方式以及它与 --limit 选项的交互方式。您可以在上述错误报告中找到更多信息。

注意

请注意,当 use_preconfigured_databases 标志设置为 "yes" 时,您的数据库管理员需要在执行升级之前将 log_bin_trust_function_creators 设置为 1

注意

如果您为 nova 和 cinder 设置了单独的密钥,请确保在 /etc/kolla/globals.yml 中设置 ceph_nova_user: nova

准备工作(前言)

在准备升级计划并做出任何决定之前,请阅读您要升级到的系列的 发行说明,尤其是我们为您发布的 升级说明,以便您了解和注意。

在开始之前,备份您的配置。在操作员/部署节点上,将 config 目录(默认情况下为 /etc/kolla)的内容复制到备份位置(或使用版本控制工具,如 git,以安全地保存配置的先前版本)。

准备工作(真正的操作)

首先,升级 kolla-ansible

pip3 install --upgrade git+https://opendev.org/openstack/kolla-ansible@stable/2025.2

注意

如果您是从 Git 仓库运行,则只需签出所需的分支并运行 pip3 install --upgrade,并指定仓库目录。

如果执行跳级(SLURP)升级,请更新 ansibleansible-core 到您要升级到的版本支持的版本。

pip3 install --upgrade 'ansible-core>=2.18,<2.19.99'

如果升级到 Yoga 版本或更高版本,请安装或升级 Ansible Galaxy 依赖项

kolla-ansible install-deps

部署的 inventory 文件应更新,因为较新的示例 inventory 文件可能具有更新的布局或其他相关更改。 diff 工具(或类似工具)是这项任务的朋友。如果使用虚拟环境,示例 inventory 文件位于 /path/to/venv/share/kolla-ansible/ansible/inventory/,否则它们很可能位于 /usr/local/share/kolla-ansible/ansible/inventory/

可能需要手动更新的其他文件是

  • /etc/kolla/globals.yml

  • /etc/kolla/passwords.yml

对于 globals.yml,最好遵循上述发行说明。对于 passwords.yml,需要使用 kolla-mergepwdkolla-genpwd 工具。

kolla-mergepwd --old OLD_PASSWDS --new NEW_PASSWDS --final FINAL_PASSWDS 用于合并来自旧安装的密码和新生成的密码。工作流程是

  1. /etc/kolla/passwords.yml 中的旧密码保存到 passwords.yml.old

  2. 通过 kolla-genpwd 生成新密码,作为 passwords.yml.new

  3. passwords.yml.oldpasswords.yml.new 合并到 /etc/kolla/passwords.yml

例如

cp /etc/kolla/passwords.yml passwords.yml.old
cp kolla-ansible/etc/kolla/passwords.yml passwords.yml.new
kolla-genpwd -p passwords.yml.new
kolla-mergepwd --old passwords.yml.old --new passwords.yml.new --final /etc/kolla/passwords.yml

注意

kolla-mergepwd 默认情况下会保留旧的、未使用的密码。要更改此行为并删除这些条目,请在调用 kolla-mergepwd 时使用 --clean 参数。

运行以下命令以在新主机上拉取新镜像

kolla-ansible pull

还建议运行预检查以识别潜在的配置问题

kolla-ansible prechecks

在方便的时间,现在可以运行升级。

SLURP 额外准备

RabbitMQ 每年发布两个主要版本,但不支持在一个升级中跳过两个版本。因此,如果您想执行跳级升级,则必须首先将 RabbitMQ 升级到中间版本。请参阅 RabbitMQ SLURP 部分 以获取详细信息。

执行升级

要执行升级

kolla-ansible upgrade

完成此命令后,将从新镜像重新创建容器,并为您执行所有数据库模式升级和类似操作。

CLI 命令补全

Kolla Ansible 支持 shell 命令补全,以使 CLI 更易于使用。

要启用 Bash 补全,请生成补全脚本

kolla-ansible complete --shell bash > ~/.kolla_ansible_completion.sh

然后,将以下行添加到您的 ~/.bashrc 文件中

source ~/.kolla_ansible_completion.sh

最后,重新加载您的 shell 配置

source ~/.bashrc

注意

如果您使用的是 Bash 以外的 shell,请将 --shell bash 替换为您的 shell 类型,例如 zsh,并相应地调整 shell 的配置文件。

技巧和窍门

Kolla Ansible CLI

kolla-ansible deploy -i INVENTORY 用于部署和启动所有 Kolla 容器。

kolla-ansible destroy -i INVENTORY 用于清理集群中的容器和卷。

kolla-ansible mariadb_recovery -i INVENTORY 用于恢复完全停止的 mariadb 集群。

kolla-ansible prechecks -i INVENTORY 用于检查在部署每个 OpenStack 服务之前是否满足所有要求。

kolla-ansible post-deploy -i INVENTORY 用于在部署节点上进行部署后操作,以获取管理员 openrc 文件。

kolla-ansible pull -i INVENTORY 用于拉取容器的所有镜像。

kolla-ansible reconfigure -i INVENTORY 用于重新配置 OpenStack 服务。

kolla-ansible upgrade -i INVENTORY 用于升级现有的 OpenStack 环境。

kolla-ansible stop -i INVENTORY 用于停止正在运行的容器。

kolla-ansible deploy-containers -i INVENTORY 用于检查并在必要时更新容器,而不生成配置。

kolla-ansible prune-images -i INVENTORY 用于清理主机上的孤立 Docker 镜像。

kolla-ansible genconfig -i INVENTORY 用于生成已启用 OpenStack 服务的配置文件,而不立即重启容器,因此不会立即应用。

kolla-ansible validate-config -i INVENTORY 用于验证已启用 OpenStack 服务的生成的配置文件。默认情况下,当检测到问题时,结果会保存到 /var/log/kolla/config-validate

kolla-ansible ... -i INVENTORY1 -i INVENTORY2 可以通过多次传递 --inventory-i 命令行选项来指定多个 inventory。这对于在多个环境之间共享配置非常有用。任何公共配置都可以在 INVENTORY1 中设置,而 INVENTORY2 可用于设置特定于环境的详细信息。

kolla-ansible gather-facts -i INVENTORY 用于收集 Ansible facts,例如填充 fact 缓存。

使用 Hashicorp Vault 进行密码存储

Hashicorp Vault 可以用作 Kolla Ansible 生成的密码的 Ansible Vault 的替代品。要将 Hashicorp Vault 用作密钥存储,您首先需要生成密码,然后可以将它们保存到现有的 KV 中,使用以下命令

kolla-writepwd \
--passwords /etc/kolla/passwords.yml \
--vault-addr <VAULT_ADDRESS> \
--vault-token <VAULT_TOKEN>

注意

有关 kolla-writepwd 参数的完整列表,请在调用 kolla-writepwd 时使用 --help 参数。

要从 Hashicorp Vault 读取密码并生成 passwords.yml

mv kolla-ansible/etc/kolla/passwords.yml /etc/kolla/passwords.yml
kolla-readpwd \
--passwords /etc/kolla/passwords.yml \
--vault-addr <VAULT_ADDRESS> \
--vault-token <VAULT_TOKEN>

工具

Kolla 附带了几个旨在促进易于操作的实用工具。

tools/cleanup-containers 用于从系统中删除已部署的容器。当您想要执行新的干净部署时,这非常有用。它将保留注册表和注册表中本地构建的镜像,但会从本地 Docker 守护程序中删除所有正在运行的 Kolla 容器。它还会删除命名的卷。

tools/cleanup-host 用于删除在启动 neutron-agents 容器时在 Docker 主机上触发的网络更改的残留物。当您想要执行新的干净部署时,特别是更改网络拓扑的部署时,这非常有用。

tools/cleanup-images --all 用于从本地 Docker 缓存中移除 Kolla 构建的所有 Docker 镜像。