第7章 コンテナー化されたサービス
director は、OpenStack Platform のコアサービスをオーバークラウド上にコンテナーとしてインストールします。本項では、コンテナー化されたサービスがどのように機能するかについての背景情報を記載します。
7.1. コンテナー化されたサービスのアーキテクチャー
director は OpenStack Platform のコアサービスをオーバークラウド上にコンテナーとしてインストールします。コンテナー化されたサービス用のテンプレートは、/usr/share/openstack-tripleo-heat-templates/docker/services/ にあります。これらのテンプレートは、それぞれのコンポーザブルサービステンプレートを参照します。たとえば、OpenStack Identity (keystone) のコンテナー化されたサービスのテンプレート (docker/services/keystone.yaml) には、以下のリソースが含まれます。
KeystoneBase:
type: ../../puppet/services/keystone.yaml
properties:
EndpointMap: {get_param: EndpointMap}
ServiceData: {get_param: ServiceData}
ServiceNetMap: {get_param: ServiceNetMap}
DefaultPasswords: {get_param: DefaultPasswords}
RoleName: {get_param: RoleName}
RoleParameters: {get_param: RoleParameters}
type は、それぞれの OpenStack Identity (keystone) コンポーザブルサービスを参照して、そのテンプレートから outputs データをプルします。コンテナー化されたサービスは、独自のコンテナー固有データにこのデータをマージします。
コンテナー化されたサービスを使用するノードではすべて、OS::TripleO::Services::Docker サービスを有効化する必要があります。カスタムロール設定用の roles_data.yaml ファイルを作成する際には、ベースコンポーザブルサービスとともに OS::TripleO::Services::Docker サービスをコンテナー化されたサービスとして追加します。たとえば、Keystone ロールには、以下の定義を使用します。
- name: Keystone
ServicesDefault:
- OS::TripleO::Services::CACerts
- OS::TripleO::Services::Kernel
- OS::TripleO::Services::Ntp
- OS::TripleO::Services::Snmp
- OS::TripleO::Services::Sshd
- OS::TripleO::Services::Timezone
- OS::TripleO::Services::TripleoPackages
- OS::TripleO::Services::TripleoFirewall
- OS::TripleO::Services::SensuClient
- OS::TripleO::Services::FluentdClient
- OS::TripleO::Services::AuditD
- OS::TripleO::Services::Collectd
- OS::TripleO::Services::MySQLClient
- OS::TripleO::Services::Docker
- OS::TripleO::Services::Keystone7.2. コンテナー化されたサービスのパラメーター
コンテナー化されたサービスのテンプレートにはそれぞれ、 outputs セクションがあります。このセクションでは、director の OpenStack Orchestration (heat) サービスに渡すデータセットを定義します。テンプレートには、標準のコンポーザブルサービスパラメーター (「ロールパラメーターの考察」を参照) に加えて、コンテナーの設定固有のパラメーターセットが含まれます。
puppet_configサービスの設定時に Puppet に渡すデータ。初期のオーバークラウドデプロイメントステップでは、director は、コンテナー化されたサービスが実際に実行される前に、サービスの設定に使用するコンテナーのセットを作成します。このパラメーターには以下のサブパラメーターが含まれます。
-
config_volume: 設定を格納するマウント済みの docker ボリューム -
puppet_tags: 設定中に Puppet に渡すタグ。これらのタグは、特定のサービスの設定リソースに対する Puppet の実行を制限します。たとえば、OpenStack Identity (keystone) のコンテナー化されたサービスは、keystone_configタグを使用してすべての必要なkeystone_configPuppet リソースのみが設定コンテナーで実行されるようにします。 -
step_config: Puppet に渡される設定データ。これは通常、参照されたコンポーザブルサービスから継承されます。 -
config_image: サービスを設定するためのコンテナーイメージ
-
kolla_config- 設定ファイルの場所、ディレクトリーのパーミッション、およびサービスを起動するためにコンテナー上で実行するコマンドを定義するコンテナー固有のデータセット
docker_configサービスの設定コンテナーで実行するタスク。全タスクはステップにグループ化され、director が段階的にデプロイメントを行うのに役立ちます。ステップは以下のとおりです。
- ステップ 1: ロードバランサーの設定
- ステップ 2: コアサービス (データベース、Redis)
- ステップ 3: OpenStack Platform サービスの初期設定
- ステップ 4: OpenStack Platform サービスの全般設定
- ステップ 5: サービスのアクティブ化
host_prep_tasks- ベアメタルノードがコンテナー化されたサービスに対応するための準備タスク
7.3. OpenStack Platform コンテナーの修正
Red Hat は、Red Hat Container Catalog (registry.access.redhat.com) で、事前にビルドされたコンテナーイメージを提供しています。これらのイメージを修正して、さらにレイヤーを追加することができます。これは、認定済みのサードパーティードライバーの RPM をコンテナーに追加する場合に役立ちます。
修正された OpenStack Platform コンテナーイメージが継続的にサポートされるには、修正後のイメージが 「Red Hat Container Support Policy」 を順守することを確認してください。
この例には、最新の openstack-keystone イメージをカスタマイズする方法を示していますが、これらの手順は、他のイメージにも適用することができます。
編集するイメージをプルします。たとえば、
openstack-keystoneイメージの場合には、以下のコマンドを実行します。$ sudo docker pull egistry.access.redhat.com/rhosp12/openstack-keystone:latest
元のイメージで、デフォルトのユーザーを確認します。たとえば、
openstack-keystoneイメージの場合には、以下のコマンドを実行します。$ sudo docker run -it registry.access.redhat.com/rhosp12/openstack-keystone:latest whoami root
注記openstack-keystoneイメージは、rootをデフォルトユーザーとして使用します。その他のイメージは、特定のユーザーを使用します。たとえば、openstack-glance-apiはデフォルトユーザーにglanceを使用します。Dockerfileを作成して、既存のコンテナーイメージ上に追加のレイヤーを構築します。Container Catalog から最新の OpenStack Identity (keystone) イメージをプルして、カスタムの RPM ファイルをイメージにインストールする例を以下に示します。FROM registry.access.redhat.com/rhosp12/openstack-keystone MAINTAINER Acme LABEL name="rhosp12/openstack-keystone-acme" vendor="Acme" version="2.1" release="1" # switch to root and install a custom RPM, etc. USER root COPY custom.rpm /tmp RUN rpm -ivh /tmp/custom.rpm # switch the container back to the default user USER root
新規イメージをビルドして、タグ付けします。たとえば、
/home/stack/keystoneディレクトリーに保管されたローカルのDockerfileでビルドして、アンダークラウドのローカルレジストリーにタグ付けするには、以下のコマンドを実行します。$ docker build /home/stack/keystone -t "192.168.24.1:8787/rhosp12/openstack-keystone-acme:rev1"
編集が終わったイメージをアンダークラウドのローカルレジストリーにプッシュします。
$ docker push 192.168.24.1:8787/rhosp12/openstack-keystone-acme:rev1
-
オーバークラウドコンテナーイメージの環境ファイル (通常は
overcloud_images.yaml) を編集して、カスタムのコンテナーイメージを使用するための適切なパラメーターを変更します。
Container Catalog は、コンテナーイメージに完全なソフトウェアスタックを組み込んでパブリッシュします。更新およびセキュリティー問題の修正を含むコンテナーイメージを Container Catalog がリリースする際には、既存のカスタムコンテナーには、それらの更新は 含まれない ので、カタログからのイメージを使用して再ビルドする必要があります。

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.