2025.1 系列发布说明

20.3.0-5

新特性

  • 添加了对 Rocky Linux 10 的支持,以及现有的 Rocky Linux 9 支持,以便在升级到 2025.2 (Flamingo) 或 2026.1 (Gazpacho) 之前进行操作系统迁移。

错误修复

  • 修复了一个问题,当 Memcached 节点之一不可用时,Horizon 返回 HTTP 500 错误,方法是将缓存后端中的 ignore_exc 设置为 TrueLP#2106557

20.3.0

新特性

  • OVN 容器镜像 (ovn-nb-dbovn-northdovn-sb-db) 现在默认具有环境变量,方便操作员运行 ovn-nbctlovn-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_serverletsencrypt_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-missingkolla-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_keyringceph_cinder_backup_keyringceph_glance_keyringceph_gnocchi_keyringceph_manila_keyringceph_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_failuresconnect_retries_delayconnect_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,因此不再需要授予其服务角色。 这会自动删除。 如果您已覆盖默认的角色分配列表,您也应进行此更改。

  • 已移除对部署 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-bifrostdeploy-servers 子命令以及 bifrost Ansible 角色已被弃用,转而支持使用 ironic Kolla 容器镜像的新的 ironic 独立部署,该部署将在 kolla-ansible 的下一个周期中实现。

  • 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 中的 etcd3gw backend_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_thresholdfluentd_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,用于指示客户端应该从哪里获取令牌以验证服务,已从内部身份端点切换到公共端点,请参阅 此说明