Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida illustra come distribuire il generatore di API dati (DAB) in Servizio Azure Kubernetes (AKS) usando un'immagine del contenitore personalizzata caricata in Registro Azure Container. Il servizio AKS offre Kubernetes gestito con scalabilità integrata, sonde di integrità e gestione dei segreti.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
- Interfaccia della riga di comando di Azure installata
- kubectl installato
- Docker installato
- CLI generatore di API dati. Installare l'interfaccia della riga di comando
- Un cluster del servizio Azure Kubernetes pre-esistente. Creare un cluster AKS
- Un database esistente supportato e raggiungibile da AKS
Compilare il file di configurazione
Creare una directory locale per i file di configurazione.
Inizializzare un file di configurazione di base usando
dab init. Usare la@env()funzione per la stringa di connessione in modo che il segreto venga inserito in fase di esecuzione, non inserito nell'immagine.dab init \ --database-type mssql \ --connection-string "@env('DATABASE_CONNECTION_STRING')"Aggiungere almeno un'entità usando
dab add. Ripetere per ogni tabella o vista da esporre.dab add Books \ --source dbo.Books \ --permissions "anonymous:read"Esaminare
dab-config.jsonprima di continuare.
Compilare ed eseguire il push di un'immagine del contenitore personalizzata
Compilare un'immagine che include dab-config.json in /App/dab-config.json.
Creare un Registro Azure Container se non ne è già disponibile uno.
az acr create \ --resource-group <resource-group> \ --name <registry-name> \ --sku Basic \ --admin-enabled trueCreare un oggetto
Dockerfilenella stessa directory didab-config.json.FROM mcr.microsoft.com/azure-databases/data-api-builder:latest COPY dab-config.json /App/dab-config.jsonCompilare e inviare l'immagine utilizzando le ACR Tasks.
az acr build \ --registry <registry-name> \ --image dab:latest \ .Si noti il riferimento completo all'immagine:
<registry-name>.azurecr.io/dab:latest.
Collegare AKS ad ACR
Concedere al cluster del servizio Azure Kubernetes l'accesso pull al Registro di sistema.
az aks update \
--name <cluster-name> \
--resource-group <resource-group> \
--attach-acr <registry-name>
Archiviare la stringa di connessione come segreto Kubernetes
Archiviare la stringa di connessione del database come segreto di Kubernetes in modo che non sia mai nel file manifesto.
kubectl create secret generic dab-secrets \
--from-literal=DATABASE_CONNECTION_STRING="<your-connection-string>"
Avviso
Non inserire mai le stringhe di connessione direttamente nei file manifesto di Kubernetes o nelle immagini del contenitore. Usare segreti o Azure Key Vault.
Creare il manifesto Kubernetes
Creare un file denominato dab-deployment.yaml con il contenuto seguente. Sostituire <registry-name> con il nome del registro 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
Annotazioni
e readinessProbelivenessProbe usano l'endpoint DAB /health . Per altre informazioni, vedere Controlli di integrità.
Distribuire nel servizio Azure Kubernetes
Ottenere le credenziali per il cluster.
az aks get-credentials \ --resource-group <resource-group> \ --name <cluster-name>Applicare il manifesto.
kubectl apply -f dab-deployment.yamlControllare la distribuzione fino a quando i pod non sono pronti.
kubectl rollout status deployment/dabOttenere l'indirizzo IP esterno assegnato al servizio.
kubectl get service dab-serviceLa
EXTERNAL-IPcolonna mostra l'indirizzo IP pubblico. Attendere un minuto per il provisioning del bilanciatore di carico.
Verificare la distribuzione
Sfoglia fino a
http://<external-ip>/health. Una risposta adeguata si presenta così:{ "status": "healthy", "version": "2.0.0", "app-name": "dab_oss_2.0.0" }Testare un endpoint di entità.
curl http://<external-ip>/api/Books
Scalare l'implementazione
Modificare il conteggio delle repliche per scalare orizzontalmente.
kubectl scale deployment/dab --replicas=4
Oppure aggiorna spec.replicas in dab-deployment.yaml e riapplicalo.
Pulire le risorse
Rimuovere la distribuzione e il servizio quando non sono più necessari.
kubectl delete -f dab-deployment.yaml
kubectl delete secret dab-secrets
Per eliminare il cluster AKS e il registro, rimuovere il gruppo di risorse.
az group delete \
--name <resource-group> \
--yes --no-wait
Contenuti correlati
- <a href="#tabpanel_1_aca" role="tab" aria-controls="tabpanel_1_aca" data-tab="aca" tabindex="0" aria-selected="true" data-linktype="self-bookmark"<Distribuire su App contenitore di Azure</a<
- Eseguire la distribuzione su Istanze di Azure Container
- Panoramica delle opzioni di distribuzione
- Controlli di integrità
- Procedure consigliate per la distribuzione: sicurezza