第5章 コンテナーイメージのソースの設定
コンテナー化されたオーバークラウドには、必要なコンテナーイメージを含むレジストリーへのアクセスが必要です。本章では、Red Hat OpenStack Platform 向けのコンテナーイメージを使用するためのレジストリーおよびオーバークラウドの設定の準備方法について説明します。
- このガイドでは、オーバークラウドでレジストリーを使用するように設定するユースケースをいくつか記載しています。その方法についての説明は、「レジストリーメソッド」を参照してください。
- イメージを準備するコマンドの使用方法をよく理解しておくことを推奨します。詳しくは、「container image prepare コマンドの使用方法」を参照してください。
- コンテナーイメージのソースを準備する最も一般的な方法で作業を開始するには、「ローカルレジストリーとしてアンダークラウドを使用する方法」を参照してください。
5.1. レジストリーメソッド
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.2. 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/rhosp13/openstack-aodh-api:latest DockerAodhConfigImage: registry.access.redhat.com/rhosp13/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/rhosp13/openstack-aodh-api:latest - imagename: registry.access.redhat.com/rhosp13/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 タグを使用しますが、以下のオプションのいずれか1 つを使用すると、イメージバージョンに特定のタグを選択することができます。
--tag-from-label- 指定したコンテナーイメージラベルの値を使用して、全イメージのバージョンタグを検出します。
--tag-
全イメージ用の特定のタグを設定します。すべての OpenStack Platform コンテナーイメージで、同じタグを使用してバージョンの同期性を提供します。
--tag-from-labelと併用する場合には、 バージョンタグはこのタグから最初に検出されます。
5.3. 追加のサービス用のコンテナーイメージ
director は、OpenStack Platform のコアサービス用のコンテナーイメージのみを作成します。一部の追加機能には、追加のコンテナーイメージを必要とするサービスが使われます。これらのサービスは、環境ファイルで有効化することができます。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 |
|
|
OpenStack Key Manager (barbican) |
|
|
OpenStack Load Balancing-as-a-Service (octavia) |
|
|
OpenStack Shared File System Storage (manila) |
|
|
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-3-rhel7という名前です。 --set ceph_tag-
Ceph Storage コンテナーイメージに使用するタグを定義します。これは、
--tagオプションと同じように機能します。--tag-from-labelが指定されている場合には、バージョンタグはこのタグから検出が開始されます。
以下のスニペットは、コンテナーイメージファイル内に 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-3-rhel7 \
--tag-from-label {version}-{release} \
...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.4. Red Hat レジストリーをリモートレジストリーソースとして使用する方法
Red Hat では、オーバークラウドのコンテナーイメージを registry.access.redhat.com でホストしています。リモートレジストリーからイメージをプルする方法では、レジストリーはすでに設定済みで、必要なのはプルするイメージの URL と名前空間だけなので、最も簡単です。ただし、オーバークラウドの作成中には、オーバークラウドノードがリモートリポジトリーからすべてのイメージをプルするので、外部接続で輻輳が生じる場合があります。これが問題となる場合には、以下のいずれかの手段を取ることができます。
- ローカルレジストリーの設定
- Red Hat Satellite 6 上でのイメージのホスティング
手順
イメージを直接
registry.access.redhat.comからオーバークラウドデプロイメントにプルするには、イメージパラメーターを指定するための環境ファイルが必要となります。以下のコマンドにより、この環境ファイルが自動的に作成されます。(undercloud) $ openstack overcloud container image prepare \ --namespace=registry.access.redhat.com/rhosp13 \ --prefix=openstack- \ --tag-from-label {version}-{release} \ --output-env-file=/home/stack/templates/overcloud_images.yaml-
任意のサービス用の環境ファイルを指定するには、
-eオプションを使用します。 -
Ceph Storage を使用している場合には、Ceph Storage 用のコンテナーイメージの場所を定義する追加のパラメーターを指定します:
--set ceph_namespace、--set ceph_image、--set ceph_tag
-
任意のサービス用の環境ファイルを指定するには、
-
これで、イメージの場所が記載された
overcloud_images.yaml環境ファイルがアンダークラウド上に作成されます。このファイルをデプロイメントで指定します。
5.5. ローカルレジストリーとしてアンダークラウドを使用する方法
アンダークラウド上でローカルレジストリーを設定して、オーバークラウドのコンテナーイメージを保管することができます。この方法は、以下の操作を伴います。
-
director が、
registry.access.redhat.comから各イメージをプルします。 - director がオーバークラウドを作成します。
- オーバークラウドの作成中に、ノードが適切なイメージをアンダークラウドからプルします。
これにより、コンテナーイメージのネットワークトラフィックは、 内部ネットワーク内に留まるので、外部ネットワークとの接続で輻輳が発生せず、デプロイメントプロセスを迅速化することができます。
手順
ローカルアンダークラウドレジストリーのアドレスを特定します。アドレスは、以下のパターンを使用します。
<REGISTRY IP ADDRESS>:8787
アンダークラウドの IP アドレスを使用します。これは
undercloud.confファイルのlocal_ipパラメーターで設定済みのアドレスです。以下のコマンドでは、アドレスが192.168.24.1:8787であることを前提としています。イメージをローカルレジストリーにアップロードするためのテンプレートと、それらのイメージを参照する環境ファイルを作成します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=registry.access.redhat.com/rhosp13 \ --push-destination=192.168.24.1:8787 \ --prefix=openstack- \ --tag-from-label {version}-{release} \ --output-env-file=/home/stack/templates/overcloud_images.yaml \ --output-images-file /home/stack/local_registry_images.yaml-
任意のサービス用の環境ファイルを指定するには、
-eオプションを使用します。 -
Ceph Storage を使用している場合には、Ceph Storage 用のコンテナーイメージの場所を定義する追加のパラメーターを指定します:
--set ceph_namespace、--set ceph_image、--set ceph_tag
-
任意のサービス用の環境ファイルを指定するには、
これで 2 つのファイルが作成されます。
-
リモートソースからのコンテナーイメージの情報が含まれている
local_registry_images.yaml。このファイルを使用して、Red Hat Container Registry (registry.access.redhat.com) からアンダークラウドにイメージをプルします。 アンダークラウド上の最終的なイメージの場所が記載されている
overcloud_images.yaml。このファイルはデプロイメントで指定します。両方のファイルが存在することを確認します。
-
リモートソースからのコンテナーイメージの情報が含まれている
registry.access.redhat.comからアンダークラウドにコンテナーイメージをプルします。(undercloud) $ sudo openstack overcloud container image upload \ --config-file /home/stack/local_registry_images.yaml \ --verbose
ネットワークおよびアンダークラウドディスクの速度によっては、必要なイメージをプルするのに時間がかかる場合があります。
注記コンテナーイメージは、およそ 10 GB のディスク領域を使用します。
レジストリーの設定の準備が整いました。
5.6. Satellite サーバーをレジストリーとして使用する手順
Red Hat Satellite 6 には、レジストリーの同期機能が備わっています。これにより、複数のイメージを Satellite サーバーにプルし、アプリケーションライフサイクルの一環として管理することができます。また、他のコンテナー対応システムも Satellite をレジストリーとして使うことができます。コンテナーイメージ管理の詳細は、『Red Hat Satellite 6 コンテンツ管理ガイド』の「コンテナーイメージの管理」を参照してください。
以下の手順は、Red Hat Satellite 6 の hammer コマンドラインツールを使用した例を示しています。組織には、例として ACME という名称を使用しています。この組織は、実際に使用する Satellite 6 の組織に置き換えてください。
手順
イメージをローカルレジストリーにプルするためのテンプレートを作成します。
$ source ~/stackrc (undercloud) $ openstack overcloud container image prepare \ --namespace=rhosp13 \ --prefix=openstack- \ --output-images-file /home/stack/satellite_images \
-
任意のサービス用の環境ファイルを指定するには、
-eオプションを使用します。 -
Ceph Storage を使用している場合には、Ceph Storage 用のコンテナーイメージの場所を定義する追加のパラメーターを指定します:
--set ceph_namespace、--set ceph_image、--set ceph_tag
注記このステップの
openstack overcloud container image prepareコマンドは、registry.access.redhat.com上のレジストリーをターゲットにして、イメージのリストを生成します。ここでは、後半のステップで使用するopenstack overcloud container image prepareコマンドとは異なる値を指定します。-
任意のサービス用の環境ファイルを指定するには、
-
これで、コンテナーイメージの情報が含まれた
satellite_imagesという名前のファイルが作成されます。このファイルを使用して、コンテナーイメージを Satellite 6 サーバーに同期します。 satellite_imagesファイルから YAML 固有の情報を削除して、イメージ一覧のみが記載されたフラットファイルに変換します。この操作は、以下のsedコマンドで実行します。(undercloud) $ awk -F ':' '{if (NR!=1) {gsub("[[:space:]]", ""); print $2}}' ~/satellite_images > ~/satellite_images_namesこれにより、Satellite サーバーにプルするイメージのリストが提供されます。
-
satellite_images_namesファイルを、Satellite 6 のhammerツールが含まれるシステムにコピーします。あるいは、『Hammer CLI ガイド』に記載の手順に従って、hammerツールをアンダークラウドにインストールします。 以下の
hammerコマンドを実行して、実際の Satellite 組織に新規製品 (OSP13 Containers) を作成します。$ hammer product create \ --organization "ACME" \ --name "OSP13 Containers"
このカスタム製品に、イメージを保管します。
製品にベースコンテナーイメージを追加します。
$ hammer repository create \ --organization "ACME" \ --product "OSP13 Containers" \ --content-type docker \ --url https://registry.access.redhat.com \ --docker-upstream-name rhosp13/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 "OSP13 Containers" \ --content-type docker \ --url https://registry.access.redhat.com \ --docker-upstream-name $IMAGE \ --name $IMAGENAME ; done < satellite_images_names
コンテナーイメージを同期します。
$ hammer product synchronize \ --organization "ACME" \ --name "OSP13 Containers"
Satellite サーバーが同期を完了するまで待ちます。
注記設定によっては、
hammerから Satellite サーバーのユーザー名およびパスワードが要求される場合があります。設定ファイルを使って自動的にログインするようにhammerを設定することができます。詳細は、『Hammer CLI ガイド』の「認証」セクションを参照してください。- Satellite 6 サーバーでコンテンツビューを使用している場合には、新規コンテンツビューを作成して、イメージを取り入れます。
baseイメージに利用可能なタグを確認します。$ hammer docker tag list --repository "base" \ --organization "ACME" \ --product "OSP13 Containers"
これにより、OpenStack Platform コンテナーイメージのタグが表示されます。
アンダークラウドに戻り、Satellite サーバー上のイメージ用に環境ファイルを生成します。環境ファイルを生成するコマンドの例を以下に示します。
(undercloud) $ openstack overcloud container image prepare \ --namespace=satellite6.example.com:5000 \ --prefix=acme-osp13_containers- \ --tag-from-label {version}-{release} \ --output-env-file=/home/stack/templates/overcloud_images.yaml注記このステップの
openstack overcloud container image prepareコマンドは、Satellite サーバーをターゲットにします。ここでは、前のステップで使用したopenstack overcloud container image prepareコマンドとは異なる値を指定します。このコマンドを実行する際には、以下の情報を含めてください。
-
--namespace: Satellite サーバー上のレジストリーの URL およびポート。Red Hat Satellite のデフォルトのレジストリーポートは 5000 です。例:--namespace=satellite6.example.com:5000 --prefix=: プレフィックスは Satellite 6 の命名規則に基づきます。これは、コンテンツビューを使用するかどうかによって異なります。-
コンテンツビューを使用する場合、構成は
[org]-[environment]-[content view]-[product]-となります (例:acme-production-myosp13-osp13_containers-)。 -
コンテンツビューを使用する場合、構成は
[org]-[product]-となります (例:acme-osp13_containers-)。
-
コンテンツビューを使用する場合、構成は
-
--tag-from-label {version}-{release}: 各イメージの最新のタグを特定します。 -
-e: オプションのサービスの環境ファイルを指定します。 --set ceph_namespace、--set ceph_image、--set ceph_tag: Ceph Storage を使用する場合には、Ceph Storage のコンテナーイメージの場所を定義する追加のパラメーターを指定します。ceph_imageに Satellite 固有のプレフィックスが追加された点に注意してください。このプレフィックスは、--prefixオプションと同じ値です。以下に例を示します。--set ceph_image=acme-osp13_containers-rhceph-3-rhel7
これにより、オーバークラウドは Satelite の命名規則の Ceph コンテナーイメージを使用することができます。
-
-
これで、Satellite サーバー上のイメージの場所が記載された
overcloud_images.yaml環境ファイルが作成されます。このファイルをデプロイメントで指定します。
レジストリーの設定の準備が整いました。
5.7. 次のステップ
コンテナーイメージのソースが記載された overcloud_images.yaml 環境ファイルができました。今後のデプロイメント操作ではすべてこのファイルを追加してください。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.