第4章 オーバークラウドの OpenStack Platform バージョン 15 から 16.1 へのアップグレード
オーバークラウドをアップグレードするには、オーバークラウドプランを更新し、アップグレードに向けてノードの準備を行い、環境に適用されるすべてのコンテナーイメージ設定の準備を行い、ノードをアップグレードする必要があります。
BZ#1872404 が解決されるまで、コンポーザブルロールに基づくノードについては、先ず Database
ロールを更新してから、Controller
、Messaging
、Compute
、Ceph
、およびその他のロールを更新する必要があります。
前提条件
- アンダークラウドノードを OpenStack Platform バージョン 15 から 16.1 にアップグレードしている。
オーバークラウドをアップグレードするには、以下のタスクを実施します。
4.1. HA サービスのローリングアップグレードに向けたコンテナーイメージの準備
HA サービスが使用するコンテナーイメージの namespace
、name_prefix
、または name_suffix
が変更された場合、Pacemaker は自動的にコントロールプレーンでこのサービスのインスタンスをすべて再起動し、新たに設定されたコンテナーイメージ名でコンテナーを再作成します。
Red Hat OpenStack 15 と 16.1 では異なる name_prefix
の値が使用されるので、クラスターの最初のノードが更新された後、残りのノードはローカルに存在するはずの新しいコンテナーイメージを使用して起動します。
HA コンテナーイメージ名のローリング更新を行うことができるように、Red Hat OpenStack 16.1 では ClusterCommonTag
heat パラメーターが実装され、固定の name_prefix
(cluster.common.tag
) および固定の name_suffix
(pcmklatest
) が設定された中間イメージ名を使用するように HA サービスが設定されます。director がノードに新しいコンテナーイメージをプルするたびに、中間イメージタグが新たにプルしたイメージをポイントするようにタグが更新されます。
OpenStack 16.1 の中間コンテナーイメージ命名スキームに移行するには、コントローラーノード上にある各 HA コンテナーイメージ用に初期コンテナータグを手動で作成する必要があります。新しい cluster.common.tag/rhosp16-openstack-*
コンテナータグは、元の registry/rhosp15-openstack-*:pcmklatest
タグによって参照される同じコンテナーイメージ ID を指します。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 stackrc
ファイルを取得します。$ source ~/stackrc
オーバークラウドの静的なインベントリーファイルを作成します。
$ tripleo-ansible-inventory --static-yaml-inventory ~/inventory.yaml
既存のイメージを新しい名前にタグ付けするスクリプトを作成します。
cat > pcmkr_common_tag.sh <<'EOF' #!/bin/sh # Due to a change in internal CI repo, we need to adjust # the HA relate containers before running the update. # See bz#1846042/PIDONE OLD_PREFIX=${1:-"openstack-"} NEW_PREFIX=${2:-"openstack-"} TRANSFORM=s%${OLD_PREFIX}%${NEW_PREFIX}%p # Get all images used by HA containers (disregards images with cluster common tag in their name) IMAGES=$(sudo podman images | awk '$1 !~ /cluster.common.tag/ && $2 ~ /pcmklatest/ {print $1}') if [ -n "$IMAGES" ]; then echo "Creating cluster common tags and linking them to current HA images" fi # i: 192.168.24.1:8787/rhosp15-rhel8/openstack-mariadb # image: openstack-mariadb # transformed: openstack-mariadb # full_i: 192.168.24.1:8787/rhosp15-rhel8/openstack-mariadb:pcmklatest # full_icommon: cluster.common.tag/openstack-mariadb:pcmklatest for i in $IMAGES; do image=$(echo "$i" | sed 's%.*/%%') transformed=$(echo $image | sed -n $TRANSFORM) full_i=$i:pcmklatest full_icommon=cluster.common.tag/${transformed}:pcmklatest # echo $i - $TRANSFORM "=>" $image - $transformed # original image points to a image hash, create a new tag # with cluster.common.tag and make it point to the same image hash echo $full_i "-->" $full_icommon sudo podman tag $full_i $full_icommon done EOF
スクリプトを実行して既存のイメージを新しい名前にタグ付けします。
$ ansible -i inventory.yaml 'overcloud' -m script -a './pcmkr_common_tag.sh'