2023年12月15日金曜日

VMware Edge Cloud Orchestrator(Project Keswick)でEdgeの管理を試してみた

このブログは、vExperts Advent Calendar 2023の15日目です。 


最近EUCに限らずVMware関連でいろいろやっていますが、今回Edgeについて触ってみました。
VMware Explore 2023 LasVegasで発表されたVMware Tech Showcase」と呼ばれる取り組みによって、まだ製品としてリリースされていない開発中の機能・製品を一部試用することができます。現在VMware Tech Showcaseで利用可能な「VMware Edge Cloud Orchestrator  (以前の開発プロジェクト名称はProject Keswick)」を試してみたので、触ってみた内容をご紹介します。


■VMware Edge Cloud Orchestrator・Project Keswick の概要

はじめにソリューションの概要をご紹介します。

まず先に、Project Keswickについてです。Project Keswickは、VMwareの仮想化テクノロジーとGitOpsを組み合わせ、大量のEdgeをクラウドから一括で展開・管理する機能の提供を目的とし、VMware Explore 2022 USで発表された開発プロジェクトです。

Project KeswickのEdgeは、ESXiベースによって構成されます。そして、Edgeデバイスの管理者は、GitリポジトリにEdgeデバイス(ESXiホスト)や仮想マシン、コンテナなどの構成ファイルを作成します。Project KeswickのEdgeをインストール・起動し、EdgeデバイスがKeswickのサービスに登録されると、Edgeデバイスは自動的にGitリポジトリから構成情報を取得し、構成や仮想マシン、コンテナサービスを自動展開する仕組みを提供します。

●イメージ図



次にVMware Edge Cloud Orchestrator(VECO)についてです。VECOはVMware Explore 2023 Las Vegasで、Edge向けの統合オーケストレーション機能として発表されました。VMware SD-WAN(VMware SASE)のオーケストレーション機能と、VMware Edge Computingソリューションのオーケストレーション機能を統合し、Edge NetworkingとEdge Computingのクラウド統合管理を実現するものだと発表されています。
つまり、EdgeデバイスもEdgeがつながるネットワークも、まとめて1つのコンソールで管理!といったVMwareらしいソリューションですね。


VMware Explore 2023 Las Vegas直後に、VMware Tech Showcaseのプログラムで利用できるようになっていたProject Keswickですが、最近あらためてログインをしてみると管理コンソール名が「Edge Cloud Orchestrator」に変わっていました。



画面左上の"Edge Cloud Orchestrator"の隣に[Edge Compute]といったプルダウンが用意されているので、いずれここからSD-WANのサービスなどを選択して管理画面にアクセスできるんじゃないかなと思われます。(VMware SASE/SD-WANの管理画面も似たようなプルダウンで管理サービスを切り替えるコンソールなので)

■検証時の操作の流れ

事前の説明はこれくらいにして、VECOにEdgeデバイスを登録してサンプルのワークロードを動かしてみたいと思います。今回の操作では以下の流れで操作します。
  1. Gitリポジトリの準備・登録
  2. Edgeの展開
  3. Edgeの登録
  4. Edgeデバイスの設定変更
  5. ワークロードの展開
    ・コンテナサービスを展開
    ・仮想マシンを展開
VMware Edge Cloud Orchestrator(Project Keswick)のアクティベーションは、VMware Tech Showcaseにアクセスし、"VMware Edge Cloud Orchestrator - Edge Compute (Previously Project Keswick)"の[Get started]をクリックするとサービスの有効化ページに進めることができます。利用開始には、VMware Customer Connectのアカウントが必要です。

アクティベーションが完了すると、VMware Cloud ServicesのコンソールにVMware Edge Cloud Orchestratorサービスが表示されるようになります。


1.Gitリポジトリの準備・登録

まず、Gitリポジトリの準備を行います。今回はGitHubを使用します。

はじめに、Edge用に新しいリポジトリを作成します。リポジトリの名前を決め、Privateリポジトリの設定で作成します。


リポジトリの作成が完了したら、作成したリポジトリのURLを確認し、コピーします。

Edge Cloud Orchestratorを開き、[Git Repositories]を開き[ADD]をクリックします。


作成したGitHubのリポジトリの情報を入力します。先程コピーしたリポジトリのURLを入力し、利用するBranch名を入力します。(今回Branch名はmainを指定)必要に応じてDescriptionに説明文を入力し、[CONFIRM]をクリックします。

Gitリポジトリの情報が登録されました。

