✨
【Azure Kubernetes Service/Dapr】AKSにDaprをデプロイする
執筆日
2024/11/11
手順
- コマンドのインストール
- AKSを構築しDaprを適用する
- AKSにアプリをデプロイ
コマンドのインストール
-
Azure CLI のインストール:
公式ドキュメントを参考にインストールしてください -
kubectl のインストール:
公式ドキュメントを参考にインストールしてください -
Dapr CLI のインストール:
公式ドキュメントを参考にインストールしてください
AKSを構築しDaprを適用する
- Azure PortalからAKSクラスターをデプロイする
- PowerShellを開き以下のコマンドを実行する
# Azureにログイン
az login -t <テナント名>
# AKS クラスターに接続
az aks get-credentials --resource-group <リソースグループ名> --name <AKSクラスター名>
# Dapr CLI を使用して AKS に Dapr をインストール
dapr init -k
AKSにアプリをデプロイ
- 以下のファイル構成でアプリケーションを作成する
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
- 以下のコマンドを実行する
# ACR にログイン
az acr login --name <ACR名>
# Docker イメージをビルド (再ビルド)
docker build -t <ACR名>.azurecr.io/myapp:latest .
# Docker イメージを ACR にプッシュ
docker push <ACR名>.azurecr.io/myapp:latest
- デプロイをしアプリケーションを確認する
# 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