【Azure Kubernetes Service/Dapr】AKSにDaprをデプロイする

2024/11/11に公開

執筆日

2024/11/11

手順

  1. コマンドのインストール
  2. AKSを構築しDaprを適用する
  3. AKSにアプリをデプロイ

コマンドのインストール

  1. Azure CLI のインストール:
    公式ドキュメントを参考にインストールしてください

  2. kubectl のインストール:
    公式ドキュメントを参考にインストールしてください

  3. Dapr CLI のインストール:
    公式ドキュメントを参考にインストールしてください

AKSを構築しDaprを適用する

  1. Azure PortalからAKSクラスターをデプロイする
  2. PowerShellを開き以下のコマンドを実行する
# Azureにログイン
az login -t <テナント名>
# AKS クラスターに接続
az aks get-credentials --resource-group <リソースグループ名> --name <AKSクラスター名>

# Dapr CLI を使用して AKS に Dapr をインストール
dapr init -k

AKSにアプリをデプロイ

  1. 以下のファイル構成でアプリケーションを作成する
    dapr/
    ├── app.py
    ├── requirements.txt
    ├── Dockerfile
    └── deployment.yaml
app.py
from flask import Flask, request

app = Flask(__name__)

@app.route("/invoke", methods=["POST"])
def invoke():
    data = request.json
    return {"message": "Hello, {}".format(data.get("name", "world"))}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

Dockerfile

FROM python:3.9-slim

WORKDIR /app

COPY . .

RUN pip install --no-cache-dir -r requirements.txt

CMD ["python", "app.py"]

requirements.txt

flask
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
      annotations:
        dapr.io/enabled: "true"
        dapr.io/app-id: "myapp"
        dapr.io/app-port: "5000"
    spec:
      containers:
      - name: myapp
        image: <ACR名>.azurecr.io/myapp:latest
        ports:
        - containerPort: 5000
        env:
        - name: DAPR_HTTP_PORT
          value: "3500"
        - name: DAPR_GRPC_PORT
          value: "50001"
---
apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 5000
  selector:
    app: myapp
  1. 以下のコマンドを実行する
# ACR にログイン
az acr login --name <ACR名>

# Docker イメージをビルド (再ビルド)
docker build -t <ACR名>.azurecr.io/myapp:latest .

# Docker イメージを ACR にプッシュ
docker push <ACR名>.azurecr.io/myapp:latest
  1. デプロイをしアプリケーションを確認する
# Kubernetes マニフェストを適用
kubectl apply -f deployment.yaml
# サービスの外部 IP アドレスを取得
kubectl get services


4. 以下のコマンドを実行し、同作確認をする

# アプリケーションにアクセス
curl -X POST http://<EXTERNAL-IP>/invoke -d "{\"name\": \"Dapr\"}" -H "Content-Type: application/json"

※3で取得したEXTERNAL-IPで書き換える

まとめ

AKS上に Dapr をデプロイし、Python アプリケーションを動作しました。
次は、リソースとのBindingを実装しようと思います。

ヘッドウォータース

Discussion