次に、Edgeデバイスがプライベートリポジトリにアクセスできるようにするために、アクセストークンを発行します。GitHub の右上にあるアイコンをクリックし、[Settings] を開きます。[Developer Settings]を開き、[Personal access tokens]-[Fine-grained personal access tokes]の順に画面を開きます。画面右側の[Generate new token]をクリックします。

"Token name"に任意の名前を入力します。[Only select repositories]を選択し、先程作成したリポジトリを選択します。

次にアクセス権を定義します。"Permissions"を開き、"Contens"の権限を[Access Read-only]に変更します。

以上の設定でOKです。[Generate token]をクリックしてトークンを発行します。

トークンが発行され、画面に表示されます。このトークンは二度と表示されないため、必ずコピーしてメモしておきます。


以上で、Gitリポジトリの準備は完了です。

2.Edgeの展開

次にEdgeを展開します。
Edgeの作成方法は現在複数準備されております。Edgeコンピューティングの本来用途を考えると、小型のPCなどのハードウェアにISOイメージ利用する方式でインストールするのが望ましいですが、今回はOVAファイルを用いて、vSphere上の仮想マシンとしてEdgeを展開します。(EdgeのOSはほとんどESXiなので、実質Nested ESXiの構成に近い形になります。)

Edge Cloud Orchestratorを開き、[Lanunchpad]を開き[DOWNLOAD]-[OVA]をクリックすると、ファイルがダウンロードされます。

ダウンロードしたファイルは、tar.gzファイルなので、解凍・展開を行います。(最近のWIndows だとコマンドプロンプトで、tar.gzファイルの解凍ができることを知らなかった。)

解凍したOVAファイルを、vSphere環境に展開します。

OVFテンプレートの選択で、ダウンロード・解凍したOVAファイルを選択します。

仮想マシン名や展開先のフォルダを選択します。

OVAファイルの仮想マシン情報が表示されるので、[次へ]をクリックします。

OVAテンプレートのカスタマイズ情報を入力します。
(ここで、Rootアカウントのパスワードを入力していますが、後ほどのタイミングで指定パスワードが適用されていないことがわかります。。)

画面を下部にスクロールし、その他項目を確認して[次へ]をクリックします。

最後に詳細を確認し、[完了]クリックします。

しばらくするとデプロイが完了します。仮想マシンの電源をパワーオンします。

下記は起動中の仮想マシンの画面です。ESXiが起動していることがおわかりいただけるかと思います。

しばらくすると起動完了です。
概ね、従来からのESXiの画面とかわりない表示です。画面真ん中に、ハードウェア環境の管理情報が表示されています。後ほど、ハードウェア環境の管理情報は利用します。

[F2キー]を押下し、設定画面を開きます。
仮想マシンデプロイ時に適用したrootのアカウントのパスワード情報はなぜか適用されていないので、パスワード未入力でログインができました。

rootアカウントのパスワードが未設定の状態なので、パスワードを設定します。

また、SSHもOVFデプロイ時の選択で有効にしたはずですが、有効になっていなかったのでこのタイミングで有効化しました。

EdgeノードのIPアドレスにブラウザでアクセスすると、Host Clientのログイン画面が表示されます。(検証時はDHCPでIPアドレスを取得しています)

ログインすると通常のESXi HostClientと同じ画面が表示されます。これでEdgeの展開は完了です。

ちなみに、仮想マシンは[ec-system-hostname]という名前の仮想マシンが展開されています。


3.Edgeの登録

次にEdgeデバイスをEdge Cloud Orchestratorに登録します。

vSphere ClientでEdgeのモニタ画面を開き、DCUIのログイン前画面に表示されている"Vendor"、"Model"、"Serial Number"の値を確認します。
※"Serial Number"の値をメモするのが面倒な場合は、SSHでEdgeにログインし"DCUI"のコマンドを入力すると"Serial Number"の値をコピーできます。

Edge Cloud Orchestratorを開き、[Hosts]-[ADD HOST]をクリックします。

Add Hostの画面で、先程確認した"Vendor"、"Model"、"Serial Number"の値を入力します。[OK]をクリックします。

Edgeデバイス情報を登録すると、[Dormant Hosts]のタブに表示されます。

しばらくするとEdgeデバイスが認識され、登録したEdgeデバイスの情報が[Hosts]のタブの表示へ移動します。Stausを確認すると"Pending"状態になっているので、アクティブ化します。Edgeデバイスを選択し、[ACTIVATE HOST]をクリックします。

