6.4. コンテナー化されたコンピュートノードの設定
director には、OpenStack のコンテナー化プロジェクト (Kolla) のサービスとオーバークラウドのコンピュートノードを統合するオプションがあります。たとえば、Red Hat Enterprise Linux Atomic Host をベースのオペレーティングシステムや個別のコンテナーとして使用して異なる OpenStack サービスを実行するコンピュートノードを作成します。
重要
コンテナー化されたコンピュートノードは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat サービスレベルアグリーメント (SLA) では完全にサポートされていません。これらは、機能的に完全でない可能性があり、実稼働環境での使用を目的とはしていませんが、近々発表予定のプロダクトイノベーションをリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。テクノロジープレビューとして提供している機能のサポートの対象範囲に関する詳しい情報は、https://access.redhat.com/support/offerings/techpreview/ を参照してください。
director のコアとなる Heat テンプレートコレクションには、コンテナー化されているコンピュートノードの設定をサポートする環境ファイルが含まれます。これらのファイルには以下が含まれます。
docker.yaml
: コンテナー化されているコンピュートノードを設定する主要な環境ファイルdocker-network.yaml
: コンテナー化されたコンピュートノードのネットワークの環境ファイル (ネットワークの分離なし)docker-network-isolation.yaml
: コンテナー化されたコンピュートノードのネットワークの環境ファイル (ネットワークの分離あり)
6.4.1. コンテナー化されたコンピュートの環境ファイル (docker.yaml) の検証
docker.yaml
ファイルは、コンテナー化されたコンピュートノードの設定のための主要な環境ファイルです。このファイルには、resource_registry
のエントリーが含まれます。
resource_registry: OS::TripleO::ComputePostDeployment: ../docker/compute-post.yaml OS::TripleO::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
- OS::TripleO::NodeUserData
- 初回起動時にカスタムの設定を使用する Heat テンプレートを提供します。今回の場合は、初回起動時に、
openstack-heat-docker-agents
コンテナーをコンピュートノードにインストールします。このコンテナーは、初期化スクリプトのセットを提供して、コンテナー化されたコンピュートノードと Heat フックを設定して director と通信します。 - OS::TripleO::ComputePostDeployment
- コンピュートノードに対するデプロイ後の設定リソースが含まれる Heat テンプレートを提供します。これには、Puppet に
tags
セットを提供するソフトウェア設定リソースが含まれます。ComputePuppetConfig: type: OS::Heat::SoftwareConfig properties: group: puppet options: enable_hiera: True enable_facter: False tags: package,file,concat,file_line,nova_config,neutron_config,neutron_agent_ovs,neutron_plugin_ml2 inputs: - name: tripleo::packages::enable_install type: Boolean default: True outputs: - name: result config: get_file: ../puppet/manifests/overcloud_compute.pp
これらのタグは、Puppet モジュールをopenstack-heat-docker-agents
コンテナーに渡すように定義します。
docker.yaml
ファイルには、NovaImage
と呼ばれる parameter
が含まれており、コンピュートノードをプロビジョニングする際に overcloud-full
イメージを異なるイメージ (atomic-image
) に置き換えます。このような新規イメージをアップロードする方法は、「Atomic Host のイメージのアップロード」 を参照してください。
docker.yaml
ファイルには、Docker レジストリーとイメージが コンピュートノードサービスを使用するように定義する parameter_defaults
セクションも含まれます。このセクションを変更して、デフォルトの registry.access.redhat.com
の代わりにローカルのレジストリーを使用するように指定することもできます。ローカルのレジストリーの設定方法は 「ローカルのレジストリーの使用」 を参照してください。
6.4.2. Atomic Host のイメージのアップロード
director では、
atomic-image
としてイメージストアにインポートする Red Hat Enterprise Linux 7 Atomic Host のクラウドイメージのコピーが必要です。これは、コンピュートノードにはオーバークラウド作成のプロビジョニングの際に、ベースの OS イメージが必要なためです。
Red Hat Enterprise Linux 7 Atomic Host の製品ページ (https://access.redhat.com/downloads/content/271/ver=/rhel---7/7.2.2-2/x86_64/product-software) から クラウドのイメージ のコピーをダウンロードし、
stack
ユーザーのホームディレクトリーの images
サブディレクトリーに保存します。
イメージのダウンロードが完了したら、
stack
ユーザーとして director にイメージをインポートします。
$ glance image-create --name atomic-image --file ~/images/rhel-atomic-cloud-7.2-12.x86_64.qcow2 --disk-format qcow2 --container-format bare
このコマンドでは、その他のオーバークラウドのイメージとこのイメージをインポートします。
$ glance image-list +--------------------------------------+------------------------+ | ID | Name | +--------------------------------------+------------------------+ | 27b5bad7-f8b2-4dd8-9f69-32dfe84644cf | atomic-image | | 08c116c6-8913-427b-b5b0-b55c18a01888 | bm-deploy-kernel | | aec4c104-0146-437b-a10b-8ebc351067b9 | bm-deploy-ramdisk | | 9012ce83-4c63-4cd7-a976-0c972be747cd | overcloud-full | | 376e95df-c1c1-4f2a-b5f3-93f639eb9972 | overcloud-full-initrd | | 0b5773eb-4c64-4086-9298-7f28606b68af | overcloud-full-vmlinuz | +--------------------------------------+------------------------+
6.4.3. ローカルのレジストリーの使用
デフォルトの設定は、Red Hat のコンテナーレジストリーをイメージのダウンロードに使用しますが、オプションの手順として、ローカルレジストリーを使用して、オーバークラウドの作成プロセス中の帯域幅を確保することができます。
既存のローカルレジストリーを使用するか、新しいものをインストールします。新しいレジストリーをインストールするには、『Getting Started with Containers』の「Chapter 1. Get Started with Docker Formatted Container Images」 の説明を参照してください。
必要なイメージをレジストリーにプルします。
$ sudo docker pull registry.access.redhat.com/openstack-nova-compute:latest $ sudo docker pull registry.access.redhat.com/openstack-data:latest $ sudo docker pull registry.access.redhat.com/openstack-nova-libvirt:latest $ sudo docker pull registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest $ sudo docker pull registry.access.redhat.com/openstack-openvswitch-vswitchd:latest $ sudo docker pull registry.access.redhat.com/openstack-openvswitch-db-server:latest $ sudo docker pull registry.access.redhat.com/openstack-heat-docker-agents:latest
イメージをプルした後には、正しいレジストリーホストにタグ付けします。
$ sudo docker tag registry.access.redhat.com/openstack-nova-compute:latest localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest $ sudo docker tag registry.access.redhat.com/openstack-data:latest localhost:8787/registry.access.redhat.com/openstack-data:latest $ sudo docker tag registry.access.redhat.com/openstack-nova-libvirt:latest localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest $ sudo docker tag registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest $ sudo docker tag registry.access.redhat.com/openstack-openvswitch-vswitchd:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest $ sudo docker tag registry.access.redhat.com/openstack-openvswitch-db-server:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest $ sudo docker tag registry.access.redhat.com/openstack-heat-docker-agents:latest localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest
レジストリーにプッシュします。
$ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-data:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest $ sudo docker push localhost:8787/registry.access.redhat.com/openstack-heat-docker-agents:latest
メインの
docker.yaml
環境ファイルのコピーを templates
サブディレクトリーに作成します。
$ cp /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml ~/templates/.
ファイルを編集して
resource_registry
が絶対パスを使用するように変更します。
resource_registry: OS::TripleO::ComputePostDeployment: /usr/share/openstack-tripleo-heat-templates/docker/compute-post.yaml OS::TripleO::NodeUserData: /usr/share/openstack-tripleo-heat-templates/docker/firstboot/install_docker_agents.yaml
parameter_defaults
の DockerNamespace
をお使いのレジストリーの URL に変更します。また、DockerNamespaceIsRegistry
を true
に設定します。以下に例を示します。
parameter_defaults: DockerNamespace: registry.example.com:8787/registry.access.redhat.com DockerNamespaceIsRegistry: true
ローカルレジストリーには、必要な Docker イメージと、コンテナー化されたコンピュートの設定が含まれ、このレジストリーを使用する準備が整いました。
6.4.4. オーバークラウドのデプロイメントへの環境ファイルの追加
オーバークラウドの作成の際は、以下のように、
openstack overcloud deploy
のコマンドと合わせて、コンテナー化されたコンピュートノードの主要な環境ファイル (docker.yaml
) とネットワークの環境ファイル (docker-network.yaml
) を追加します。
$ openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network.yaml [OTHER OPTIONS] ...
コンテナー化されたコンピュートノードは、ネットワークが分離されたオーバークラウドでも機能します。これには、主要な環境ファイルに加え、ネットワーク分離ファイル (
docker-network-isolation.yaml
) も必要です。「ネットワークの分離」からのネットワーク分離ファイルの前に、これらのファイルを追加してください。以下に例を示します。
openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml [OTHER OPTIONS] ...
director により、コンテナー化されたコンピュートノードによりオーバークラウドが作成されました。