Tanzu NSX アプリケーションのモダナイゼーション ネットワーク

vSphere with Tanzu 7.0u2, NSX-ALB LoadBalancer の簡易構成の構築

はじめまして。VMware の伊藤です。Tanzu 製品のプラットフォームアーキテクトとして働いており、開発と運用双方の経験があります。この記事ではロードバランサーとして NSX-ALB(別名Avi)を使って vSphere with Tanzu を vSphere 7.0u2 で構成する手順を紹介します。

この記事ではほぼ最小構成で vSphere with Tanzu を構築します。構築の難易度を下げるためにネットワークや設定などをシンプル化している一方、セキュリティや冗長化などは甘めに設定されています。そのため、この記事の内容をそのまま本番環境に適用することは避けてください。具体的には本番環境ではロードバランサーのコントローラーを冗長化し、「外部からアクセスのあるロードバランサー エンジンが使うIPのネットワーク」と「ワークロードクラスタが使う内部のデータ用ネットワーク」を分離した構成を検討ください。

 

構築するネットワーク構成

vSphere with Tanzu の構築に入る前に作成する構成を確認します。インフラ面で設定が多いのはネットワークだけであり、それ以外のストレージや vSphere 自体の設定は vSphere の基礎的な知識があれば難しくありません。

以下にこの記事で構築するインフラ構成を記載します。

 

vSphere with Tanzuを構成するには3台以上のESXiが必要です。コントローラー VM(スーパーバイザークラスタのノード)は3台構成になるので本番環境では冗長化も考慮して4台以上で vSphere クラスタを構成することを推奨します。

重要なのは vSphere に2つの Distributed Port が作成されており、「dp-mgmt-32」をマネージメント系として利用し、「dp-data-48」をデータ系として利用します。これらのネットワーク間ではルーティング経由で疎通できる必要があります。この記事の環境では ESXi が接続する物理 L3Switch として Cisco 社の Catalyst を利用しており、必要な VLAN をTrunk で vSphere の物理NIC(vmnic1)に提供しています。vmnic0は管理用と共有ファイルサーバーへの接続、 vMotion にしか利用していません。

dp-mgmt-32 及び dp-data-48 はともに DHCP が有効化してあり、インターネットへのアクセスに障害となる Firewall や HTTP Proxy がありません。インターネットは vSphere with Tanzu が使うイメージや Kubernetes 上で動くコンテナイメージの VMware リポジトリからの取得に使われます。そのため、Firewall がある場合はポートやアクセス先に穴を開け、Proxy がある場合はそれを利用するように追加設定が必要となります。他には完全にインターネットアクセスがない環境でも vSphere with Tanzu は展開可能です。ただ、これらの手法は環境構築の手順が増えるため、この記事では扱いません。

 

次に管理用ネットワークとデータ用ネットワークを中心にして、vSphere with Tanzu に使われるコンポーネント群がどのようにそれらのネットワークに接続されるかを説明します。

まず、vCenter ですが、今回は管理用ネットワークに接続しています。IP 到達性があれば別のネットワークでも構いません。

左から2つめの Avi Controller は K8s が使う L4 LoadBalancer や Ingress のIPを提供するロードバランサー機能のコントローラーとなる VM です。今回は1台のみ展開しますが、クラスタ構成を組むこともできます。これは管理用ネットワークにのみに接続します。

左から3つめの Avi Service Engine (SE) はロードバランサーとして通信を転送するVMです。Avi SE は Avi Controller により管理されるため、ユーザーが直接操作することはありません。必要になればコントローラーが勝手に作成(増やす)し、不要になれば勝手に台数を減らします。今回は Active/Standby 構成を組みますが、Active/Active 構成や N+M (必要なN台 + バッファのM台)構成を使うこともできます。また、ワークロードクラスタ単位に専有の Avi SE を展開することもできますが、今回はワークロードクラスタで Avi SE を共有する設定をおこないます。図にあるように Avi SE は管理用ネットワークにも、データ用ネットワーク(LoadBalancer として払い出される IP)にも接続します。今回は管理用ネットワークの IP には DHCP のアドレスを利用しますが、IP Pool を使うこともできます。データ用の IP にも DHCP を使えますが、今回はロードバランサーで使う IP アドレスを調整しやすいように IP Pool を定義して、そこから払い出す設定とします。

