이 가이드에서는 Azure Container Registry 푸시된 사용자 지정 컨테이너 이미지를 사용하여 DAB(Data API Builder)를 AKS(Azure Kubernetes Service) 배포하는 방법을 보여 줍니다. AKS는 관리형 Kubernetes를 제공하며, 기본 제공 크기 조정, 상태 프로브 및 비밀 관리 기능을 포함합니다.
사전 요구 사항
- 활성 구독이 있는 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엔터티를 하나 이상 추가합니다. 노출하려는 각 테이블 또는 뷰에 대해 반복합니다.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 true동일한 디렉터리에
Dockerfile를 생성하고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.
ACR에 AKS 연결
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>"
경고
연결 문자열을 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.yamlPod가 준비될 때까지 배포 상태를 모니터링합니다.
kubectl rollout status deployment/dab서비스에 할당된 외부 IP 주소를 가져옵니다.
kubectl get service dab-service열에는
EXTERNAL-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
관련 콘텐츠
- Azure Container Apps에 배포
- Azure Container Instances에 배포
- 배포 옵션 개요
- 상태 검사
- 배포 모범 사례: 보안