銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

Radiusを知る(6) eShopを展開する

Tutorialsの中では最後となる「Tutorial: eShop on containers」を試してみます。

docs.radapp.io

このTutorialでは以下のeShop on Containersのマイクロサービスデモアプリ群をRadiusを追加したもので展開することを体験します。

github.com

Radiusを追加した定義はすでに与えられており、今回は展開の容易さを感じることが目的です。

Radiusを使わない場合の、すべてのサービスをコンテナ上で動かすAKSへの展開方法はこのドキュメントに記載されています。

github.com

また、DatabaseなどをAzureのリソースとして作成して利用する場合には以下のドキュメントの手順をさらに行います。目次を読んだだけで手順が長いことがわかります。

github.com

github.com

手順が長いということは、実際の運用で考えると展開方法が複雑になりやすいということです。またそれぞれの定義がばらばらになっていると、1か所変更したときに付随した変更する箇所の把握も困難になります。今回は展開方法がどのくらい簡単になるかというのを比べてRadiusでの展開を行ってみます。

まずはサンプルリポジトリを取得して、eshopの定義ファイル群を用意します。

github.com

必要な手順は以下の通りです。

  1. eshopのフォルダでrad init を実行し、"Setup application in the current directory?"でNoを選ぶ。
  2. Azure Cloud Providerをセットアップするために、Azureリソースを展開するリソースグループを作り、そのリソースグループにContributorのRoleを持ったService Principalを用意し、それぞれの値を代入して以下のコマンドを実行する。

     rad env update myEnvironment --azure-subscription-id myAzureSubscriptionId --azure-resource-group  myAzureResourceGroup
     rad credential register azure --client-id myClientId  --client-secret myClientSecret  --tenant-id myTenantId
    
  3. rad deploy iac/eshop.bicep -p platform=azure コマンドを実行してアプリを展開する。

非常に単純で、かつAzureリソースとコンテナの展開をrad deployで一元的に実行できます。ただし、その分初回の展開はかなり時間がかかります。一つの画面に入りませんが、展開されたリソースは以下の通りです。

kubernetes上には以下のリソースが展開されました。

Azure上には以下の通りです。

今回はAzureリソースを使っていますが、すべてをコンテナとしてk8s上に展開するパターンや、AWSリソースを使って展開するパターンも同じアプリケーション定義の中に含まれています。このようなことができる仕組みを、さらにドキュメントを読み進めながら理解していきます。