左から4つめのスーパーバイザークラスタは、右にあるワークロードクラスタ(Kubernetes)を管理するための Kubernetes となります。このスーパーバイザクラスタにたいして、「ワークロードクラスタ X を作成/スケール/アップグレード/削除/その他してください」と命令を kubectl で投げることにより、ワークロードクラスタを簡単に構成変更することができます。スーパーバイザクラスタのノードは下の管理用ネットワークにも上のデータ用ネットワークにも接続します。

最後の右端のワークロードクラスタは実際にアプリケーションを動かすクラスタです。ユーザー視点としては一般的な K8s クラスタですが、運用者視点では vSphere (左にあるスーパーバイザークラスタ)によりマネージドされる K8s クラスタとなります。これはデータ用ネットワークにのみ接続され、下側の管理用ネットワークには接続されません。

上記のネットワーク利用法をみるとわかりますが、管理用ネットワークに必要な IP 数は少ないのにたいしてデータ用ネットワークでは規模に応じてIP数が増大します。当然ですがロードバランサーが使う IP レンジとワークロードクラスタの K8s ノードが使う IP レンジが固定 IP や DHCP も含めて重複しないようにする必要があります。検証環境では問題ないかもしれませんが、本番環境ですとプレフィックス「/24」だと IP が不足する可能性が高いので、余裕を持ったネットワーク設計をするように注意してください。

この記事では順に Avi やスーパーバイザークラスタのコンポーネントのネットワーク設定を実施していきますが、上記図のどこをどの設定項目で設定しているかを意識するようにしてください。

 

vSphereの準備

NSX ALB (Avi)および vSphere with Tanzu を展開するまえに、vSphere 自体に必要となる設定を加えます。

まず HA と DRS を有効化します。

この設定に問題があると、vSphere with Tanzu を有効化する際のチェックに失敗し、「HAを有効化してください」「DRSを有効化してください」などと設定を促されます。細かな設定までは問われないので環境ごとに必要な設定としてください。この記事の環境ではデフォルト設定をそのまま利用しています。

 

次に K8s で利用するストレージを指定します。

図にあるようにデータストアにたいしてタグ付けをおこない、仮想マシンストレージポリシーでタグを利用してデータストアを選択します。ここで作成したストレージポリシーを後ほど vSphere with Tanzu の構築設定で利用します。具体的な手順は以下を参照ください。

vSphere with Tanzu のストレージ ポリシーの作成

 

次にコンテンツライブラリの設定をします。

コンテンツライブラリでは vSphere with Tanzu が利用する K8s ノードなどの仮想マシンイメージの登録をおこないます。作成したコンテンツライブラリは vSphere with Tanzu の構築設定で指定します。具体的な手順は以下を参照ください。

新しいサブスクライブ済みコンテンツ ライブラリの作成

 

ロードバランサー NSX ALB (Avi)の構築

vSphere の準備が整ったため、ロードバランサーの展開をおこないます。ロードバランサーの展開はおおまかに以下の手順となります。

  1. Avi Controller の OVA を展開。Controller のネットワーク設定はここで実施
  2. 展開した Avi Controller にブラウザでアクセス
  3. Avi Controller の初期設定 (Service Engine のマネージメント側の設定)
  4. SSL証明書の設定
  5. Service Engine (SE) の設定(ネットワーク以外)
  6. Service Engine のデータ側ネットワークの設定(複数ページで実施)

以下からスクリーンショットベースで設定をしていきますが、具体的な手順は以下のオリジナルドキュメントをご参照ください。Avi Controllerの管理画面は英語なので、日本語のドキュメントで大枠を掴んだあとで、細かな設定画面内の項目名は英語ドキュメントで参照すると分かりやすいと思います。

英語: Install and Configure the NSX Advanced Load Balancer

日本語: NSX Advanced Load Balancer のインストールと構成

 

まず、Avi Controller の OVA を以下から入手します。MyVMwareのアカウントが必要ですが、アカウントがあれば誰でもダウンロードできます (2021年3月時点)。ただし、ライセンスがないと試用版として使用期限が設けられます。

Download VMware NSX Advanced Load Balancer

Go To Download -> Download Now -> Avi のページへ飛ぶ -> バージョン 20.1.4 -> VMware -> ダウンロードアイコンをクリック

 

OVAを入手したら、それを以下の図のように vSphere に展開します。

