銀の光と碧い空

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

Radiusを知る(5) Daprを利用する

動かなかった部分の回避策がわかったので、今回はDaprのTutorialを試してました。

docs.radapp.io

動かなかった場所は2か所ありますが、うち1か所に対応するためにRadiusを最新の0.26に更新する必要があります。コメントの通り、CLIの更新、radius-system名前空間の削除、rad initの再実行、が必要です。

github.com

もう1点は該当箇所で言及します。さて、Daprとは何か?については、Daprに関する公式ドキュメントの概要がわかりやすいです。

learn.microsoft.com

分散アプリケーションを構築するときに必要なコンポーネントを提供する役割を持っています。このTutorialではその中でも状態ストア(Session Store)を利用します。

まず、Daprのドキュメントに従ってkubernetes上にDaprをセットアップしておきます。

docs.dapr.io

そしてアプリケーションとアプリケーションが依存するApplications.Dapr/stateStores@2023-10-01-previewというDaprの状態ストアをリソースとして定義します。また、アプリケーションにはDaprのためにサイドカーコンテナも定義しています。 デプロイすると、Dapr側でも状態ストアが作られたことが確認できます。

次に、フロントエンドのコンテナを追加します。ここで動かなかった2か所目が出てきます。containerPort: 8080のまま動かすと、http://localhost:8080にアクセスしても接続できずradコマンドでエラーが確認できます。このIssueに報告した通り、サンプルリポジトリを見るとフロントエンドコンテナは80番ポートを使っているので、containerPort: 80にしてデプロイすると動作しました。

github.com

kubernetes側のリソースを見るとDaprの状態ストアとしてRedisがPodとして動いていることもわかります。開発者側はDaprの状態ストアを利用すると定義し、運用者側がその実態としてコンテナで動くRedisを使うレシピを提供しているようです。