Dapr CLI を Ubuntu にインストールする
こんにちは、@studio_meowtoon です。今回は、WSL Ubuntu 22.04 に Dapr CLI とランタイムをインストールする方法を紹介します。
目的
分散アプリケーションの為のランタイム Dapr の理解を深めます。
実現すること
ローカル環境 (Ubuntu) に Dapr を操作する為のコマンドラインツール Dapr CLI をインストールして Dapr ランタイムの動作を確認します。
技術トピック
Dapr とは?
こちらを展開してご覧いただけます。
Dapr (ダーパー)
Dapr(Distributed Application Runtime)は、マイクロサービスアプリケーションをより簡単に構築するためのオープンソースのランタイムです。
キーワード | 内容 |
---|---|
ポータビリティ | Dapr はプログラム言語やクラウドプロバイダに依存しない、ユニバーサルなランタイムです。 |
プラグ&プレイ | 既存のアプリケーションに Dapr を追加する際、既存のコードを変更することなくシームレスに統合できます。 |
サービス間通信 | Dapr はメッセージングとイベント駆動のパターンをサポートし、サービス間の連携を簡単に実現します。 |
シークレット管理 | アプリケーションの構成情報や認証情報などのシークレットを安全に管理できます。 |
開発の迅速化 | Dapr のプラグ&プレイ機能により、コードの再利用が容易になり、アプリケーションの開発時間が短縮されます。 |
フレキシブルなアーキテクチャ | Dapr はアプリケーションのコンポーネント間の緩やかな結合を促進し、アーキテクチャの柔軟性を高めます。 |
拡張性 | Dapr は多くの言語とクラウドプロバイダに対応しており、拡張機能を追加することでカスタマイズが可能です。 |
可用性と信頼性 | Dapr は分散システムにおける共通の問題に対処し、アプリケーションの可用性と信頼性を向上させます。 |
開発環境
- Windows 11 Home 22H2 を使用しています。
- WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。
WSL (Microsoft Store アプリ版) ※ こちらの関連記事からインストール方法をご確認いただけます
> wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
Ubuntu ※ こちらの関連記事からインストール方法をご確認いただけます
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Docker ※ こちらの関連記事からインストール方法をご確認いただけます
$ docker --version
Docker version 23.0.1, build a5ee5b1
Dapr CLI インストール
インストールします。
$ wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash
バーションを確認します。
$ dapr --version
CLI version: 1.11.0
Runtime version: n/a
ここまでの手順では、Dapr ランタイムはまだ初期化されていません。
Dapr ランタイムの初期化
Dapr ランタイムを初期化する方法が2種類あります。
No | 方法 | 概要 |
---|---|---|
1 | ローカル環境に初期化 | Dapr の起動には Redis が必要なので Redis の環境を個別に用意する必要があります。 |
2 | Docker 環境に初期化 | Dapr の起動に必要である Redis コンテナもセットで環境が初期化されます。 ※ 公式での推奨 |
ローカル環境に初期化
この記事ではこちらの方法は試みません。
初期化
$ dapr init --slim
※ Dapr ランタイムをアンインストールする場合
$ dapr uninstall
Docker 環境に初期化
この記事ではこちらの方法を実施します。
Docker 環境の起動を確認します。
$ docker --version
Docker version 24.0.4, build 3713ee1
初期化します。
$ dapr init
出力
⌛ Making the jump to hyperspace...
ℹ️ Container images will be pulled from Docker Hub
ℹ️ Installing runtime version 1.11.2
→ Downloading binaries and setting up components...
Dapr runtime installed to /home/hiroxpepe/.dapr/bin, you may run the following to add it to your path if you want to run daprd directly:
export PATH=$PATH:/home/$USER/.dapr/bin
✅ Downloading binaries and setting up components...
✅ Downloaded binaries and completed components set up.
ℹ️ daprd binary has been installed to /home/$USER/.dapr/bin.
ℹ️ dapr_placement container is running.
ℹ️ dapr_redis container is running.
ℹ️ dapr_zipkin container is running.
ℹ️ Use `docker ps` to check running containers.
✅ Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started
Dapr ランタイムをアンインストールする場合には以下のコマンドを実行します。
$ dapr uninstall --all
コンテナの起動状況を確認します。
$ docker ps | grep dapr
35cd134c3331 openzipkin/zipkin "start-zipkin" 4 minutes ago Up 4 minutes (healthy) 9410/tcp, 0.0.0.0:9411->9411/tcp, :::9411->9411/tcp dapr_zipkin
95b45d0675e7 daprio/dapr:1.11.2 "./placement" 4 minutes ago Up 4 minutes 0.0.0.0:50005->50005/tcp, :::50005->50005/tcp dapr_placement
0bd11951aa9d redis:6 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp dapr_redis
初期化後
以下のディレクトリに Dapr ランタイムがインストールされています。
/home/$USER/.dapr/bin
再度バーションを確認します。
$ dapr --version
CLI version: 1.11.0
Runtime version: 1.11.2
ここまでの手順で、Ubuntu に Dapr ランタイムをインストールすることができました。
Dapr API を使用してみる
Dapr ランタイムの起動
Dapr サイドカーを実行します。
この例では、空のアプリケーションをポート 3500 でリッスンする Dapr サイドカーが起動されます。
$ dapr run --app-id hello-dapr --dapr-http-port 3500
出力の一部
ℹ️ Checking if Dapr sidecar is listening on GRPC port 45501
ℹ️ Dapr sidecar is up and running.
✅ You're up and running! Dapr logs will appear here.
停止したい場合、別ターミナルで以下のコマンドを実行します。なお、エラーで起動出来ていない場合は停止できないようです。
$ dapr stop --app-id hello-dapr
別ターミナルから、Dapr Dashboard で確認します。
$ dapr dashboard -p 9999
Dapr Dashboard running on http://localhost:9999
API で操作してみる
別ターミナルから Dapr API で値を登録します。
$ curl -X POST -H "Content-Type: application/json" -d '[{ "key": "name", "value": "Michael Jackson"}]' http://localhost:3500/v1.0/state/statestore
続けて Dapr API で値を取得してみます。
$ curl http://localhost:3500/v1.0/state/statestore/name
出力
"Michael Jackson"
Dapr の Redis コンテナを調べて状態を確認します。
Redis CLI を使用します。
$ docker exec -it dapr_redis redis-cli
Redis CLI
※ exit で操作を抜けます。
> keys *
1) "hello-dapr||name"
> hgetall "hello-dapr||name"
1) "data"
2) "\"Michael Jackson\""
3) "version"
4) "1"
このように、Dapr API で操作した値が、Redis コンテナに保存されています。
Dapr API で値を削除します。
$ curl -v -X DELETE -H "Content-Type: application/json" http://localhost:3500/v1.0/state/statestore/name
Redis コンテナを確認すると値が削除されています。
> keys *
(empty array)
まとめ
- Dapr CLI をインストールして Dapr ランタイムを構築し、 Ubuntu の Docker 環境にて Dapr API の動作を確認することが出来ました。
どうでしたか? WSL Ubuntu に Dapr CLI をインストールして Dapr ランタイムを構築できます。ぜひお試しください。今後も Ubuntu の開発環境などを紹介していきますので、ぜひお楽しみにしてください。
推奨コンテンツ