OVAの展開時に Avi Controller のネットワーク周りのパラメーターの設定が求められます。冒頭の図を参照して管理系ネットワークの設定を実施してください。

今回は以下の設定をしています。

  • マネージメントネットワーク: dp-mgmt-32
  • IP Address: 192.168.32.19
  • Default Gateway: 192.168.32.1
  • Sysadmin login authentication key: オプション設定なので設定せず

 

デプロイが完了したら、電源 ON します。なお、Avi コントローラーが必要とする CPU /メモリリソースは本番環境を想定して多め(vCPU 8, メモリ24G)になっています。検証環境であれば少し減らしても問題なく、この記事の環境では仮想マシン設定で vCPU 3, メモリ 16G に変更しています。

起動してから5-10分(初起動時のみ、裏側で様々な設定がされるため時間がかかります)ほど待って、ブラウザで Avi Controller の IP にアクセスをします。今回であれば「http://192.168.32.19」となり、HTTPSにリダイレクトされます。繋がらなかったり白い画面が出る場合は少し待ってからアクセスしてみてください。

 

初回アクセスすると上記図のようにアラートが表示されるかもしれませんが、証明書に関するものなので無視してください。 Chrome であれば「thisisunsafe」と入力すれば進めますが、具体的な手順はブラウザ次第となります。

アラートページをすぎると図の中央にある admin ユーザの設定を実施、DNS やバックアップのパスフレーズの設定などを実施します。パスフレーズの下に隠れているNTPの設定はインターネットに接続していればそのままで問題ありません。

 

次にEメールの設定ですが、今回は利用しないので None を指定します。基盤の設定は vSphere を使うので VMware を設定します。基盤にVMwareを設定すると vCenter へのアクセス情報を求められるので、入力をおこないます。「Permission は Write」「SDN Intergration はNone」にしてください。両設定ともデフォルトです。

 

vCenter に接続が成功すると、vSphere のデーターセンターの指定を実施します。データセンター下の2つのチェックボックスは構築するネットワークに依存して設定が変わりますが、今回は Avi Service Engine からワークロードクラスタのノードにたいしてルーティングが発生しない(両者とも同一ネットワーク dp-data-48 にいるため)のでチェックを外しています。

マネージメントネットワークの設定で dp-mgmt-32 を指定し、Service Engine の IP を DHCP から取得する設定をします。最後のテナントの設定は No としてください。以上で Avi Controller の初期設定は終了となり、Avi Controller の管理画面が表示されます。

ここまでの設定は以下のドキュメントを参照ください。

Configure the Controller

 

管理画面での最初の設定はSSL証明書(HTTPS)となります。

管理画面左上のスタックアイコンより、Administration -> Settings -> Access Settings と進みます。右上の鉛筆アイコンから編集に入り、既存の SSL/TLS Certificate を 「x」ボタンで消し、右側の「V」アイコンから「Create Certificate」で新規の証明書の作成を実施します。

証明書のパラメーターは今回は以下としました。

  • Name: mycert
  • Type: Self Signed
  • Algorithm: RSA
  • Key Size: 2048
  • Common Name: 192.168.32.19 (IPアドレス)
  • Subject Alternate Name: 192.168.32.19

きちんとした公式の証明書がある場合はアップロードして利用することも可能です。証明書の更新後におそらくブラウザのリロードが必要になります(証明書が変わったのでアラート画面の再表示が必要なため)。

設定詳細は以下のドキュメントを参照ください。

Assign a Certificate to the Controller

 

作成した証明書は以下の図のように「Templates -> Security -> SSL/TLS Certificate」と進み、取得したい証明書をクリックしてダウンロードボタンを押すと表示されます。証明書の鍵(key)と証明書(Certificate)の2つがあるので混同しないように注意してください。後ほど vSphere with Tanzu の設定で利用するのは下の Certificate 側です。

 

次に Service Engine をどのように展開するかを設定します。

Infrastructure -> Service Engine Group と進んでください。

最初から存在する Default-Group の設定を変更し、HA を Active/Standby に設定しました。利用できるライセンスにより利用できる冗長化方式は変わります。また、ここでは NSX-ALB SE ごとにいくつの VIP を払い出せるかを「Virtual Service per Service Engine」で定義できます。デフォルトの10で少ない場合は増やしてください。

詳細は以下のドキュメントを参照ください。

Configure a Service Engine Group

 

