VMwareのエッジソリューション（Edge Compute Stack）でマルチK8s管理のTanzu Mission Controlが使われている件について

本記事は「[TUNA-JP Advent Calendar 2022](https://qiita.com/advent-calendar/2022/tuna-jp)」の15日目のエントリとして、VMwareのエッジソリューション（Edge Compute Stack）でマルチK8s管理のTanzu Mission Controlが使われている件について紹介します。
筆者がエッジコンピューティングに興味があるので、Tanzuよりもエッジソリューションについての記述が多めですがご了承下さい。

ちなみに一部情報は[VMware Explore2022 JP](https://www.vmware.com/explore/jp.html)を参照しておりますが、オンデマンド配信/資料ダウンロードが2022年12月23日（金）17:00までなので、興味を持った方は期限前に資料ダウンロードすることをおすすめします。

# 本記事のサマリ
* VMware Edge Compute Stackはエッジに配置したコンピュートリソース上でTanzu Kubernetes Grid(TKG)というKubernetes(k8s)クラスタを構築してコンテナアプリケーションをデプロイできるようにするトータルソリューション。
  * VMwareのインフラ製品で基盤を作って、k8sおよびコンテナアプリのデプロイ部分はTanzu製品が担当するという組み合わせ。
  * Edge Compute Stack上で動作するKubernetesクラスタは、マルチk8sクラスタ管理のSaaSであるTanzu Mission Controlが管理する。
* VMwareのR&D部門のOffice of the CTO（OCTO）ではエッジコンピューティングのプロジェクトであるProject Santa CruzとProject Keswickに取り組んでいる。
  * Project Santa Cruz（SD-WANのEdgeデバイスをTanzu Kubernetes GridのNodeとして動作させるプロジェクト）
  * Project Keswick（Edgeには軽量のKubernetesを使い、GitOpsでインフラとワークロードを宣言的に管理するプロジェクト）


# VMwareの定義するエッジコンピューティングについて
エッジコンピューティングは大きく「拠点にコンピュートリソースを置くもの」と、「通信キャリアの局舎にコンピュートリソースを置くもの（MEC）」に分かれますが、VMwareは前者を**Far Edge**、後者を**Near Edge**と読んでいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/c73e481b-f3d4-880c-72ac-02457de8c304.png)
今回紹介する**Edge Compute Stack**はFar Edgeをメインターゲットにしたものです。

:::note info
余談その１：フォグコンピューティングという用語もありましたが流行りませんでしたね。Edge ⇔ Fog ⇔ Cloudという位置づけです。
[IT Leaders：“雲”より近くの「フォグコンピューティング」(2018年4月10日)](https://it.impress.co.jp/articles/-/15954)
:::

# VMware Edge Compute Stackとは
エッジコンピューティングの領域をターゲットに、Kubernetesを構築してコンテナアプリケーションをデプロイできるようにするトータルソリューションという理解です。vCenter、vSphere/ESXi、vSAN、Tanzu Kubernetes Grid(TKG)、Tanzu Mission Control(TMC)が必須で、オプションでVMware SD-WAN、vROpsなどが組み合わせられます。

* Tanzu Kubernetes Grid(TKG)はVMware提供のKubernetesディストリビューションです。
* Tanzu Mission Control(TMC)は複数のKubernetesクラスタを管理するSaaS製品で、[昨日のTUNA-JPのアドベントカレンダー](https://qiita.com/two2mi/items/a94435a8fc526fc53ac5)にて紹介しておりますので初見の方はぜひ。

VMware Edge Compute StackはVMwareのインフラ製品で基盤を作って、k8sおよびコンテナアプリのデプロイ部分はTanzuが担当するという陣形ですね。ハードウェアは後述しますが、現在はDELLやLenovoのエッジ用サーバで動作実績があるようです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/dc36e9da-d33c-ff99-76bc-c6f76b5231a5.png)

:::note info
余談その２：VMwareのFlings（実験的なプロジェクト）では[ESXi Armエディション](https://flings.vmware.com/esxi-arm-edition)も公開されており、上記画像の一番右は主にESXi Armエディションが動くことになりそうです。
余談その３：ESXi ArmエディションはSmartNICの[Project Monterey](https://news.vmware.com/jp/releases/vmw-vmware-project-monterey_100120)でも使われています。
:::

本項目の情報ソースは下記になります。

* [VMware Explore2022 JP：あなたの知らない VMware Edge Compute Stack の世界](https://www.vmware.com/explore/jp/content/sess/MC22131.html)
* [VMware Explore2022 JP：誰でもわかる 通信業界の Cloud Native プラットフォーム](https://www.vmware.com/explore/jp/content/sess/MC22121.html)
* [VMware SASE and Edge：VMware Edge Compute Stack: What’s New in 2022?](https://blogs.vmware.com/sase/2022/08/30/vmware-edge-compute-stack-new-in-2022/?utm_source=rss&utm_medium=rss&utm_campaign=vmware-edge-compute-stack-new-in-2022&utm_source=rss&utm_medium=rss&utm_campaign=vmware-edge-compute-stack-whats-new-in-2022)
* [VMware Explore2022US：VMware Edge Compute Stack Reference Architecture Deep Dive](https://www.vmware.com/explore/video-library/video-landing.html?sessionid=16530015732550015duL&videoId=6311698623112)

## Enterprise Edgeのハードウェア
Edge Compute Stackの図の一番左に記載されていたEnterprise Edgeについて、ハードウェア要件のまとまった情報は見つけられなかったのですが、ざっと調べたところDELLとLenovoのサーバで動作するようです。Far Edgeはデータセンタと違って温度条件などの環境が劣悪なこともあるので、耐久性の高いRugged認定のもので動かしているようです。
* DELL PowerEdge XR11（おそらくXR12でも動作）
* DELL PowerEdge XR4000
* Lenovo ThinkSystem SE 350
  * [VMware Explore2022 JP：ノーリミットエンジニアリングをエッジで実現 ー モータースポーツ最前線から学ぶ最新エッジコンピューティング](https://www.vmware.com/explore/jp/content/sess/MC22434.html)
  * [The Cloud Platform Tech Zome：VMware Edge Compute Stack on Lenovo’s ThinkSystem SE 350](https://core.vmware.com/blog/vmware-edge-compute-stack-lenovos-thinksystem-se-350)

次はEdge Compute Stackのアーキテクチャを記載します。

## VMware Edge Compute Stackのアーキテクチャ
VMware Explore2022USのReference Architecture Deep Diveのセッションよりアーキテクチャの図を持ってきました。
右下に注目するとTanzu Mission Control(TMC)が書かれています。左下の各Edge SiteのサーバではVMwareのk8sディストリビューションであるTanzu Kubernetes GridのWorkloadクラスタが動いており、これらのk8sクラスタの管理をTMCが担当するようです。

TMCは各k8sクラスタでどのようなPodが動いているのか可視化できたり、CPUなどのリソースの使用状況の把握やOpen Policy Agent(OPA)を使用したポリシー適用ができるので、多数のエッジ拠点に分散しているk8sクラスタを一元的に管理する役割を担うと思われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/6b7433ee-a747-c323-d06d-126e724b0abb.png)

次はk8sクラスタにどうやってコンテナアプリケーションをデプロイするかという紹介になります。

## VMware Edge Compute Stackにアプリケーションをデプロイする
こちらもVMware Explore2022USのReference Architecture Deep Diveのセッションより図を2つ持ってきました。
Edge Compute StackではVMwareのコンテナアプリケーションデプロイのプラットフォームである[Tanzu Application Platform(TAP)](https://tanzu.vmware.com/jp/application-platform)を組み合わせることが出来るようです。

TAPについては @hirosat さんの記事をご参照ください。
[TUNA-JP Advent Calendar 2022 2日目：VMware Tanzu Application Platform のOSSを一挙ご紹介！](https://qiita.com/hirosat/items/7b1104110e339dfbacf4)
[TUNA-JP Advent Calendar 2022 3日目：逆引き！TAPではこんなことができるよ](https://qiita.com/hirosat/items/6e96033da930cbca4275)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/aba13fdd-0a32-c5dc-ce38-1d48ff74282a.png)

下記の通り具体的なアプリケーションのデプロイの図もありましたが、GitOpsツールのFluxとコンテナレジストリのHarborを組み合わせてCI/CDの仕組みを作っていました。
エッジのサーバはえてしてリソースが潤沢ではないので、コンテナイメージをいかに軽量に作るかもポイントになりそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/37302c48-75b0-3b05-1477-7565b0f5e39f.png)

以上がVMware Edge Compute StackについてVMware Explore2022USのReference Architecture Deep Diveで触れられていた内容です。

# Office of the CTOで取り組まれているエッジコンピューティングに関するプロジェクト
次はVMwareのR&D部門のOffice of the CTO（OCTO）のブログでも言及されている、エッジコンピューティングのプロジェクトである**Project Santa Cruz**と**Project Keswick**について紹介します。これらについては過去のVMwareの年次カンファレンス（VMworld2021およびVMware Explore2022）でもいくつかのセッションが見つかりました。
※ちなみにまだVMware内の実験的なプロジェクトのため、今回紹介するかたちでGAになるかは分かりませんのでご注意ください。

情報ソースは下記になります。

* Project Santa Cruz（おそらくEdge Compute Stackの図の真ん中にあったNetwork Edgeのモデルに該当するプロジェクト）
  * [Office of the CTO Blog：Announcing Project Santa Cruz (and more)!](https://octo.vmware.com/announcing-project-santa-cruz-and-more/)
  * [VMworld2021：Edge Computing in the VMware Office of the CTO: Innovations on the Horizon](https://www.vmware.com/vmworld/en/video-library/video-landing.html?sessionid=1623167813009001TcWp&videoId=6274087202001)
  * [VMworld2021：Containerized Applications at the Edge Using VMware Tanzu and SASE](https://www.vmware.com/vmworld/en/video-library/video-landing.html?sessionid=1621033956691001zTSq&videoId=6274513755001)
* Project Keswick（Edgeには軽量のKubernetesを使い、GitOpsでインフラとワークロードを宣言的に管理するプロジェクト）
  * [Office of the CTO Blog：Let’s Go Over the Edge: What’s Next for VMware Edge Compute](https://octo.vmware.com/vmware-edge-compute-whats-next/)
  * [Office of the CTO Blog：Simplifying Edge Deployments at Scale with VMware Project Keswick](https://octo.vmware.com/project-keswick/)
  * [VMware Explore2022 JP：VMware の Office of the CTO が生み出す新たなイノベーションの潮流](https://www.vmware.com/explore/jp/content/sess/VI21262.html)


## Project Santa Cruz
これは情報ソースを見た限り、VMware SD-WAN（旧VeloCloud）のEdgeデバイスをTanzu Kubernetes GridのWorkload Nodeとして動作させるというものです。これにより、エッジでコンテナアプリを動かす候補にEdgeデバイスを含めることが出来ます。ブログではカメラを使った画像解析の事例が出ていました。
※VMware SD-WANはNW機器ですが、ハードウェアはx86アーキテクチャで動いておりOSはおそらくLinuxベースです。

[Office of the CTO Blog：Announcing Project Santa Cruz (and more)!](https://octo.vmware.com/announcing-project-santa-cruz-and-more/)の冒頭部分を翻訳したものを貼ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/fe8b75ff-fb3a-3904-af5e-269bcebbbff6.png)
VMworld2021のセッション内ではSD-WANのEdgeデバイスにSSHでログインして、Tanzu Mission Control(TMC)のエージェントをインストールしています。
※VMware SD-WANは旧称がVeloCloudで、CLIに名称が出ています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/1dbca0c8-8c32-552a-972f-810b69c10761.png)
セッション内ではTMCで管理しているClusterを確認しており、SD-WANのEdgeデバイス(vc-edge)がk8sクラスタのNodeとして認識されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/a0fe20ba-6638-9559-3c81-e1279c50c366.png)
まだVMwareの実験的なプロジェクトの段階ですが、将来的にはVMware SD-WANのEdgeデバイスをk8sクラスタの1Nodeとして動作させて、その上にコンテナアプリケーションを動作させることも出来るかもしれません。ネットワークの機能についてはVirtual Network Function(VNF)からCloud-Native Network Function(CNF)で実装する動向もあるので、コンテナアプリとして動作するかもしれません。

次はProject Keswickについての紹介です。


## Project Keswick
こちらはVMware Explore2022 JPでVMwareの進藤さんから紹介されていました。

https://twitter.com/motonori_shindo/status/1590462912782798848?s=20&t=xz6h9oCyIJ_ZXCZX6wAGxg

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/171240/ffff8192-08cc-c345-bbc7-f9fd84cfa569.png)

[Office of the CTO Blog：Let’s Go Over the Edge: What’s Next for VMware Edge Compute](https://octo.vmware.com/vmware-edge-compute-whats-next/)では下記の記述があり、インフラとワークロードともにFluxによるGitOpsを用いて宣言的な設定をするようです。

> YAMLファイルがソース管理 (git) にコミットされると、Project Keswick は、git リポジトリに接続された各 ESXi デバイスでこの構成の更新を利用できるようにします。エンドポイントを更新する準備ができると、変更をプルダウンして更新します。
> このアーキテクチャ図は、Project Keswick のレイヤーの概要を示しています。git リポジトリに格納された YAML ファイルである Kubernetes マニフェストは、インフラストラクチャとワークロードのレイヤーを定義するために使用されます。マニフェストが変更されると、Project Keswick は git リポジトリのリスナーを使用してこれらの変更を検出し、ノードの更新準備が整ったときに更新された命令を実行します。
> Project Keswick は、断続的な接続のユース ケースを念頭に置いて開発されました。ノードは常に準備ができていたり、更新するのに適したスペースにあるとは限りませんが、準備ができたら、最新バージョンをプルダウンして自分自身を更新できます。

Tanzu Mission Controlでも、Fluxを用いたGitOpsによりk8sクラスタ自体を宣言的にデプロイできるようにするアップデートをしており、宣言的にインフラを構築していく流れになっています。
[VMware Tanzu：Drive Tanzu Mission Control Cluster Configuration and Add-ons with Flux CD](https://tanzu.vmware.com/content/blog/tanzu-mission-control-flux-continuous-delivery)

# まとめ
筆者がエッジコンピューティングに興味があることもあり、思っていたよりも長くなってしまいました。
Edge Compute Stackは現在はサーバのEnterprise Edgeのパターンで動作するようですが、将来的にはSD-WAN EdgeやARMプロセッサのデバイスでも動作させることを目指して開発されています。
k8sを抽象化のレイヤーとして使うことでアプリケーションの可搬性も確保されており、Tanzu製品との組み合わせもあるので今後も注目していきたいと思います。


# エッジコンピューティングまわりの面白い記事
エッジデバイス × Kubernetesのネタは@ydo さんも書かれており、どのようなユースケースがあるのか、最新の技術動向が詳細に述べられています。

https://qiita.com/ydo/items/944b696d8c44b7380e1a

また、さくらインターネット研究所のゆううきさんがエッジコンピューティングについていくつか記事を書かれています。後者の記事ではウェブサーバ、アプリケーションサーバ、データベースサーバの3-tier構造をどのように配置するのかが書かれており非常に面白い内容です。

https://memo.yuuk.io/entry/2019/learning-edge-computing02

https://blog.yuuk.io/entry/2019/thinking-web-hosting-at-the-edge