先日、stand-alone な環境で dapr の動作を検証しました。 次は、Kubernetes cluster 上で dapr の動作を検証してみたいと思います。Minikube などのローカルな環境でも試すことができそうでしたが、折角なので Azure Kubernetes Service(AKS) で検証してみます。動作検証時の dapr は v0.2 になります。

0. ドキュメント

Installing Dapr on a Kubernetes cluster
https://github.com/dapr/docs/blob/master/getting-started/environment-setup.md#installing-dapr-on-a-kubernetes-cluster

Set up an Azure Kubernetes Service cluster
https://github.com/dapr/docs/blob/master/getting-started/cluster/setup-aks.md

1. Azure Kubernetes Service(AKS) Cluster の作成

前提条件として、次を作業端末にセットアップします。

・Azure CLI
・kubectl

はじめに dapr 検証環境用の AKS Cluster を Azure CLI で作成します。kubectl も前提として必要になるので、クイック スタート:Azure CLI を使用して Azure Kubernetes Service クラスターをデプロイするを見ると良いかと思います。

インストール後に次のコマンドを実行していきます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Azure への接続
az login

# サブスクリプションの選択
az account set -s <YourSubscriptionId>

# リソースグループの作成
az group create --name myAKSdapr --location japaneast

# AKS クラスタの作成(k8sは、1.13.x 以上を使用する必要があるので必要に応じて--kubernetes-versionで指定する)
az aks create --resource-group myAKSdapr \
    --name myAKSDaprCluster \
    --node-count 2 \
    --enable-addons http_application_routing
    --enable-rbac \
    --generate-ssh-keys

# クラスタの資格情報を取得する
az aks get-credentials --resource-group myAKSdapr --name myAKSDaprCluster

なお、k8s のバージョン 1.6.x で helm 2.15.0 以下が動作しないという問題があるようなので、この後 dapr を helm でインストールする際は、kubernetes のバージョンに注意した方が良いです。

一応、クラスタ作成後に kubectl get node で確認しておきます。

1
2
3
4
$ kubectl get node
NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-37284717-vmss000000   Ready    agent   5m39s   v1.13.12
aks-nodepool1-37284717-vmss000001   Ready    agent   5m51s   v1.13.12

2. Dapr CLI のインストール

今回の作業端末は、Mac ではなく Visual Studio Code の Remote Deployment で接続した Ubuntu 環境のため、Dapr CLI をインストールする。 ちなみに、Mac 用の dapr CLI のインストールは、前回を参照してください。
次のコマンドで最新の dapr cli が、/usr/local/bin にインストールされる。

1
2
3
4
5
6
7
8
9
wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash
Your system is linux_amd64
Installing Dapr CLI...

Downloading https://github.com/dapr/cli/releases/download/v0.2.0/dapr_linux_amd64.tar.gz ...
dapr installed into /usr/local/bin successfully.
cli version: 0.2.0 
runtime version: n/a
To get started with Dapr, please visit https://github.com/dapr/docs/tree/master/getting-started

3. AKS クラスタに dapr をインストールする

次のコマンドで、AKS クラスタに dapr をインストールする。

1
2
3
4
5
6
$ dapr init --kubernetes
⌛  Making the jump to hyperspace...
ℹ️  Note: this installation is recommended for testing purposes. For production environments, please use Helm 

✅  Deploying the Dapr Operator to your cluster...
✅  Success! Dapr has been installed. To verify, run 'kubectl get pods -w' in your terminal

上記の通りインストールが正常に完了した後に、kubectl get pods で pod を確認すると、dapr関連の pod (dapr-operator, dapr-placement, dapr-sidecar-injector) が表示される。

1
2
3
4
5
$ kubectl get pods -w
NAME                                     READY   STATUS    RESTARTS   AGE
dapr-operator-68f7dcb454-nv25m           1/1     Running   0          70s
dapr-placement-6d77d54dc6-5bsp4          1/1     Running   0          70s
dapr-sidecar-injector-86d6ccf956-5j56p   1/1     Running   0          70s

この時、この pod は、default の namespace に作成されるが、helm を使ってインストールすることで、任意の namespace 配下に作成ができる。 アンインストールしたいときは、次のコマンドを実行します。

1
dapr uninstall --kubernetes

先ほどの 3 つの pod が Terminating になっていくことがわかります。

1
2
3
4
5
kubectl get pods
NAME                                     READY   STATUS        RESTARTS   AGE
dapr-operator-68f7dcb454-nv25m           0/1     Terminating   0          22m
dapr-placement-6d77d54dc6-5bsp4          0/1     Terminating   0          22m
dapr-sidecar-injector-86d6ccf956-5j56p   0/1     Terminating   0          22m