Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第5章 コンテナーレジストリー情報の設定
コンテナー化されたオーバークラウドには、必要なコンテナーイメージを含むレジストリーへのアクセスが必要です。本章では、Red Hat OpenStack Platform 向けのコンテナーイメージを使用するためのレジストリーおよびオーバークラウドの設定の準備方法について説明します。
本ガイドでは、レジストリーを使用するためのユースケースをいくつか記載しています。これらのユースケースの 1 つを試す前には、イメージを準備するコマンドの使用方法をよく理解しておくことを推奨します。詳しくは、「container image prepare コマンドの使用方法」を参照してください。
レジストリーの方法の選択
Red Hat OpenStack Platform は以下のレジストリータイプをサポートしています。
- リモートレジストリー
-
オーバークラウドは、
registry.access.redhat.com
から直接コンテナーイメージをプルします。これは、初期設定を生成するための最も簡単な方法ですが、それぞれのオーバークラウドノードが Red Hat Container Catalog から各イメージを直接プルするので、ネットワークの輻輳が生じてデプロイメントが遅くなる可能性があります。また、Red Hat Container Catalog にアクセスするためのインターネットアクセスが 全オーバークラウドノードに必要です。 - ローカルレジストリー
-
アンダークラウドにローカルレジストリーを作成し、
registry.access.redhat.com
からプルしたイメージを同期します。オーバークラウドは、アンダークラウドからコンテナーイメージをプルします。この方法では、内部にレジストリーを保管することが可能なので、デプロイメントを迅速化してネットワークの輻輳を軽減することができます。ただし、アンダークラウドは基本的なレジストリーとしてのみ機能し、コンテナーイメージのライフサイクル管理は限定されます。 - Satellite サーバー
- Red Hat Satellite 6 サーバーを介して、コンテナーイメージの全アプリケーションライフサイクルを管理し、イメージを公開します。オーバークラウドは、Satellite サーバーからイメージをプルします。この方法は、Red Hat OpenStack Platform コンテナーを保管、管理、デプロイするためのエンタープライズ級のソリューションを提供します。
上記のリストから方法を選択し、レジストリー情報の設定を続けます。
5.1. container image prepare コマンドの使用方法
本項では、openstack overcloud container image prepare
コマンドの使用方法について説明します。これには、このコマンドのさまざまなオプションについての概念的な情報も含まれます。このコマンドを使用する適切なユースケースとエンドツーエンドの手順は、レジストリーの方法の選択に記載しています。
オーバークラウド用のコンテナーイメージ環境ファイルの生成
openstack overcloud container image prepare
コマンドの主要な用途の 1 つに、オーバークラウドが使用するイメージの一覧が記載されたファイルの作成があります。このファイルは、 openstack overcloud deploy
などのオーバークラウドのデプロイのコマンドで追加します。openstack overcloud container image prepare
コマンドは、この機能に以下のオプションを使用します。
--output-env-file
- 作成される環境ファイルの名前を定義します。
以下のスニペットは、このファイルの内容の例を示しています。
parameter_defaults: DockerAodhApiImage: registry.access.redhat.com/rhosp12/openstack-aodh-api:latest DockerAodhConfigImage: registry.access.redhat.com/rhosp12/openstack-aodh-api:latest ...
インポート方法に対応したコンテナーイメージ一覧の生成
OpenStack Platform コンテナーイメージを異なるレジストリーソースにインポートする必要がある場合には、イメージの一覧を生成することができます。この一覧の構文は主に、アンダークラウド上のコンテナーレジストリーにコンテナーをインポートするのに使用されますが、Red Hat Satellite 6 などの別の方法に適した形式の一覧に変更することができます。
openstack overcloud container image prepare
コマンドでは、この機能に以下のオプションを使用します。
--output-images-file
- 作成されるインポート一覧のファイル名を定義します。
このファイルの内容の例を以下に示します。
container_images: - imagename: registry.access.redhat.com/rhosp12/openstack-aodh-api:latest - imagename: registry.access.redhat.com/rhosp12/openstack-aodh-evaluator:latest ...
コンテナーイメージの名前空間の設定
--output-env-file
と --output-images-file
のオプションには、作成されるイメージの場所を生成するための名前空間が必要です。openstack overcloud container image prepare
コマンドでは、以下のオプションを使用して、プルするコンテナーイメージの場所を設定します。
--namespace
- コンテナーイメージ用の名前空間を定義します。これには通常、ホスト名または IP アドレスにディレクトリーを付けて指定します。
--prefix
- イメージ名の前に追加するプレフィックスを定義します。
その結果、director は以下のような形式のイメージ名を生成します。
-
[NAMESPACE]/[PREFIX][IMAGE NAME]
コンテナーイメージタグの設定
openstack overcloud container image prepare
コマンドは、デフォルトでは各コンテナーイメージに latest
タグを使用しますが、以下のオプションを使用して、イメージのバージョンに特定のタグを選択することが可能です。
--tag
- 全イメージ用のタグを設定します。すべての OpenStack Platform コンテナーイメージで、同じタグを使用してバージョンの同期性を提供します。
openstack overcloud container image tag discover
コマンドを使用して、イメージ用の最新バージョンタグを確認することもできます。以下に例を示します。
$ sudo openstack overcloud container image tag discover \ --image registry.access.redhat.com/rhosp12/openstack-base:latest \ --tag-from-label version-release
このコマンドは、openstack-base
イメージの version-release
ラベルをベースにして、そのイメージに利用可能なタグをチェックし、最新バージョンのタグを出力します。
タグ検出のコマンドは sudo
アクセスで実行する必要があります。このコマンドは、sudo
権限を必要とする docker
をサブプロセスとして使用します。
5.2. その他のサービス用のコンテナーイメージの追加
director はコアの OpenStack Platform サービス [1]一部の追加の機能は、追加のコンテナーイメージが必要なサービスを使用します。これらのサービスは、環境ファイルで有効化します。openstack overcloud container image prepare
コマンドは、以下のオプションを使用して環境ファイルとそれらの対応するコンテナーイメージを追加します。
-e
- 追加のコンテナーイメージを有効化するための環境ファイルを指定します。
デプロイメントに環境ファイルを追加する方法については、「オーバークラウド作成時の環境ファイルの追加」を参照してください。
以下の表は、コンテナーイメージを使用する追加のサービスのサンプル一覧とそれらの対応する環境ファイルがある /usr/share/openstack-tripleo-heat-templates
ディレクトリー内の場所をまとめています。
サービス | 環境ファイル |
---|---|
Ceph Storage |
|
Collectd |
|
Congress |
|
Fluentd |
|
OpenStack Bare Metal (ironic) |
|
OpenStack Data Processing (sahara) |
|
OpenStack EC2-API |
|
Sensu |
|
以下の項には、追加するサービスの例を記載します。
Ceph Storage
Red Hat Ceph Storage クラスターをオーバークラウドでデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml
環境ファイルを追加する必要があります。このファイルは、オーバークラウドで、コンテナー化されたコンポーザブルサービスを有効化します。director は、これらのサービスが有効化されていることを確認した上で、それらのイメージを準備する必要があります。
この環境ファイルに加えて、Ceph Storage コンテナーの場所を定義する必要があります。これは、OpenStack Platform サービスの場所とは異なります。--set
オプションを使用して以下のパラメーターを Ceph Storage 固有に設定してください。
--set ceph_namespace
-
Ceph Storage コンテナーイメージ用の名前空間を定義します。これは、
--namespace
オプションと同様に機能します。 --set ceph_image
-
Ceph Storage コンテナーイメージの名前を定義します。通常これは、
rhceph-2-rhel7
です。 --set ceph_tag
-
Ceph Storage コンテナーイメージに使用するタグを定義します。これは、
--tag
オプションと同じように機能します。
以下のスニペットは、コンテナーイメージファイル内に Ceph Storage が含まれている例です。
$ openstack overcloud container image prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ --set ceph_namespace=registry.access.redhat.com/rhceph \ --set ceph_image=rhceph-2-rhel7 \ --set ceph_tag=<CEPH_TAG> ...
OpenStack Bare Metal (ironic)
オーバークラウドで OpenStack Bare Metal (ironic) をデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/services-docker/ironic.yaml
環境ファイルを追加して、director がイメージを準備できるようにする必要があります。以下のスニペットは、この環境ファイルの追加方法の例を示しています。
$ openstack overcloud container image prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/ironic.yaml \ ...
OpenStack Data Processing (sahara)
オーバークラウドで OpenStack Data Processing (sahara) をデプロイする場合には、/usr/share/openstack-tripleo-heat-templates/environments/services-docker/sahara.yaml
環境ファイルを追加して、director がイメージを準備できるようにする必要があります。以下のスニペットは、この環境ファイルの追加方法の例を示しています。
$ openstack overcloud container image prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/sahara.yaml \ ...
5.3. リモートレジストリーを使用するためのオーバークラウド設定
Red Hat では、オーバークラウドのコンテナーイメージを registry.access.redhat.com
でホストしています。リモートレジストリーからイメージをプルする方法では、レジストリーはすでに設定済みで、必要なのはプルするイメージの URL と名前空間だけなので、最も簡単です。ただし、オーバークラウドの作成中には、オーバークラウドノードがリモートリポジトリーからすべてのイメージをプルするので、外部接続で輻輳が生じる場合があります。これが問題となる場合には、以下のいずれかの手段を取ることができます。
- ローカルレジストリーを設定する: 「ローカルレジストリーとしてアンダークラウドを使用するためのオーバークラウドの設定」
- Red Hat Satellite 6 でイメージをホストする: 「Satellite サーバーをイメージレジストリーとする設定」
イメージを直接 registry.access.redhat.com
からオーバークラウドデプロイメントにプルするには、イメージパラメーターを指定するための環境ファイルが必要となります。以下のコマンドにより、この環境ファイルが自動的に作成されます。
最新のイメージのタグを確認します。
$ source ~/stackrc (undercloud) $ sudo openstack overcloud container image tag discover \ --image registry.access.redhat.com/rhosp12/openstack-base:latest \ --tag-from-label version-release
このコマンドの出力を、以下の
<TAG>
の値に使います。環境ファイルを作成します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=registry.access.redhat.com/rhosp12 \ --prefix=openstack- \ --tag=<TAG> \ --output-env-file=/home/stack/templates/overcloud_images.yaml
任意のサービス用の環境ファイルを指定するには、
-e
オプションを使用します。「container image prepare コマンドの使用方法」の「その他のサービス用のコンテナーイメージの追加」を参照してください。Ceph Storage を使用する場合には、「container image prepare コマンドの使用方法」の「Ceph Storage」に記載した追加のパラメーターを含めてください。
-
これで、イメージの場所が記載された
overcloud_images.yaml
環境ファイルがアンダークラウド上に作成されます。このファイルをデプロイメントで指定します。
レジストリーの設定を使用する準備が整いました。「6章CLI ツールを使用した基本的なオーバークラウドの設定」に記載の手順に進んでください。
5.4. ローカルレジストリーとしてアンダークラウドを使用するためのオーバークラウドの設定
アンダークラウド上でローカルレジストリーを設定して、オーバークラウドのコンテナーイメージを保管することができます。この方法は、以下の操作を伴います。
-
director が、
registry.access.redhat.com
から各イメージをプルします。 - director がオーバークラウドを作成します。
- オーバークラウドの作成中に、ノードが適切なイメージをアンダークラウドからプルします。
これにより、コンテナーイメージのネットワークトラフィックは、 内部ネットワーク内に留まるので、外部ネットワークとの接続で輻輳が発生せず、デプロイメントプロセスを迅速化することができます。
イメージを registry.access.redhat.com
からローカルレジストリーにプルするには、以下の手順を実行します。
最新のイメージのタグを確認します。
$ source ~/stackrc (undercloud) $ sudo openstack overcloud container image tag discover \ --image registry.access.redhat.com/rhosp12/openstack-base:latest \ --tag-from-label version-release
このコマンドの出力を、以下の
<TAG>
の値に使います。ローカルレジストリーにイメージをプルするためのテンプレートを作成します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=registry.access.redhat.com/rhosp12 \ --prefix=openstack- \ --tag=<TAG> \ --output-images-file /home/stack/local_registry_images.yaml
任意のサービス用の環境ファイルを指定するには、
-e
オプションを使用します。「container image prepare コマンドの使用方法」の「その他のサービス用のコンテナーイメージの追加」を参照してください。Ceph Storage を使用する場合には、「container image prepare コマンドの使用方法」の「Ceph Storage」に記載した追加のパラメーターを含めてください。
注記このステップの
openstack overcloud container image prepare
コマンドは、registry.access.redhat.com
上のレジストリーをターゲットにして、アンダークラウドにインポートするイメージのリストを生成します。ここでは、後半のステップで使用するopenstack overcloud container image prepare
コマンドとは異なる値を指定します。これで、コンテナーイメージの情報が含まれた
local_registry_images.yaml
という名前のファイルが作成されます。local_registry_images.yaml
ファイルを使ってイメージをプルします。(undercloud) $ sudo openstack overcloud container image upload \ --config-file /home/stack/local_registry_images.yaml \ --verbose
ネットワークおよびアンダークラウドディスクの速度によっては、必要なイメージをプルするのに時間がかかる場合があります。
注記コンテナーイメージは、およそ 10 GB のディスク領域を使用します。
ローカルイメージの名前空間を特定します。名前空間は、以下のパターンを使用します。
<REGISTRY IP ADDRESS>:8787/rhosp12
undercloud.conf
ファイルのlocal_ip
パラメーターであらかじめ設定した、アンダークラウドの IP アドレスを使用します。または、以下のコマンドを使用して完全な名前空間を取得します。(undercloud) $ docker images | grep -v redhat.com | grep -o '^.*rhosp12' | sort -u
アンダークラウド上のローカルレジストリーで使用するためのテンプレートを作成します。以下に例を示します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=192.168.24.1:8787/rhosp12 \ --prefix=openstack- \ --tag=<TAG> \ --output-env-file=/home/stack/templates/overcloud_images.yaml
任意のサービス用の環境ファイルを指定するには、
-e
オプションを使用します。「container image prepare コマンドの使用方法」の「その他のサービス用のコンテナーイメージの追加」を参照してください。Ceph Storage を使用する場合には、「container image prepare コマンドの使用方法」の「Ceph Storage」に記載した追加のパラメーターを含めてください。
注記このステップの
openstack overcloud container image prepare
コマンドは、アンダークラウド上のレジストリーをターゲットにして、オーバークラウドで使用するイメージのリストを生成します。ここでは、前のステップで使用したopenstack overcloud container image prepare
コマンドとは異なる値を指定します。-
これで、アンダークラウド上のイメージの場所が記載された
overcloud_images.yaml
環境ファイルが作成されます。このファイルをデプロイメントで指定します。
レジストリーの設定を使用する準備が整いました。「6章CLI ツールを使用した基本的なオーバークラウドの設定」に記載の手順に進んでください。
5.5. Satellite サーバーをイメージレジストリーとする設定
Red Hat Satellite 6 では、名前が 30 文字を超えるコンテナーイメージは同期されないという既知の問題があります。この問題は、Satellite 6.2 の次のマイナーリリースで修正される予定です。この問題のホットフィックスは、現在提供されています (詳しくは、BZ#1424689 を参照してください)。
Red Hat Satellite 6 には、レジストリーの同期機能が備わっています。これにより、複数のイメージを Satellite サーバーにプルし、アプリケーションライフサイクルの一環として管理することができます。また、他のコンテナー対応システムも Satellite をレジストリーとして使うことができます。コンテナーイメージ管理の詳細は、『Red Hat Satellite 6 コンテンツ管理ガイド』の「コンテナーイメージの管理」を参照してください。
以下の手順は、Red Hat Satellite 6 の hammer
コマンドラインツールを使用した例を示しています。組織には、例として ACME
という名称を使用しています。この組織は、実際に使用する Satellite 6 の組織に置き換えてください。
イメージを registry.access.redhat.com
からローカルレジストリーにプルするには、以下の手順を実行します。
イメージをローカルレジストリーにプルするためのテンプレートを作成します。
$ source ~/stackrc (undercloud) $ openstack overcloud container image prepare \ --namespace=rhosp12 \ --prefix=openstack- \ --output-images-file /home/stack/satellite_images \
任意のサービス用の環境ファイルを指定するには、
-e
オプションを使用します。「container image prepare コマンドの使用方法」の「その他のサービス用のコンテナーイメージの追加」を参照してください。Ceph Storage を使用する場合には、「container image prepare コマンドの使用方法」の「Ceph Storage」に記載した追加のパラメーターを含めてください。
注記このステップの
openstack overcloud container image prepare
コマンドは、registry.access.redhat.com
上のレジストリーをターゲットにして、イメージのリストを生成します。ここでは、後半のステップで使用するopenstack overcloud container image prepare
コマンドとは異なる値を指定します。-
これで、コンテナーイメージの情報が含まれた
satellite_images
という名前のファイルが作成されます。このファイルを使用して、コンテナーイメージを Satellite 6 サーバーに同期します。 satellite_images
ファイルから YAML 固有の情報を削除して、イメージ一覧のみが記載されたフラットファイルに変換します。この操作は、以下のsed
コマンドで実行します。(undercloud) $ sed -i "s/- imagename: //g" ~/satellite_images (undercloud) $ sed -i "s/:.*//g" ~/satellite_images (undercloud) $ sed -i "1d" ~/satellite_images
これにより、Satellite サーバーにプルするイメージのリストが提供されます。
-
satellite_images
ファイルを、Satellite 6 のhammer
ツールが含まれるシステムにコピーします。あるいは、『Hammer CLI ガイド』に記載の手順に従って、hammer
ツールをアンダークラウドにインストールします。 以下の
hammer
コマンドを実行して、実際の Satellite 組織に新規製品 (OSP12 Containers
) を作成します。$ hammer product create \ --organization "ACME" \ --name "OSP12 Containers"
このカスタム製品に、イメージを保管します。
製品にベースコンテナーイメージを追加します。
$ hammer repository create \ --organization "ACME" \ --product "OSP12 Containers" \ --content-type docker \ --url https://registry.access.redhat.com \ --docker-upstream-name rhosp12/openstack-base \ --name base
satellite_images
ファイルからオーバークラウドのコンテナーイメージを追加します。$ while read IMAGE; do \ IMAGENAME=$(echo $IMAGE | cut -d"/" -f2 | sed "s/openstack-//g" | sed "s/:.*//g") ; \ hammer repository create \ --organization "ACME" \ --product "OSP12 Containers" \ --content-type docker \ --url https://registry.access.redhat.com \ --docker-upstream-name $IMAGE \ --name $IMAGENAME ; done < satellite_images
コンテナーイメージを同期します。
$ hammer product synchronize \ --organization "ACME" \ --name "OSP12 Containers"
Satellite サーバーが同期を完了するまで待ちます。
注記設定によっては、
hammer
から Satellite サーバーのユーザー名およびパスワードが要求される場合があります。設定ファイルを使って自動的にログインするようにhammer
を設定することができます。詳細は、『Hammer CLI ガイド』の「認証」セクションを参照してください。base
イメージに利用可能なタグを確認します。$ hammer docker tag list --repository "base" \ --organization "ACME" \ --product "OSP12 Containers"
これにより、OpenStack Platform コンテナーイメージのタグが表示されます。タグを選択し、この後のステップで使用するために書き留めておきます。
アンダークラウドに戻り、Satellite サーバー上のイメージ用に環境ファイルを生成します。これには、以下のデータが使われます。
-
--namespace
: Satellite サーバー上のレジストリーの URL およびポート。Red Hat Satellite のデフォルトのレジストリーポートは 5000 です。例:--namespace=satellite6.example.com:5000
-
--prefix=
: プレフィックスは、Satellite 6 組織およびコンテナーを保管する製品名に基づきます。たとえば、組織名がACME
の場合、プレフィックスはacme-osp12_containers-
となります。 -
--tag=<TAG>
: 前のステップで記録した OpenStack Platform コンテナーイメージのタグ -e
: このオプションを使用して、オーバークラウド用に追加のサービスの各環境ファイルを指定します。 詳しい情報は、「container image prepare コマンドの使用方法」の「その他のサービス用のコンテナーイメージの追加」を参照してください。環境ファイルを生成するコマンドの例を以下に示します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=satellite6.example.com:5000 \ --prefix=acme-osp12_containers- \ --tag=<TAG> \ --output-env-file=/home/stack/templates/overcloud_images.yaml
Ceph Storage を使用する場合は、以下の追加パラメーターを使います。
-
--set ceph_namespace
: Ceph Storage イメージ用に設定する Satellite サーバー上のレジストリーの URL およびポート。これは、--namespace
と同じ値にする必要があります。 -
--set ceph_image
: Satellite サーバー上の Ceph Storage イメージの名前。これは、OpenStack Platform のイメージと同じ命名規則に従います。例:acme-osp12_containers-rhceph-2-rhel7
--set ceph_tag
: Ceph Storage コンテナーイメージのタグ。latest
に設定します。詳しい説明は 「container image prepare コマンドの使用方法」の「Ceph Storage」を参照してください。
注記このステップの
openstack overcloud container image prepare
コマンドは、Satellite サーバーをターゲットにします。ここでは、前のステップで使用したopenstack overcloud container image prepare
コマンドとは異なる値を指定します。
-
-
これで、Satellite サーバー上のイメージの場所が記載された
overcloud_images.yaml
環境ファイルが作成されます。このファイルをデプロイメントで指定します。
レジストリーの設定を使用する準備が整いました。「6章CLI ツールを使用した基本的なオーバークラウドの設定」に記載の手順に進んでください。