2025.1 系列发布说明¶
20.3.0-5¶
新特性¶
添加了对
Rocky Linux 10的支持,以及现有的Rocky Linux 9支持,以便在升级到 2025.2 (Flamingo) 或 2026.1 (Gazpacho) 之前进行操作系统迁移。
错误修复¶
修复了一个问题,当 Memcached 节点之一不可用时,Horizon 返回 HTTP 500 错误,方法是将缓存后端中的
ignore_exc设置为True。 LP#2106557
20.3.0¶
新特性¶
OVN 容器镜像 (
ovn-nb-db、ovn-northd和ovn-sb-db) 现在默认具有环境变量,方便操作员运行ovn-nbctl和ovn-sbctl命令。
升级说明¶
已移除对 Linux Bridge 机制驱动程序的支持。该驱动程序已从 neutron 中移除。
错误修复¶
修复了一个问题,如果定义了 vendordata.json,它没有被复制到 nova-metadata 目录。 LP#2111328
修复了 Let’s Encrypt 角色中证书脚本的渲染问题。 LP#2115230
已移除触发 nova_libvirt 和 ovn_sb_db_relay 容器重启的处理程序,这些服务的重启现在由 service-check-containers 角色控制 LP#2123946。
修复了一个问题,导致 etcd 后端 TLS 证书未被模板化,因为
kolla_copy_backend_tls_files变量由于etcd_enable_tls_backend变量未定义而评估为 false。
移除文档中对 EXTRA_OPTS 的引用。
修复了一个问题,当尝试通过 Horizon 用户界面上传图像时,CORS 可能会被阻止。
添加了对
octavia_notification_topics的缺失覆盖,以便操作员可以为 Octavia 添加自己的通知主题。默认情况下,当启用 ceilometer 时,它会将通知发送到 ceilometer。
20.2.0¶
升级说明¶
使用基于文件的外部证书和 Let’s Encrypt 用于内部证书(单独的 VIP)的部署默认使用 Let’s Encrypt 管理外部证书。要保留基于文件的外部证书,请设置
letsencrypt_external_cert_server: ""。
安全问题¶
通过单个前端拒绝访问 /server-status。 LP#2121626
错误修复¶
修复了错误 LP#2118452,该错误阻止了 RabbitMQ 从版本 3.13 升级到 4.1,即使它受支持。
在 kolla-toolbox 配置中使用外部 rabbitmq 时,会生成一个不必要的“逗号”,导致容器无法启动。 LP#2111267
修复了当网络节点与控制器分离时后端 TLS 配置的问题。 LP#2117084
修复了一个错误,由于使用了无效的选项,Nova 使用的 Cinder 端点没有被覆盖。 LP#2115064
修复了当在
wsgi-keystone.conf中将选项OIDCXForwardedHeaders设置为空字符串时,Keystone 无法启动的错误。 LP#2119344
修复了 RabbitMQ 版本检查,该检查总是会被跳过。 LP#2102662
修复了一个错误,K-A 可能会因为尝试将某些主机的后端 TLS 证书复制到容器而导致服务部署失败,而这些主机和容器都不属于后端 TLS,并且没有要复制的证书。
防止在
nova_libvirt容器镜像部署和升级期间发生意外的libvirt降级。添加了一个nova_libvirt版本检查,该检查在第一个计算主机上一次性解析目标镜像摘要,并且仅在运行的容器摘要与目标不同的超维服务器上运行。
恢复默认的 Let’s Encrypt ACME 服务器用于外部证书,以便启用
enable_letsencrypt再次开箱即用,而无需显式设置letsencrypt_external_cert_server。默认值为https://acme-v02.api.letsencrypt.org/directory。
20.1.0¶
新特性¶
bootstrap-servers现在始终使用系统 Python 解释器通过auto_silent自动检测。octavia-certificates现在使用与运行kolla-ansible命令的 Python 解释器相同的 Python 解释器。
错误修复¶
修复了
ovs-dpdk角色中处理程序调用失败的问题。 LP#2088197
允许操作员在
node_config可写时,无需在部署节点上提升权限即可运行kolla-ansible post-deploy。
20.0.0¶
新特性¶
添加了对 Let’s Encrypt 中外部帐户绑定 (EAB) 的支持。
添加 Lightbits (NVMe/TCP) Cinder 插件支持。
添加了对使用 oslo.messaging 队列管理器来使用 RabbitMQ 的所有服务的支持。默认情况下已启用此功能。
将
venus-dashboard部署添加到horizon角色。
实现了为 kolla 卷分配标签。Kolla 卷没有分配任何标签,这使得识别和过滤 kolla 特定卷变得困难。此功能在 podman 迁移中很有用,并允许更轻松的卷管理,例如销毁卷。 LP#1630545 <https://bugs.launchpad.net/kolla-ansible/+bug/1630545>
添加了要在 letsencrypt 角色中使用的新的变量,
letsencrypt_external_cert_server和letsencrypt_internal_cert_server,它允许配置用于内部、外部证书生成的 ACME 服务器。
添加了对 Cinder Ceph 后端的
volume_backend_name的显式设置的支持,通过cinder_ceph_backends字典配置中的新变量backend_name。
性能:不要在配置期间通知处理程序
此补丁基于 genconfig 优化,并进一步通过永远不让 genconfig 接触处理程序来优化它!调用处理程序并跳过它们在仅运行配置时造成了不必要的缓慢。它还依赖于配置检查修复。
这使我们更接近单一职责原则 - 配置仅生成配置,容器检查仅验证是否需要容器重启。
并且这也意味着我们将拥有一个重启容器的单一位置,我们可以在以下补丁中修复 Ansible 的怪癖,即使一个容器发生更改,也会重启整个组。
唯一的例外是负载均衡角色。由于负载均衡器服务通过 loadbalancer-config 注册其服务来更改其配置。这与典型的角色相反,后者一步完成配置,然后在下一步中运行 check-containers。
现在可以使用自定义
cron-logrotate-global.conf文件。
添加了一个新的变量,
kolla_ansible_delegate_facts_hosts,可用于控制在使用--limit时需要 facts 的主机。其默认值为groups['all']。
使用
enable_ironic_dnsmasq参数可以显式禁用 ironic-dnsmasq 服务。默认情况下,该参数设置为enable_ironic的值。
使用 quorum 队列用于 RabbitMQ 中的瞬态/扇出队列。这有助于 OpenStack 服务更能抵抗消息代理故障。默认情况下已启用此功能。另请参阅 LP#2078339。
通过允许显式配置用户、池和集群名称,遵循官方 Ceph keyring 格式
$cluster.client.$user.keyring,改进了 Kolla-Ansible 中多个 Ceph 集群的处理。
为 HA Proxy 实现第 7 层健康检查。这应该可以修复在某些情况下将流量发送到不健康的服务器的问题。添加了 Prometheus
haproxy用户来处理经过身份验证的 l7 健康检查。
kolla-ansible install-deps子命令现在将在 Ansible Galaxy 集合安装失败时重试。
添加了标志
--ignore-missing到kolla-ansible stop,以避免在容器不存在时失败。
将动作移动到 kolla_container_facts 负责容器信息的动作已从 kolla_container 模块移动到 kolla_container_facts。
将
nova-metadata服务拆分为一个单独的容器,为 uWSGI 支持做准备。
添加了对部署
ovn-sb-db-relay的支持。默认情况下,Kolla 会根据ovn-controller组的大小和ovn_sb_db_relay_compute_per_relay(默认为 50) 的值自动计算中继组的数量,并向上取整。如果您不想使用中继,请在globals.yml中将enable_ovn_sb_db_relay设置为no。
添加了对覆盖 Prometheus 服务器用于从导出器收集指标的 IP 地址的支持。这是通过指定主机变量
prometheus_target_address来完成的。
生成一个系统范围的
public-openrc-system.sh文件。这允许针对公共 API 运行 Ironic 命令,当无法访问内部 API 时很有用。 LP#2051837
[Pure Storage - FlashBlade] 添加对 Pure Storage FlashBlade Manila NFS 驱动程序的支持。
现在,您可以启用 RabbitMQ 中所有扇出队列的流队列的使用,方法是将
om_enable_rabbitmq_stream_fanout设置为true。
重构服务 check-containers 并优化
这可能会修复一些隐藏的错误,其中检查任务忘记包含对服务重要的参数。
我们还通过使用过滤循环而不是对每个服务使用“when”跳过任务来获得很好的优化。如 https://review.opendev.org/c/openstack/kolla-ansible/+/914997 所示
这种重构允许进行进一步的优化和修复工作,而无需过多麻烦。包括消除许多通知语句,因为重启现在由 check-containers 安全处理。一些通知必须保留,因为存在特殊边缘情况,例如滚动升级和负载均衡器配置。
一个缺点是,我们删除了 Zun 的一个小优化,该优化忽略了复制循环的配置更改,但考虑到上述好处,这是一个可以接受的权衡。
重新引入 kolla-ansible check。这允许操作员通过运行 kolla-ansible check 快速诊断所有主机上的所有容器。它返回一个列表,其中包含每个 OpenStack 服务中缺失、未运行或处于不健康状态的容器。 蓝图 check-containers
引入了
service-uwsgi-config角色来配置 uWSGI。
设置 Skyline 以在仪表板中显示来自外部对象存储的资源。如果您运行外部 Swift 兼容对象存储,则必须告知 Skyline,因为它无法使用 Keystone 的端点 API 在运行时确定这一点。有关详细信息,请参阅 参考文档。
用户角色分配现在可以自定义域和系统范围。
将 Prometheus 版本更新到 v3.2.1。
添加了对使用 uWSGI(不使用 Apache+mod_wsgi)运行以下服务的支持,默认情况下已启用。要禁用它,请将 <service>_wsgi_provider 设置为
apache(默认值为uwsgi)服务
变量
Cinder
cinder_wsgi_provider
Nova
nova_wsgi_provider
放置
placement_wsgi_provider
升级说明¶
添加了对使用 oslo.messaging 队列管理器来使用 RabbitMQ 的所有服务的支持。默认情况下已启用此功能。
支持的 Ansible 最低版本现在是
10(ansible-core 2.17) 和支持的最高版本是11(ansible-core 2.18)。Ansible Collections 现在下载到支持的最新版本。
先前使用 letsencrypt 角色进行外部证书生成的用户需要迁移以前的默认值(或其覆盖值)变量
letsencrypt_cert_server并将其设置为letsencrypt_external_cert_server。默认值为https://acme-v02.api.letsencrypt.org/directory
已在服务目录中添加一个新的 Cinder 端点,类型为
block-storage,与 服务类型权威机构 中首选的定义相匹配。旧的cinderv3/volumev3端点已被弃用,将来将被删除,请相应地更新您的客户端。
enable_ironic_inspector默认设置为no,因为 Ironic Inspector 项目已弃用(并计划删除)。
变量
ceph_cinder_keyring、ceph_cinder_backup_keyring、ceph_glance_keyring、ceph_gnocchi_keyring、ceph_manila_keyring和ceph_nova_keyring已被移除,其值现在会自动从可配置的 Ceph 用户中推导。 依赖于完全不同的密钥环或自定义用户配置的用户应确保其设置与新的约定正确对齐,具体请参阅 文档。
服务用户
ironic-inspector现在被分配了系统范围all。 如果您已覆盖默认的角色分配列表,您也应进行此更改。
通过以下方式改进了 Ironic 的 pin_release_version 设置的配置:
删除了变量
openstack_previous_release_name并将其替换为ironic_pin_release_version默认情况下使该设置变为可选
添加了适当的文档,解释何时使用此设置
有关 pin_release_version 的更多详细信息,请参阅 文档。
变量
enable_ironic_neutron_agent的默认值已更改为no。 需要手动删除ironic_neutron_agent容器和在openstack network agent list命令输出中可见的代理。
升级时,新的
ovn-sb-db-relay容器会自动部署,除非您显式将enable_ovn_sb_db_relay设置为no。 启用ovn-sb-db-relay不需要特殊的数据迁移或手动步骤;它与现有的 OVN SB DB 集群共存。
以下
proxysql变量已恢复到上游默认值(除非使用 Ansible 变量覆盖)。 对于shun_on_failures、connect_retries_delay和connect_retries_on_failure,我们仍然为一体化部署提供自己的默认值 - 但在多节点部署中依赖上游。变量名称
Kolla-Ansible 默认值
ProxySQL(上游)默认值
connect_retries_delay
1000 (aio) / 1
1
connect_retries_on_failure
20 (aio) / 10
10
connect_timeout_client
100000
10000
connect_timeout_server
30000
1000
connect_timeout_server_max
100000
10000
monitor_connect_timeout
6000
1000
monitor_galera_healthcheck_interval
4000
5000
monitor_galera_healthcheck_max_timeout_count
2
3
monitor_galera_healthcheck_timeout
1000
800
monitor_ping_interval
3000
8000
monitor_ping_timeout
2000
1000
monitor_ping_max_failures
2
3
shun_on_failures
10 (aio) / 5
5
RabbitMQ 中的流扇出队列(由
om_enable_rabbitmq_stream_fanout变量控制)默认情况下已启用。
现在我们为 ironic inspector 服务用户赋予系统范围
all,因此不再需要授予其服务角色。 这会自动删除。 如果您已覆盖默认的角色分配列表,您也应进行此更改。
移除了选项
om_enable_rabbitmq_high_availability。 如果您尚未迁移到仲裁队列,则需要这样做。 请参阅文档:https://docs.openstack.org/kolla-ansible/2025.2/reference/message-queues/rabbitmq.html#high-availability
已移除对部署
Swift的支持。
移除了对 Ubuntu 22.04 (Jammy) 作为宿主机操作系统的支持。
Prometheus 将从 v2 升级到 v3 - 这会引入一些小的破坏性更改。 在尝试升级之前,请确保正在运行版本 2.5.5 或更高版本。 请阅读官方迁移指南以获取更多详细信息:https://prometheus.ac.cn/docs/prometheus/3.0/migration/。 容器名称和卷名称改回为
prometheus_server。 升级将保留来自prometheus_v2卷的旧数据,但如果操作员自定义了卷名称,则会将其保留。
弃用说明¶
kolla-ansible deploy-bifrost和deploy-servers子命令以及bifrostAnsible 角色已被弃用,转而支持使用ironicKolla 容器镜像的新的ironic独立部署,该部署将在kolla-ansible的下一个周期中实现。
ironic-inspector部署已被弃用,一旦 Ironic 中的实现达到功能对等,将被移除。 请参阅 Ironic Inspector 弃用通知
swift部署支持已被弃用,计划在2025.2中移除,原因是 CI 失败且没有志愿者来维护此角色。
错误修复¶
添加了一个选项来在 keystone 中设置 OIDCX 转发标头。 当 keystone 位于代理服务器之后,并且代理服务器正在向请求添加标头时,这很有用。 新选项是
keystone_federation_oidc_forwarded_headers。 默认值为为空,以保留当前行为。 LP#2080402
修复了 Ansible 处理程序的不必要的触发。 由于 Ansible 的一个特性,当一个组中的一个容器发生更改时,该组中的所有容器都会重新启动。 这可能会导致某些服务出现问题。 LP#1863510
实现了
neutron_agents_wrappers,可用于克服neutron-l3-agent/neutron-dhcp-agent重新启动导致的数据平面中断。 Neutron 代理在其实现中使用了诸如 dnsmasq 和 keepalived 之类的子进程。 将这些“子进程”运行在单独的容器中可以防止数据平面中断/代理容器重新启动时发生不必要的故障转移。 可以通过将neutron_agents_wrappers设置为yes来启用此新行为。 LP#1891469
修复了 fluentd 解析器在 Python 跟踪信息上失败的情况。 OpenStack 服务正则表达式已重新设计,以包含 global_request_id 并处理带有 Python 跟踪信息的情况。 LP#2044370
修复了在启用 Let’s encrypt 时复制自定义证书的问题。 LP#2076331
修复了 proxysql-config 的 TLS DB 配置。 LP#2086466
修复了 main.yaml 文件中
rabbitmq_enable_tls变量不是布尔类型的问题。 LP#2093335
修复了 Apache 和 placement 写入相同日志文件的问题。 Apache placement VirtualHost ErrorLog 已重命名为
placement-api-error.log(与其他服务类似)。 LP#[2095607]
修复了使用多个 OVN 可用区的问题。 使用正确的分隔符在 neutron OVN 可用区列表中。 LP#[2097292]
修复了 Redis Sentinel 配置,以确保 Octavia jobboard 的正确高可用性功能。 LP#2100927
在 ElasticSearch/OpenSearch Fluentd 输出插件中设置 retry_tag。 这是为了防止日志消息被非幂等的 Fluentd 管道配置重新处理。 请参阅 LP#2064104
修复了一些缺少必要保护的处理器,从而使 genconfig 实际上能够重新启动一些容器。
修复了在复制证书期间产生的不必要的重新启动。 通过删除 #745164 中的条件语句,复制证书导致容器重新启动,这在 genconfig 过程中是不希望发生的。 但是,如果我们删除处理程序通知程序,容器将永远不会重新启动,因为从 #745164 可以看出,只有 config.json 中指定的文件发生更改时,容器才会重新启动。 因此,这会将证书文件夹添加到容器的 config.json 文件中。 证书复制到容器内的中间位置,然后脚本 kolla_copy_cacerts 会将其安装到系统的信任存储中。
修复了外部 ceph cinder 密钥环未导入 libvirt 的问题(如果模板化)。 目前,ansible/roles/nova-cell/tasks/external_ceph.yml 将 cinder_cephx_raw_key 作为文件从 cinder_cephx_keyring_file.stat.path 查找。 为了允许模板化的 cinderkeyrings,查找已更改为“template”。 修复了 LP#2089229
修复了
prometheus.yml.j2模板中匹配 blackbox exporter 目标的正则表达式过于严格的问题。 以前我们使用\w,它不允许名称带有句点或连字符。 服务和模块标签现在可以包含除冒号以外的所有字符。
修复了一个问题,当设置
openstack_cacert时,cinder.conf 中的 etcd3gwbackend_url将无效。 LP#2085908
修复了 cyborg 部署,缺少配置 haproxy 侦听器的变量。 LP#2020088
修复了一个问题,即使 nova_backend 不是“rbd”且 cinder_backend_ceph 为 False,Nova 和 Cinder 的 Ceph secret XML 始终会被推送到主机。
修复了一个问题,prometheus-cadvisor、prometheus-elasticsearch-exporter、prometheus-memcached-exporter、prometheus-node-exporter 无法启动,因为 config.json 的模板错误。 LP#2104253
修复了一个问题,fluentd(以及“common”服务中的其余服务)会在从不同位置调用 kolla-ansible 时重新启动。 LP#2091703
减小 fluentd 缓冲区的大小,以避免在将日志发送到 opensearch/elasticsearch 时出现 HTTP 413 错误。 所选值基于看似合理的大小。 可以通过编辑
fluentd_bulk_message_request_threshold和fluentd_buffer_chunk_limit_size变量来自定义这些值。 LP#2079988
服务用户
ironic-inspector现在被分配了系统范围all。 这使其能够在节点检查期间再次创建裸机端口。 LP#2064655
通过删除硬编码的版本号修复了 Grafana 数据源更新的问题。 这可确保正确配置数据源更新。 LP#[2096664]
修复了当外部 TLS 未启用时,haproxy 不会复制 external-frontend-map 文件的问题。 删除了阻止 external-frontend-map 文件在未启用外部 TLS 时复制到 haproxy 容器中的 <if> 条件。 LP#2098765
修复了
heat-cfn(CloudFormation)服务的内部端点。 LP#2087537
修复了 kolla_container_facts 中 docker 和 podman 实现之间存在的不一致之处。
移除了 Nova 配置选项
[api] use_forwarded_for。 此选项已在 Nova 2024.1 版本中删除。
正确格式化 prometheus-libvirt-exporter 和 Fluentd Prometheus 导出器 IPv6 侦听地址。
修复了 LP#2096659
添加了一个检查,以防止部署/升级 RabbitMQ 容器导致 RabbitMQ 版本的降级。
修复了一个问题,RabbitMQ 版本检查由于缺少身份验证而无法拉取新镜像。 LP#2086171
其他说明¶
现在可以通过设置选项
state: absent来移除服务和端点。
现在可以通过设置选项
state: absent来移除服务用户角色分配。
参数 www_authenticate_uri,用于指示客户端应该从哪里获取令牌以验证服务,已从内部身份端点切换到公共端点,请参阅 此说明。