27.2. 为 overcloud 固定容器镜像

在某些情况下,您可能需要 overcloud 的一组特定容器镜像版本。在这种情况下,您必须将镜像固定到特定的版本。若要固定镜像,您必须创建 containers-prepare-parameter.yaml 文件,使用此文件将容器镜像拉取到 undercloud registry,并生成包含固定镜像列表的环境文件。

例如,containers-prepare-parameter.yaml 文件可能包含以下内容:

parameter_defaults:
  ContainerImagePrepare:
    - push_destination: true
      set:
        name_prefix: openstack-
        name_suffix: ''
        namespace: registry.redhat.io/rhosp-rhel8
        neutron_driver: ovn
      tag_from_label: '{version}-{release}'

  ContainerImageRegistryCredentials:
    registry.redhat.io:
      myuser: 'p@55w0rd!'

ContainerImagePrepare 参数包含单个规则 set。此规则 set 不得包含 tag 参数,且必须依赖 tag_from_label 参数来标识每个容器镜像的最新版本和发行版本。director 使用此规则 set 来标识每个容器镜像的最新版本,拉取每个镜像,并在 director 中的容器 registry 上标记每个镜像。

步骤

  1. 运行 openstack tripleo container image prepare 命令,该命令从 containers-prepare-parameter.yaml 文件中定义的源中拉取所有镜像。包含 --output-env-file 以指定将包含固定容器镜像列表的输出文件:

    $ sudo openstack tripleo container image prepare -e /home/stack/templates/containers-prepare-parameter.yaml --output-env-file overcloud-images.yaml

    overcloud-images.yaml 文件是一个环境文件,包含服务参数到容器镜像映射。例如,OpenStack Identity (keystone) 使用 ContainerKeystoneImage 参数来定义其容器镜像:

    ContainerKeystoneImage: undercloud.ctlplane.localdomain:8787/rhosp-rhel8/openstack-keystone:16.2.4-5

    请注意,容器镜像标签与 {version}-{release} 格式匹配。

  2. 在运行 openstack overcloud deploy 命令时,以特定顺序将 containers-prepare-parameter.yamlovercloud-images.yaml 文件包含在环境文件集合中:

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/containers-prepare-parameter.yaml \
        -e /home/stack/overcloud-images.yaml \
        ...

overcloud 服务使用 overcloud-images.yaml 文件中列出的固定镜像。