Azure Kubernetes Service (AKS) を使用すると、他のワークロードと共にマネージド Kubernetes クラスターでデータ API ビルダーを実行できます。 このガイドでは、構成ファイルを含むカスタム コンテナー イメージを構築し、それを Azure Container Registry (ACR) にプッシュし、Kubernetes マニフェストを使用して AKS にデプロイする方法について説明します。
前提条件
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- Azure CLI がインストールされていること
- kubectl がインストールされている
- Docker がインストールされている
- データ API ビルダー CLI。 CLI をインストールする
- 既存の AKS クラスター。 AKS クラスターを作成する
- AKS から到達可能な既存のサポートされているデータベース
構成ファイルをビルドする
構成ファイルのローカル ディレクトリを作成します。
dab initを使用して基本構成ファイルを初期化します。 接続文字列に@env()関数を使用して、シークレットがイメージにベイクされずに実行時に挿入されるようにします。dab init \ --database-type mssql \ --connection-string "@env('DATABASE_CONNECTION_STRING')"dab addを使用して、少なくとも 1 つのエンティティを追加します。 公開するテーブルまたはビューごとに繰り返します。dab add Books \ --source dbo.Books \ --permissions "anonymous:read"続行する前に、
dab-config.jsonを確認します。
カスタム コンテナー イメージをビルドしてプッシュする
dab-config.jsonで/App/dab-config.jsonを含むイメージをビルドします。
Azure Container Registry がまだない場合は作成します。
az acr create \ --resource-group <resource-group> \ --name <registry-name> \ --sku Basic \ --admin-enabled trueDockerfileと同じディレクトリにdab-config.jsonを作成します。FROM mcr.microsoft.com/azure-databases/data-api-builder:latest COPY dab-config.json /App/dab-config.jsonACR タスクを使用してイメージをビルドしてプッシュします。
az acr build \ --registry <registry-name> \ --image dab:latest \ .完全な画像リファレンスに注意してください:
<registry-name>.azurecr.io/dab:latest。
AKS を ACR に接続する
AKS クラスターにレジストリへのプル アクセス権を付与します。
az aks update \
--name <cluster-name> \
--resource-group <resource-group> \
--attach-acr <registry-name>
接続文字列を Kubernetes シークレットとして格納する
データベース接続文字列を Kubernetes シークレットとして格納し、マニフェスト ファイルに含めないようにします。
kubectl create secret generic dab-secrets \
--from-literal=DATABASE_CONNECTION_STRING="<your-connection-string>"
Warnung
接続文字列を Kubernetes マニフェスト ファイルまたはコンテナー イメージに直接配置しないでください。 シークレットまたは Azure Key Vault を使用します。
Kubernetes マニフェストを作成する
次の内容を含む dab-deployment.yaml という名前のファイルを作成します。
<registry-name>を ACR 名に置き換えます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: dab
labels:
app: dab
spec:
replicas: 2
selector:
matchLabels:
app: dab
template:
metadata:
labels:
app: dab
spec:
containers:
- name: dab
image: <registry-name>.azurecr.io/dab:latest
ports:
- containerPort: 5000
env:
- name: DATABASE_CONNECTION_STRING
valueFrom:
secretKeyRef:
name: dab-secrets
key: DATABASE_CONNECTION_STRING
readinessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 15
periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
name: dab-service
spec:
selector:
app: dab
ports:
- protocol: TCP
port: 80
targetPort: 5000
type: LoadBalancer
注
readinessProbeとlivenessProbeは、DAB /health エンドポイントを使用します。 詳細については、「 正常性チェック」を参照してください。
AKS にデプロイする
クラスターの資格情報を取得します。
az aks get-credentials \ --resource-group <resource-group> \ --name <cluster-name>マニフェストを適用します。
kubectl apply -f dab-deployment.yamlポッドの準備ができるまでロールアウトを監視します。
kubectl rollout status deployment/dabサービスに割り当てられている外部 IP アドレスを取得します。
kubectl get service dab-serviceEXTERNAL-IP列にパブリック IP アドレスが表示されます。 ロード バランサーのプロビジョニングを 1 分間待つ。
デプロイメントを確認する
http://<external-ip>/healthにアクセスしてください。 正常な応答は次のようになります。{ "status": "healthy", "version": "2.0.0", "app-name": "dab_oss_2.0.0" }エンティティ エンドポイントをテストします。
curl http://<external-ip>/api/Books
デプロイをスケーリングする
レプリカ数を水平方向にスケーリングするように変更します。
kubectl scale deployment/dab --replicas=4
または、spec.replicasでdab-deployment.yamlを更新して再適用します。
リソースをクリーンアップする
不要になったら、デプロイとサービスを削除します。
kubectl delete -f dab-deployment.yaml
kubectl delete secret dab-secrets
AKS クラスターとレジストリを削除するには、リソース グループを削除します。
az group delete \
--name <resource-group> \
--yes --no-wait