Edgeデバイスに紐付けるGit Repositoryを選択します。今回は前の手順で登録したGitリポジトリを選択します。続けて、GitHubのユーザー名と、前の手順で作成したアクセストークンを入力します。[CONFIRM]をクリックします。

しばらくするとアクティベーションが完了し、Statusが"Active"状態になります。Hostのシリアルナンバーをクリックし、Edgeデバイスの詳細情報を確認します。

以下の様な画面で、Edgeデバイスのリソース利用状態やハードウェア情報を確認することができます。

以上で、Edgeデバイスの登録は完了です。

4.Edgeデバイスの設定変更

ここからGitリポジトリにyamlファイルを配置して、Edgeデバイスの設定変更やワークロードの展開を試してみます。

まず、EdgeデバイスのNTP設定を試してみます。参考となる構成ファイルは以下ドキュメントに紹介されています。

・Configuring Keswick hosts

以下は、yamlファイル配置前のEdgeデバイスの状態です。NTPの設定が何も適用されていません。


ドキュメントに紹介されているサンプルの構成ファイルを元に、NTP設定の変更を行うyamlファイルをGitリポジトリに保存します。(mainブランチの直下に保存しています)
今回はNTPサーバー設定を、ntp.nic.jp、pool.tnp.orgを指定しています。

Edge Cloud Orchestratorで、ホストの情報を確認します。特に設定変更がなされたようなログなどは表示されないところがつらいですが、"GitOps"のStatusが"Ready"になっていれば定期的に指定したリポジトリにたいして、変更がないか情報を取得しにいっているはずです。

しばらくして(数分後)にEdgeデバイスの状態を確認すると、NTPサーバーの設定が追加されていることが確認できました。このように、Gitリポジトリに構成ファイルを保存するだけで自動的にEdgeデバイスの設定変更が実施されます。


【余談】
初めてyamlファイルを配置したタイミングか、アクティベーションしたタイミングか不明ですが、Edgeデバイス展開時にはなかった"ec-worker"という名前の仮想マシンが作成されていました。

ec-worker仮想マシンの詳細情報。




5.ワークロードの展開

次にワークロードの展開を試してみます。まずは、コンテナサービスを展開しています。

コンテナサービスを展開

Edge Cloud Orchestrator(Project Keswick)のサンプル用として、いくつかのサンプルyamlが公開されています。

・KeswickExample


今回は、 "Hello Keswick"の文字列を表示するWeb サーバのサービスと、ロード バランサとしてmetallbを展開してみます。

サンプルのGitHubにある"hello-keswick.yaml"をコピーし、今回使用しているGitリポジトリのmainブランチ直下にそのまま保存します。

次に、[Networking]-"metallb.yaml"のファイルもコピーし、今回使用しているGitリポジトリのmainブランチで保存します。yamlファイル末尾のIPアドレス情報を、ネットワーク環境にあったアドレス情報に修正します。

以上で準備は完了です。

しばらくしてロードバランサーに指定したIPアドレスにアクセスすると、下記のようなWebページにアクセスできることが確認でき、Webサーバーのサービスが展開されていることがわかります。

仮想マシンを展開

最後に仮想マシンを展開してみます。

・Deploying Virtual Machines

操作前にEdgeデバイス上の仮想マシン一覧を確認すると、2つの仮想マシンしかない状態であることが確認できました。


サンプルのGitHubにある[virtualmachine]-"linux-photon.example"をコピーし、今回使用しているGitリポジトリのmainブランチにそのまま保存します。ファイル名を"photon_Deploy.yaml"に変更しています。

しばらくすると、Edgeデバイス上に新しい仮想マシンが自動的に作成されました。


このように、Gitリポジトリにyamlファイルを配備することで、自動的にEdgeデバイス上にサービスや仮想マシンが展開されます。

■おわりに

今回確認したEdge Cloud Orchestrator(Project Keswick)の動作は以上です。EdgeデバイスのOSとして、ほぼそのままESXiが使われているのが、VMwareならではのできるアプローチとして面白いなと感じました。また、サンプルのyamlファイルを使いサンプルのままに動かしただけですが、GitHubに配置したyamlファイルの情報を元に、自動的にコンテナのサービスや仮想マシンが展開されるのは、実際に試してみると面白かったです。

ただ現時点では、管理コンソール情報だとEdgeデバイスの情報だけが表示されている状態のため情報不足感がありました。追加したyamlファイルに伴う設定変更やサービス展開の状況、その上で展開されているワークロードの実行情報が確認できるようになると、より良い感じのサービスになってきそうだなと感じました。