Contrail クラウドの導入
Contrail クラウド導入の前提条件
Contrail クラウドを導入する前に、システムが次の前提条件を満たしていることを確認してください。
インフラストラクチャ ネットワーク
すべてのシステムは、Contrail Cloud リポジトリのサテライトにアクセスできる必要があります。このサテライトは、パッケージの配布とソフトウェアバージョンの制御に使用されます。
Contrail Cloud Jump ホストは、すべてのマネージド サーバーの IPMI(インテリジェント プラットフォーム管理インターフェイス)にアクセスできる必要があります。
プリブート実行環境(PXE)の起動を許可するには、各マネージド サーバーの管理インターフェイスと同じブロードキャスト ドメイン内にジャンプ ホストを含める必要があります。
メモ:ラックごとに異なるスイッチング デバイスを使用する複数のネットワークを実行する場合、インターフェイス間で VLAN を拡張することで PXE ブートが実行されます。ネットワーク ファブリックの BOOTP 転送はサポートされていません。このネットワークでは、アンダークラウドが唯一の DHCP サーバーです。
- ホスト名のジャンプを長い名前(FQDN)に設定する必要があります。
- また、特定の FQDN のジャンプ ホストに適切な /etc/hosts エントリーを設定する必要があります。
- ジャンプ ホスト FQDN は DNS によって解決可能で、クラウド環境全体から到達可能/ルーティング可能な IP を返す必要があります。
Contrail Cloud Jump Hostの設定
Red Hat Openstack Platform Director(アンダークラウドとも呼ばれる)は、Linux のカーネルベース仮想マシン(KVM)Contrail Cloud Jump ホスト上で仮想マシンとして導入されます。KVM ホスト OS が以下を実行していることを確認する必要があります。
ベース パッケージのみがインストールされた Red Hat Enterprise Linux 8.2 以前を実行します。Contrail クラウドは、RHEL 8.2 と必要なすべてのパッケージをインストール プロセスの一環としてインストールします。
他の仮想マシンを実行していない。
Contrail クラウド リポジトリのサテライトにアクセスできるネットワーク接続があり、物理ハードウェアへの IPMI アクセスが可能です。
他のインフラストラクチャ リソースのプロビジョニングに使用できるネットワーク接続を備えています。
ディレクトリに 500 GB 以上のスペースを
/var
格納し、仮想マシン、パッケージ、イメージをホストします。40 GB 以上の RAM と 24 個の vCPU を備えています。
パスワードレス
sudo
の権限を持つ root ユーザーなどのユーザーをサポートします。ユーザーの権限を持つループバックでのパスワードレスSSHアクセスを
sudo
提供します。インターネットサイトとサテライトサイトをDNSで解決します。
NTP ソースと同期している時間があります。
Contrailクラウド導入の導入シーケンス
次の導入シーケンスでは、Contrail クラウドのインストール、構成、導入の方法について説明します。
シーケンス内のいずれかの手順でエラーが発生した場合は、クリーンアップ機能を使用してステップを元に戻すことができます。各スクリプトを(「-c」引数を使用して)実行してインストール・シーケンスを逆転させ、シーケンス内の目的の状態に戻します。たとえば、ContrailクラウドとOpenStackクラスターを再導入するには、次のようにします。
/var/lib/contrail_cloud/scripts/k8s-tf-operator-deploy.sh -c /var/lib/contrail_cloud/scripts/openstack-deploy.sh -c /var/lib/contrail_cloud/scripts/openstack-deploy.sh /var/lib/contrail_cloud/scripts/k8s-tf-operator-deploy.sh
k8s-tf-operator-deploy.sh スクリプトをクリーンアップする場合は、openstack-deploy.sh スクリプトをクリーンアップしてから、両方をデプロイして、それぞれが一貫した状態になっていることを確認する必要があります。
- Jump HostへのContrailクラウドインストーラのインストール
- 設定ファイルの準備
- Openstack Ironic Inventory にノードを追加
- 制御ホストの導入
- すべての制御ロールの VM の作成
- コンピューティング ノードの割り当て
- ストレージ ノードの割り当て
- Kubernetes クラスタの導入
- OpenStack クラスターの導入
- Contrail クラウド コントロール プレーンの導入
- OpenStack 環境の検証
- VNFの画像とテンプレートのインストール
- 新しいコンピューティング ノードとストレージ ノードの追加
- ログの収集
Jump HostへのContrailクラウドインストーラのインストール
ジャンプ ホストは Contrail クラウド ホストであり、Contrail クラウドの導入の出発点です。インストールを開始する前に、以下のことを行います。
Contrail クラウドのインストール
-
ジャンプホストの contrail_cloud_installer.sh をアンターします。
インストーラのダウンロード先: Juniper Networks Contrail Cloud Download Site
環境変数を設定して、アクティベーションキーを指定します。
例えば:
SATELLITE="contrail-cloud-satellite.juniper.net" SATELLITE_KEY="ak-my-account-key" SATELLITE_ORG=”ContrailCloud”
インストーラー スクリプトにパッケージをインストールするために必要な権限があることを確認します。パッケージは /var/lib/contrail_cloud ディレクトリにインストールされています。
./contrail_cloud_installer.sh \ --satellite_host ${SATELLITE} \ --satellite_key ${SATELLITE_KEY} \ --satellite_org ${SATELLITE_ORG}
Ansible 変数でサイト固有の情報を定義します。
ディレクトリを /var/lib/contrail_cloud/config に変更します。
サンプル /var/lib/contrail_cloud/sample/*.yml 設定ファイルを /var/lib/contrail_cloud/config ディレクトリに コピーします。
メモ:configディレクトリに既存の設定ファイルがある場合は、この手順をスキップできます。
アクティベーション キー(サテライト組織と FQDN)を site.yml 設定ファイルに追加します。
global: rhel: # Contrail Cloud Activation Key # These details are provided when you request an activation key from # contrail cloud subscriptions <contrail_cloud_subscriptions@juniper.net> # satellite: #SATELLITE_KEY should be defined in vault-data.yml file #SATELLITE_ORG organization: "ContrailCloud" #SATELLITE_FQDN fqdn: contrail-cloud-satellite.juniper.net
使用環境のサイト固有の設定で 、site.yml 設定ファイル (/var/lib/contrail_cloud/config/site.yml) をカスタマイズします。サイトごとに以下のフィールドが変更されていることを確認します。
global: # List of DNS nameservers dns: # Google Public DNS - "8.8.8.8" - "8.8.4.4" # List of NTP time servers ntp: # public pool.ntp.org - "0.pool.ntp.org" - "1.pool.ntp.org" - "2.pool.ntp.org" - "3.pool.ntp.org" # Timezone for all servers timezone: 'America/Los_Angeles' rhel: # Contrail Cloud Activation Key # These details are provided when you request an activation key from # contrail cloud subscriptions <contrail_cloud_subscriptions@juniper.net> # satellite: #SATELLITE_KEY should be defined in vault-data.yml file #SATELLITE_ORG organization: "ContrailCloud16" #SATELLITE_FQDN fqdn: contrail-cloud-satellite.juniper.net # DNS domain information. # Must be unique for every deployment to avoid name conflicts. # Need not be a registered DNS domain. domain: “my.unique.domain” jumphost: network: # network used for provisioning (PXE booting) servers provision: # jumphost nic to be used for provisioning (PXE booting) servers nic: eno1
メモ:Intel X710 NIC 上に DPDK を展開する場合は、次のように DPDK ドライバーを
vfio-pci
site.yml 構成ファイル内に設定します。overcloud: contrail: vrouter: dpdk: driver: "vfio-pci"
サポートされている NIC とドライバーのマッピングの完全なマトリックスについては、Contrail Networking NIC サポート マトリクスを参照してください。
-
Ansible Vaultを準備します。保管庫では、プレイブックやロールのプレーンテキストとしてではなく、パスワードやキーなどの機密データを暗号化されたファイルに保存することができます。
-
Vault-data.yml設定ファイルをカスタマイズします。
ansible-vault edit /var/lib/contrail_cloud/config/vault-data.yml
-
保管庫で暗号化されたファイルのパスワードを変更します。デフォルトのパスワードは.
c0ntrail123
ansible-vault rekey /var/lib/contrail_cloud/config/vault-data.yml
メモ:プレーンテキストパスワードを使用してVaultのパスワードを作成します。プレーンテキストのパスワードを使用すると、Ansibleが毎回パスワードを要求できなくなります。ユーザーの
contrail
ファイルを作成するときは、それが読み取り専用であることを確認します。展開が完了した後、ファイルを削除することをお勧めします。sudo chown contrail /var/lib/contrail_cloud/config/.vault_password sudo chmod 0400 /var/lib/contrail_cloud/config/.vault_password
-
ansible-Vault の編集 config/vault-data.yml コマンドを使用して、サテライト キーを Vault に追加します。
vault: global: rhel: # Contrail Cloud Activation Key satellite: #SATELLITE_KEY key: "ak-my-account-key"
-
Ansible プロビジョニングを実行します。プロビジョニングには、ジャンプ ホスト、RHV マネージャー、アンダークラウド(RHOSPd)の設定が含まれます。
-
パスワードを指定せずに SSH 接続を確立できることを確認します。
sshローカルホスト true
-
自動化スクリプトをインストールします。
jp/jp/jp/jp/contrail_cloud/scripts/install_contrail_cloud_manager.sh
プロビジョニングが完了すると、ジャンプホストでユーザー名
contrail
を持つ新しいユーザーが作成され、新しいSSHキーのセットが生成され、アンダークラウドVMとコントロールホストにユーザーがアクセスできるようになります。Contrail Insights ノードを含むオーバークラウド ノードは、heat-admin ユーザーがアクセスでき、デフォルトではアンダークラウド VM に保存されている別のキーのペアを使用します。上記で説明したように、 Vault-data.yml ファイルのデフォルトパスワードを必ず変更してください。
-
Contrail クラウドでは、ディレクトリに /home/contrail/.ssh/config
、各オーバークラウド ノード(およびアンダークラウド)で使用されるユーザー名を含むエントリーが追加されます。これは、ユーザーを指定しなくても使用 ssh undercloud
できる、または ssh <address>
使用できることを意味します。
ユーザーキーheat-admin
を contrail
site.yml 設定ファイルで定義することで、 を許可できます。
global: service_user: use_ssh_key_in_overcloud: true
ユーザーを contrail
使用して 、/var/lib/contrail_cloud/scripts ディレクトリから Contrail Cloud で後続のすべての操作を実行します。
su - contrail cd /var/lib/contrail_cloud/scripts
ContrailユーザーのSSHキーは、ルートによって承認されています。つまり、ContrailユーザーはジャンプホストにSSHで接続 root
できます。
設定ファイルの準備
表 1 は、Contrail クラウドで使用する設定ファイルを示しています。対応するサンプル YAML ファイルについては、「 付録 A 」を参照してください。
/var/lib/contrail_cloud/scripts/node-configuration.py スクリプトを実行することで、いつでも設定ファイルを検証できます。このスクリプトは、すべての設定ファイルを読み込み、構文をチェックし、構造と値がスキーマに準拠していることを検証します。探している結果に応じて、Python スクリプトで異なる引数を使用できます。
セキュリティで保護されたレジストリは、Contrail クラウド リリース 16.3 で使用されています。コンテナー イメージ レジストリ資格情報をファイルに vault-data.yml
入力する必要があります。ジャンプ ホストから、詳細と Vault データの例を参照してください /var/lib/contrail_cloud/samples/unencrypted-vault-data.yml
。デプロイアクティビティを実行する前に、常に最新の認証情報でファイルを更新してください vault-data.yml
。
ジャンプホストの /var/lib/contrail_cloud/sample/ ディレクトリからサンプルファイルをコピーできます。
構成設定 |
ファイル名と場所 |
説明 |
---|---|---|
サイト設定 |
|
デプロイメント環境のプロパティを定義します。このファイルのプロパティは、展開ごとに一意であり、カスタマイズする必要があります。 |
インベントリ設定 |
|
Contrail クラウドが使用するすべてのサーバーを定義します。 |
ホスト設定の制御 |
制御機能を高可用性にするには、構成と inventory.yml ファイルで 3 つの制御ホストを定義する必要があります。 |
各制御ホストのサーバーおよびネットワーク プロパティを定義します。すべての Contrail クラウド制御機能の仮想マシンを実行します。コントロール ホストで作成される VM には、以下のものがあります。
制御 VM をホストするには、制御ホストが以下の最小仕様を満たす必要があります。
|
Kubernetes ホスト設定 |
|
Kubernetes VM ホスト ノードを定義します。 |
Overcloud ネットワーク設定 |
|
OpenStack および Contrail Insights VM に導入されるロール。各ロールのネットワーク レイアウトを定義します。 |
コンピューティング ノード設定 |
|
コンピューティング リソースとホスト集約を定義します。また、ホスト集約を管理し、このファイル内の使用可能ゾーンと一致させます。 また、設定ファイル内のコンピューティング ノードを定義する |
ストレージ ノードの設定 |
|
Ceph ストレージ・サービスを実行するストレージ・ノードを定義します。 ストレージ機能の高可用性を確保するには、最低でも 3 つのストレージ ホストを定義する必要があります。また、コンフィギュレーション・ファイル内のストレージ・ノードも定義する |
Vault データ設定 |
|
パスワード、プロダクトキー、ユーザーデータ、セキュリティで保護されたレジストリ情報など、すべての機密性が高いユーザーデータを保持する暗号化ファイル。 |
Openstack Ironic Inventory にノードを追加
/var/lib/contrail_cloud/scripts/inventory-assign.sh スクリプトは、ファイル内で定義したすべてのノードをinventory.yml
皮肉なインベントリに追加します。皮肉なインベントリに追加されたノードは、Contrailクラウドによって管理されます。
皮肉なインベントリにノードを追加するには、
制御ホストの導入
制御ホストとは、仮想制御機能をコントローラノードとしてホストするサーバー上で実行されるハイパーバイザーです。コントローラ ノードは、サーバー機能の管理を担当する VM です。 control-hosts-deploy.sh スクリプトは、 /var/lib/contrail_cloud/config/control-host-nodes.yml ファイルで定義されているすべてのノードを制御ホストとして割り当てます。ホストはイメージ化、起動、設定、準備を行い、クラウド上のコントロールプレーンVMをホストします。
インベントリに制御ホストロールを展開するには、次の手順にしたがっています。
すべての制御ロールの VM の作成
control-vms-deploy.sh スクリプトは、VMの詳細を皮肉なインベントリにインポートします。
制御ロール用の VM を作成するには、以下の手順に示します。
コンピューティング ノードの割り当て
コンピューティング ノードとは、ネットワーク上でサービスを提供する仮想マシンをホストするサーバーです。 compute-nodes-assign.sh スクリプトは、 compute-nodes.yml 設定ファイル(/var/lib/contrail_cloud/config/compute-nodes.yml)で定義するすべてのノードに Nova コンピューティング ロールを割り当てます。
コンピューティング ノードを割り当てるには、
ストレージ ノードの割り当て
ストレージ ノードとは、データを保存することを目的としたサーバーです。ストレージ ノードは、Contrail Cloud で Red Hat Ceph ストレージ ソフトウェアを実行しています。storage-nodes-assign.ymlプレイブックは、(/var/lib/contrail_cloud/config/sorage-nodes.yml)ファイルでstorage-nodes.yml
定義されているすべてのノードにCephストレージロールを割り当てます。
ストレージノードを割り当てるには、
Kubernetes クラスタの導入
Kubernetes(k8s)クラスタは、Contrailコントロールプレーンのインフラストラクチャを提供するために使用されます。Contrailコントロールプレーンは、クラウド上のOpenStackクラスターの外に隣接して導入されます。 k8s-cluster-deploy.sh スクリプトは、Kubernetesクラスタの導入を開始します。
Kubernetes クラスタを導入するには、次の手順にしたがっています。
OpenStack クラスターの導入
openstack-deploy.sh スクリプトは、OpenStack overcloudを展開し、すべての制御機能と、以前のプレイブックで定義されたすべてのコンピューティングリソースとストレージリソースを備えています。
OpenStack クラスターを導入するには、以下の手順にしたがっています。
Contrail クラウド コントロール プレーンの導入
k8s-tf-operator-deploy.sh スクリプトは、Contrail コントロール プレーンを構成するサービスを Kubernetes に導入します。
この導入は、両方のクラスタが互いをより効率的に同期できるようにするために、openstack-deploy.sh と並行して行うのが最善です。
制御プレーンを導入するには、次の手順にしたがっています。
OpenStack 環境の検証
環境を検証して確認できます。デフォルトでは、フローティング IP(ISP)が必要なテストはスキップされます。スクリプトを provision-sdn-gateway.sh
実行してから、Tempest が使用できる SDN ゲートウェイと外部ネットワークをプロビジョニングします。Tempest は、ライブ OpenStack クラスターに対して実行される一連の統合テストです。オブジェクト定義の例は 、site.yml ファイル(/var/lib/contrail_cloud/samples/features/provision-sdn-gateway/site.yml)で見つけることができます。
新しく導入された環境で Tempest テスト コレクションを実行するには、 overcloud-validation.sh スクリプトを使用します。このスクリプトは CirrOS VM イメージをダウンロードし、オーバークラウドにアップロードして、新しいフレーバーを作成します。スクリプトの実行後、テストの結果は、2 つのファイルが作成される undercloud ホーム ディレクトリにあります。
tempest-subunit-smoke.xml
tempest-subunit-full.xml
ファイルの 1 行目には、失敗の数と実施されたテストの総数が表示されます。
VNFの画像とテンプレートのインストール
Horizon または OpenStack コマンドライン クライアントを使用して、VNF サービスの Glance イメージと Heat テンプレートをインストールできます。
新しいコンピューティング ノードとストレージ ノードの追加
新しいコンピューティング ノードとストレージ ノードを既存の環境に追加するには、以下の手順に基づきます。
inventory.yml 設定ファイルを更新し、inventory-assign.sh スクリプトを実行します。
compute-nodes.yml 設定ファイルを新しいノードで更新し、compute-nodes-assign.sh スクリプトを実行します。
storage-nodes.yml 設定ファイルを新しいノードで更新し、storage-nodes-assign.sh スクリプトを実行します。
openstack-deploy.sh スクリプトを再実行してください。
ログの収集
デプロイされたノードから重要なログ、構成、およびステータス データをすべて 1 か所に収集するスクリプトを実行できます。彼のスクリプトは、トラブルシューティングやサポートコールを行う際に特定の情報が必要な場合に役立ちます。
導入が成功した後にスクリプトを使用して、将来のアップグレードや障害と比較できるベースラインを提供することをお勧めします。設定、ステータス、ログを展開からアーカイブするには、次の手順にしたがっています。
/var/lib/contrail_cloud/scripts/collect_data.sh -r all
スクリプトの使用方法の collect_data.sh
説明は次のとおりです。
Usage: [-r ROLES ] [ -d ] [ -h|? ] -r ROLES collect data from specific role or environment. Possible values for ROLES: jumphost, undercloud, rhvm, control_hosts, k8s_hosts, openstack_controllers, contrail_tsn, compute_nodes, storage_nodes,contrail-insights_controller. You can specify multiple roles, eg. -r \"undercloud jumphost \" If not set data will be collected from all hosts. -d enable debugging messages -e external config -h print usage information