ここからは Service Engine のデータ側(ロードバランサーのIP)にたいするネットワーク設定が続きます。

Infrastructure -> Networks と進んで管理画面を開きます。

データ用ネットワーク(今回は dp-data-48)の編集アイコンをクリックし、このネットワークの設定をおこないます。今回は以下の設定をしています。

  1. DHCP Enabled: IP Pool を使うのでチェックを外す
  2. Add Subnet でサブネット 192.168.40.0/22 を追加
  3. サブネットとIP Pool (192.168.48.50-192.168.48.255)を設定。IP Pool には K8s のL4LB, Ingress が使うIPを指定

設定して保存すると、図の左下のように設定表示が更新されます。

なお、ここで指定したネットワークとワークロードクラスタのネットワークが異なる場合は、ルーティングの設定(Infrastructure -> Routing)も追加で必要になります。今回は同一ネットワークに両者が存在するのでルーティング設定は不要となるため割愛します。

 

ネットワーク設定の詳細は以下のドキュメントを参照してください。

Configure a Virtual IP Network

 

次にIPAM(IP Address Management)とDNSの設定をします。

Templates -> Profiles -> IPAM/DNS Profiles と進みます。

IPAMでは先程設定したネットワークをプロファイル化し、同じようにDNS設定もプロファイル化します。

プロファイルの設定は以下のドキュメントを参照してください。

Configure the IPAM and DNS Profiles

 

最後の設定はクラウド設定(vSphere)に先程作成した IPAM と DNS プロファイルを結びつける作業となります。

Infrastructure -> Clouds と進み、Default-Cloud を編集してプロファイルを結びつけています。

詳細は以下のドキュメントを参照ください。

Test the NSX Advanced Load Balancer

 

以上で Avi LoadBalancer の構築設定は終了となります。

 

vSphere with Tanzu の展開

vSphere 自体 と NSX ALB の下準備が整ったため、ここからは vSphere Client で vSphere with Tanzu の展開作業を開始します。

具体的な設定に入る前に、展開するスーパーバイザークラスタのネットワーク構成をおさらいします。

管理用のネットワークには dp-mgmt-32 を使い、ワークロード用のネットワークには dp-data-48 を使います。具体的にはスーパーバイザークラスタの管理ネットワークの設定には右下のものを利用し、スーパーバイザークラスタ及びワークロードクラスタのワークロードネットワーク(K8sノード間の通信など)の設定は右上の設定をほどこします。

 

vSphere with Tanzu の構築/設定にはメニューには「ワークロード管理」から移動します。

設定は画面に沿って実施していくだけとなります。ネットワークスタックには「vCenter Server ネットワーク」を指定します。なお、ワークロード管理を開始するには初回はライセンス入力か試用のためのフォーム入力(名前やEメールなど)が求められるので設定してください。

 

次に vSphere データセンター内のクラスタの指定や、展開する Supervisor クラスタのノードのリソース指定(今回は極小とする)、スーパーバイザークラスタが利用するストレージ(ストレージポリシーで指定)を選択します。

 

次に先ほど展開した Avi Controller に接続をします。ユーザー名は Avi の初期設定で指定したクレデンシャルを指定し、サーバー認証局には先ほど手順を紹介した手法で取得した Avi Controller の SSL 証明書を貼り付けてください。

 

次にスーパーバイザークラスタの管理側のネットワーク設定をします。先のネットワーク図だと下側です。開始 IP アドレスよりスーパーバイザークラスタの管理ネットワーク側の IP が割り当てられますが、必要な IP 数は現時点で多くありません。

 

その次にスーパーバイザークラスタ及びワークロードクラスタが使うネットワークの設定を実施します。先のネットワーク図では上側です。設定をする際に「K8s の中のネットワーク」なのか「外のネットワークなのか」に注意してください。IP アドレス範囲はワークロードクラスタのノード数以上になるので、大規模に使う場合は広めに割り当ててください。

 

最後に作成した vSphere with Tanzu のコンテンツライブラリの設定を実施し、設定は終了となります。

設定に問題がなければ、設定終了から20-30分ほどで vSphere with Tanzu の展開が終了します。

ここまでの設定の詳細は以下のドキュメントをご参照ください。

vSphere ネットワークを使用したワークロード管理の有効化

 

 

構成ステータスが実行中になり、Avi Service Engine が展開されたら利用できるようになります。