Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku pokazano, jak wdrożyć Data API builder (DAB) do Azure Kubernetes Service (AKS) przy użyciu niestandardowego obrazu kontenera wypchniętego do Azure Container Registry. Usługa AKS zapewnia zarządzane Kubernetes z wbudowanym skalowaniem, sondami kondycji i zarządzaniem tajemnicami.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
- Zainstalowany interfejs wiersza polecenia platformy Azure
- zainstalowano narzędzie kubectl
- Zainstalowano platformę Docker
- Kreator interfejsu wiersza polecenia do API danych. Zainstaluj CLI
- Istniejący klaster AKS. Utwórz klaster AKS
- Istniejąca obsługiwana baza danych osiągalna z usługi AKS
Kompilowanie pliku konfiguracji
Utwórz katalog lokalny dla plików konfiguracji.
Zainicjuj podstawowy plik konfiguracji przy użyciu polecenia
dab init. Użyj funkcji@env()dla parametry połączenia, aby tajny klucz był wstrzykiwany w czasie wykonywania, a nie zintegrowany z obrazem.dab init \ --database-type mssql \ --connection-string "@env('DATABASE_CONNECTION_STRING')"Dodaj co najmniej jedną jednostkę przy użyciu polecenia
dab add. Powtórz dla każdej tabeli lub widoku, który chcesz uwidocznić.dab add Books \ --source dbo.Books \ --permissions "anonymous:read"Przed kontynuowaniem przejrzyj
dab-config.json.
Budowanie i przesyłanie niestandardowego obrazu kontenera
Zbuduj obraz zawierający dab-config.json w /App/dab-config.json.
Utwórz usługę Azure Container Registry, jeśli jeszcze jej nie masz.
az acr create \ --resource-group <resource-group> \ --name <registry-name> \ --sku Basic \ --admin-enabled trueUtwórz element
Dockerfilew tym samym katalogu codab-config.json.FROM mcr.microsoft.com/azure-databases/data-api-builder:latest COPY dab-config.json /App/dab-config.jsonSkompiluj i wypchnij obraz przy użyciu usługi ACR Tasks.
az acr build \ --registry <registry-name> \ --image dab:latest \ .Zanotuj pełne odniesienie do obrazu:
<registry-name>.azurecr.io/dab:latest.
Łączenie usługi AKS z usługą ACR
Udziel klastrowi AKS dostępu do pobierania z rejestru.
az aks update \
--name <cluster-name> \
--resource-group <resource-group> \
--attach-acr <registry-name>
Przechowaj ciąg połączenia jako sekret w platformie Kubernetes
Zapisz parametry połączenia z bazą danych jako sekret w Kubernetes, aby nigdy nie były w pliku manifestu.
kubectl create secret generic dab-secrets \
--from-literal=DATABASE_CONNECTION_STRING="<your-connection-string>"
Ostrzeżenie
Nigdy nie umieszczaj parametrów połączenia bezpośrednio w plikach manifestu platformy Kubernetes lub obrazach kontenerów. Użyj tajemnic lub usługi Azure Key Vault.
Tworzenie manifestu platformy Kubernetes
Utwórz plik o nazwie dab-deployment.yaml z następującą zawartością. Zastąp <registry-name> nazwą 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
Uwaga / Notatka
Element readinessProbe i livenessProbe używają punktu końcowego DAB /health . Aby uzyskać więcej informacji, zobacz Kontrole kondycji.
Wdrażanie do AKS
Pobierz poświadczenia dla klastra.
az aks get-credentials \ --resource-group <resource-group> \ --name <cluster-name>Zastosuj manifest.
kubectl apply -f dab-deployment.yamlObejrzyj wdrożenie do momentu, gdy pody będą gotowe.
kubectl rollout status deployment/dabPobierz zewnętrzny adres IP przypisany do usługi.
kubectl get service dab-serviceKolumna
EXTERNAL-IPzawiera publiczny adres IP. Pozwól modułowi równoważenia obciążenia działać przez minutę.
Weryfikowanie wdrożenia
Przejdź do
http://<external-ip>/health. Zdrowa odpowiedź wygląda następująco:{ "status": "healthy", "version": "2.0.0", "app-name": "dab_oss_2.0.0" }Testowanie punktu końcowego jednostki.
curl http://<external-ip>/api/Books
Skalowanie wdrożenia
Zmień liczbę replik, aby skalować horyzontalnie.
kubectl scale deployment/dab --replicas=4
Możesz też zaktualizować spec.replicas w dab-deployment.yaml i ponownie zastosować.
Uprzątnij zasoby
Usuń wdrożenie i usługę, gdy nie będzie już potrzebne.
kubectl delete -f dab-deployment.yaml
kubectl delete secret dab-secrets
Aby usunąć klaster usługi AKS i rejestr, usuń grupę zasobów.
az group delete \
--name <resource-group> \
--yes --no-wait