Kolla 配置¶
使用 Kayobe 构建镜像的任何人应熟悉 Kolla 项目的文档。
容器镜像构建主机¶
镜像是在 container-image-builders 组中的主机上构建的。默认的 Kayobe Ansible 库存将种子主机放在此组中,尽管可以通过修改库存将不同的主机放在该组中。
例如,要在 localhost 上构建镜像
inventory/groups¶[container-image-builders:children]
inventory/hosts¶[container-image-builders]
localhost
Kolla 安装¶
在构建容器镜像之前,Kolla 及其依赖项将安装在容器镜像构建主机上。以下变量会影响 Kolla 的安装
kolla_ctl_install_type安装类型,可以是
binary(PyPI) 或source(git)。默认值为source。kolla_source_pathKolla 源代码检出目录的路径。默认值为
{{ source_checkout_path ~ '/kolla' }}。kolla_source_url如果类型为
source,则 Kolla 源代码仓库的 URL。默认值为 https://opendev.org/openstack/kolla。kolla_source_version如果类型为
source,则 Kolla 源代码仓库的版本(分支、标签等)。默认值为{{ openstack_branch }},与 Kayobe 上游分支名称相同。kolla_venv在容器镜像构建主机上安装 Kolla 的虚拟环境的路径。默认值为
{{ virtualenv_path ~ '/kolla' }}。kolla_build_config_path生成 kolla 配置的路径。默认值为
{{ config_path ~ '/kolla' }}。
例如,要从自定义 Git 仓库安装
kolla.yml¶kolla_source_url: https://git.example.com/kolla
kolla_source_version: downstream
全局配置¶
以下变量是全局变量,会影响所有容器镜像。它们用于生成 Kolla 配置文件 kolla-build.conf,并影响 Kolla Ansible 配置。
kolla_base_archKolla 基本容器镜像架构。选项为
x86_64、aarch64。默认值为{{ ansible_facts.architecture }}。kolla_base_distroKolla 基本容器镜像发行版。选项为
centos、debian、rocky或ubuntu。默认值为{{ os_distribution }}。kolla_base_distro_versionKolla 基本容器镜像发行版版本。默认值取决于
kolla_base_distro。kolla_docker_namespace用于 Kolla 镜像的 Docker 命名空间。默认值为
kolla。kolla_docker_registry用于 Kolla 镜像的 Docker 仓库的 URL。默认值是使用
docker_registry或podman_registry的值,具体取决于container_engine的值(请参阅 容器引擎)。kolla_docker_registry_username用于访问 Docker 仓库的用户名。默认值未设置,在这种情况下,仓库将未经身份验证使用。
kolla_docker_registry_password用于访问 Docker 仓库的密码。默认值未设置,在这种情况下,仓库将未经身份验证使用。
kolla_openstack_releaseKolla OpenStack 发布版本。这应该是一个 Docker 镜像标签。默认值是稳定分支和已标记发布版本上的 OpenStack 发布名称(例如
rocky),或者 Kayobemaster分支上的master。kolla_tagKolla 容器镜像标签。这是将应用于构建的容器镜像的标签。默认值为
kolla_openstack_release。
例如,要使用命名空间 example 和位于 registry.example.com:4000 的私有 Docker 仓库构建 Kolla rocky 镜像,并使用 zed 发布版
kolla.yml¶kolla_base_distro: rocky
kolla_docker_namespace: example
kolla_docker_registry: registry.example.com:4000
kolla_openstack_release: zed
使用此配置构建的 ironic-api 镜像将如下所示:
registry.example.com:4000/example/ironic-api:zed-rocky-9
可以通过编写位于 ${KAYOBE_CONFIG_PATH/kolla/kolla-build.conf 的文件进一步自定义 Kolla 配置文件。例如,要启用调试日志记录
kolla/kolla-build.conf¶[DEFAULT]
debug = True
种子镜像¶
kayobe seed container image build 命令构建种子服务的镜像。种子服务所需的唯一镜像为 bifrost-deploy 镜像。
Overcloud 镜像¶
kayobe overcloud container image build 命令构建控制平面的镜像。构建的默认镜像集取决于通过 kolla.yml 中的 kolla_enable_<service> 标志启用的哪些服务和功能。
例如,以下配置将启用 Magnum 服务,并将 magnum-api 和 magnum-conductor 容器添加到将要构建的 overcloud 镜像集中
kolla.yml¶kolla_enable_magnum: true
如果设置了相应的标志,但未构建所需的镜像,请检查在 ansible/inventory/group_vars/all/kolla 中的 overcloud_container_image_sets 中定义的镜像集。
镜像自定义¶
有三种主要方法来自定义 Kolla 容器镜像
覆盖 Jinja2 块
覆盖 Jinja2 变量
源代码位置
覆盖 Jinja2 块¶
Kolla 的镜像通过生成 Dockerfile 的 Jinja2 模板定义。Jinja2 块经常用于允许替换一个或多个 Dockerfile 中的特定语句。有关详细信息,请参阅 Kolla 文档。
块通过 kolla_build_blocks 变量配置,该变量是映射 Jinja2 块名称到其内容的字典。
例如,要覆盖块 header 以向每个镜像添加自定义标签
kolla.yml¶kolla_build_blocks:
header: |
LABEL foo="bar"
这将导致 Kayobe 生成一个内容如下的 template-override.j2 文件
template-override.j2¶{% extends parent_template %}
{% block header %}
LABEL foo="bar"
{% endblock %}
覆盖 Jinja2 变量¶
Jinja2 变量提供了自定义镜像的另一种方法。有关详细信息,请参阅 Kolla 文档,了解使用变量覆盖来修改镜像中要安装的软件包列表。
变量覆盖通过 kolla_build_customizations 变量配置,该变量是将要覆盖的变量名称映射到其值的字典/映射。
例如,要将 mod_auth_openidc 添加到安装在 keystone-base 镜像中的软件包列表中,我们可以将变量 keystone_base_packages_append 设置为包含 mod_auth_openidc 的列表。
kolla.yml¶kolla_build_customizations:
keystone_base_packages_append:
- mod_auth_openidc
这将导致 Kayobe 生成一个内容如下的 template-override.j2 文件
template-override.j2¶{% extends parent_template %}
{% set keystone_base_packages_append = ["mod_auth_openidc"] %}
请注意,变量值将在 template-override.j2 中以 JSON 编码。
源代码位置¶
对于 source 镜像构建,可以通过 kolla_sources 变量配置 Kolla 在容器中安装的软件包的源代码位置。格式是将源名称映射到其定义的字典/映射。有关详细信息,请参阅 Kolla 文档。默认值是指定 Bifrost 的 URL 和版本,如在 ${KAYOBE_CONFIG_PATH}/bifrost.yml 中定义的那样。
例如,要为 ironic-base 软件包指定自定义源位置
kolla.yml¶kolla_sources:
bifrost-base:
type: "git"
location: "{{ kolla_bifrost_source_url }}"
reference: "{{ kolla_bifrost_source_version }}"
ironic-base:
type: "git"
location: https://git.example.com/ironic
reference: downstream
这将导致 Kayobe 将以下配置添加到 kolla-build.conf
kolla-build.conf¶[bifrost-base]
type = git
location = https://opendev.org/openstack/bifrost
reference = stable/rocky
[ironic-base]
type = git
location = https://git.example.com/ironic
reference = downstream
请注意,如果使用种子,目前需要包含 Bifrost 源位置。
插件和附加组件¶
这些功能也可用于在 source 类型镜像中安装 插件 和 附加组件。
例如,要在 neutron-server 镜像中安装 networking-ansible 插件
kolla.yml¶kolla_sources:
bifrost-base:
type: "git"
location: "{{ kolla_bifrost_source_url }}"
reference: "{{ kolla_bifrost_source_version }}"
neutron-server-plugin-networking-ansible:
type: "git"
location: https://git.example.com/networking-ansible
reference: downstream
neutron-server 镜像会自动安装提供给它的任何插件。对于不安装的镜像,可能需要如下块
kolla.yml¶kolla_build_blocks:
neutron_server_footer: |
ADD plugins-archive /
pip --no-cache-dir install /plugins/*
可以使用类似的方法进行附加组件。