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.
Il servizio Azure Kubernetes consente di eseguire Generatore API dati in un cluster Kubernetes gestito insieme agli altri carichi di lavoro. Questa guida illustra come creare un'immagine di contenitore personalizzata che include il file di configurazione, pubblicarla in Azure Container Registry e distribuirla in Azure Kubernetes Service con un manifesto Kubernetes.
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 Azure Container Apps</a<
- Eseguire la distribuzione su Azure Container Instances
- Panoramica delle opzioni di distribuzione
- Controlli di integrità
- Procedure consigliate per la distribuzione: sicurezza