はじめに
Dapr v1.18.1 (ランタイムはコミット
9f2dcfd9) で検証。コマンドは Docker が動くセルフホスト構成を想定。
前提
- Docker (既定の
dapr initがコントロールプレーンのコンテナをここに展開する)。 - Dapr CLI (
dapr/cli)。下記でインストールする。
インストール
CLI を入れてからランタイムを初期化する。init はサイドカーイメージを取得し、placement・scheduler・Redis のコンテナを Docker に起動する。
bash
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
dapr init最初の動く構成
最短経路は、任意のプロセスをサイドカー付きで動かし、サービス呼び出し API 経由で叩くことだ。
アプリをサイドカー付きで起動する。末尾のコマンドは自分のものに置き換える。ここではアプリの代わりに Python の HTTP サーバを置く。
bashdapr run --app-id myapp --app-port 8080 -- python3 -m http.server 8080サイドカー経由でアプリを呼ぶ。ランタイムは既定で HTTP ポート
3500を待ち受けるので、app IDmyappへのサービス呼び出しは下記になる。ホストはローカルサイドカーでlocalhost:3500として指す。bashcurl http://127.0.0.1:3500/v1.0/invoke/myapp/method/
サイドカーは app ID で宛先を解決し、resiliency ポリシを適用し、--app-port で待つアプリへ呼び出しを転送する (pkg/api/http/directmessaging.go:97)。
動作確認
- ランタイムバージョンの確認:
daprd --versionがビルドバージョンを表示して終了する (cmd/daprd/app/app.go:65)。 - 動作中の Dapr アプリとサイドカーの一覧:
dapr list。 - コントロールプレーンのコンテナ確認:
docker psにdapr initが作った placement・scheduler・Redis のコンテナが見えるはず。
次に読むもの
Kubernetes では dapr init -k で injector・operator・sentry・placement・scheduler を入れ、Pod に dapr.io/enabled: "true" を付けるとサイドカーが注入される。HA モード・mTLS 強化・ビルディングブロック API リファレンスなど本番運用は公式ドキュメント docs.dapr.io が扱う。