Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第11章 コンテナー化されたコンピュートノードの設定

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: コンテナー化されたコンピュートノードのネットワークの環境ファイル

11.1. スタックの深度を高くする方法

コンテナー化されたコンピュートの Heat テンプレート内のリソーススタック数に対応するには、アンダークラウドで OpenStack Orchestration (heat) のスタックの深度を高くする必要があります。スタックの深度を増やすには、以下の手順を使用します。

  1. /etc/heat/heat.conf を編集して、max_nested_stack_depth パラメーターを特定します。このパラメーターの値を 10 に増やします。

    max_nested_stack_depth = 10

    このファイルを保存します。

  2. OpenStack Orchestration (heat) サービスを再起動します。

    sudo systemctl restart openstack-heat-engine.service
重要

アンダークラウドのマイナーおよびメジャーバージョンの更新を実行すると、/etc/heat/heat.conf ファイルへの変更が元に戻されてしまう可能性があります。必要な場合には、heat::engine::max_nested_stack_depth hieradata を設定して、スタックの深度の設定を永続的にします。アンダークラウドの hieradata を設定するには、undercloud.conf ファイル内の hieradata_override パラメーターにカスタムの hieradata を含むファイルを指定してください。

11.2. コンテナー化されたコンピュートの環境ファイル (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 の代わりにローカルのレジストリーを使用するように指定することもできます。ローカルのレジストリーの設定方法は、「ローカルのレジストリーの使用」を参照してください。

11.3. 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 |
+--------------------------------------+------------------------+

11.4. ローカルのレジストリーの使用

デフォルトの設定は、Red Hat のコンテナーレジストリーをイメージのダウンロードに使用しますが、オプションの手順として、ローカルレジストリーを使用して、オーバークラウドの作成プロセス中の帯域幅を確保することができます。

既存のローカルレジストリーを使用するか、新たにインストールします。新しいレジストリーをインストールするには、『Getting Started with Containers』の「Get Started with Docker Formatted Container Images」に記載の手順を参照してください。

必要なイメージをレジストリーにプルします。

$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-nova-compute:latest
$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-data:latest
$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-nova-libvirt:latest
$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-neutron-openvswitch-agent:latest
$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-openvswitch-vswitchd:latest
$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-openvswitch-db-server:latest
$ sudo docker pull registry.access.redhat.com/rhosp11_tech_preview/openstack-heat-docker-agents:latest

イメージをプルした後には、正しいレジストリーホストにタグ付けします。

$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/openstack-nova-compute:latest localhost:8787/registry.access.redhat.com/openstack-nova-compute:latest
$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/openstack-data:latest localhost:8787/registry.access.redhat.com/openstack-data:latest
$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/openstack-nova-libvirt:latest localhost:8787/registry.access.redhat.com/openstack-nova-libvirt:latest
$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/openstack-neutron-openvswitch-agent:latest localhost:8787/registry.access.redhat.com/openstack-neutron-openvswitch-agent:latest
$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/openstack-openvswitch-vswitchd:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-vswitchd:latest
$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/openstack-openvswitch-db-server:latest localhost:8787/registry.access.redhat.com/openstack-openvswitch-db-server:latest
$ sudo docker tag registry.access.redhat.com/rhosp11_tech_preview/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_defaultsDockerNamespace をレジストリーの URL に変更します。また、DockerNamespaceIsRegistrytrue に設定します。以下に例を示します。

parameter_defaults:
  DockerNamespace: registry.example.com:8787/registry.access.redhat.com
  DockerNamespaceIsRegistry: true

ローカルレジストリーに必要な Docker イメージが追加され、コンテナー化されたコンピュートの設定はこのレジストリーを使用するように変更されました。

11.5. オーバークラウドのデプロイメントへの環境ファイルの追加

オーバークラウドの作成時には、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] ...

director により、コンテナー化されたコンピュートノードによりオーバークラウドが作成されました。