Tutorialsの中では最後となる「Tutorial: eShop on containers」を試してみます。
このTutorialでは以下のeShop on Containersのマイクロサービスデモアプリ群をRadiusを追加したもので展開することを体験します。
Radiusを追加した定義はすでに与えられており、今回は展開の容易さを感じることが目的です。
Radiusを使わない場合の、すべてのサービスをコンテナ上で動かすAKSへの展開方法はこのドキュメントに記載されています。
また、DatabaseなどをAzureのリソースとして作成して利用する場合には以下のドキュメントの手順をさらに行います。目次を読んだだけで手順が長いことがわかります。
手順が長いということは、実際の運用で考えると展開方法が複雑になりやすいということです。またそれぞれの定義がばらばらになっていると、1か所変更したときに付随した変更する箇所の把握も困難になります。今回は展開方法がどのくらい簡単になるかというのを比べてRadiusでの展開を行ってみます。
まずはサンプルリポジトリを取得して、eshopの定義ファイル群を用意します。
必要な手順は以下の通りです。
- eshopのフォルダで
rad init
を実行し、"Setup application in the current directory?"でNoを選ぶ。 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
rad deploy iac/eshop.bicep -p platform=azure
コマンドを実行してアプリを展開する。
非常に単純で、かつAzureリソースとコンテナの展開をrad deploy
で一元的に実行できます。ただし、その分初回の展開はかなり時間がかかります。一つの画面に入りませんが、展開されたリソースは以下の通りです。
kubernetes上には以下のリソースが展開されました。
Azure上には以下の通りです。
今回はAzureリソースを使っていますが、すべてをコンテナとしてk8s上に展開するパターンや、AWSリソースを使って展開するパターンも同じアプリケーション定義の中に含まれています。このようなことができる仕組みを、さらにドキュメントを読み進めながら理解していきます。