Erkunden von Bereitstellungsoptionen für den Daten-API-Generator
Das Verschieben des Daten-API-Generators von der lokalen Entwicklung in Azure-Produktionsumgebungen erfordert die Auswahl der richtigen Hostingplattform und das Konfigurieren der Bereitstellungsautomatisierung. Azure bietet mehrere Optionen für die Ausführung von DAB, die jeweils unterschiedliche Merkmale für Skalierbarkeit, Verwaltungsaufwand und Integration in andere Azure-Dienste aufweisen.
Ihre Bereitstellungsstrategie wirkt sich nicht nur darauf aus, wo DAB ausgeführt wird, sondern auch, wie Sie Die Konfiguration verwalten, geheime Schlüssel behandeln und skalieren, um die Anforderungen zu erfüllen. Wenn Sie diese Bereitstellungsoptionen verstehen, können Sie den Ansatz auswählen, der ihrer Anwendungsarchitektur und den betrieblichen Anforderungen am besten entspricht.
Bereitstellen von Azure Container Apps
Azure Container Apps bietet eine serverlose Containerplattform, die die Infrastrukturverwaltung automatisch verarbeitet. Es eignet sich gut für den Daten-API-Generator, da es im Leerlauf von null skaliert und automatisch basierend auf dem Anforderungsvolumen hochskaliert werden kann.
Um DAB für Container-Apps bereitzustellen, erstellen Sie zunächst ein Containerimage mit Ihrer Konfiguration:
FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
COPY dab-config.json /App/dab-config.json
ENV DATABASE_CONNECTION_STRING=""
ENV ASPNETCORE_URLS="http://+:5000"
EXPOSE 5000
Diese Dockerfile beginnt mit dem offiziellen DAB-Image und fügt Ihre Konfigurationsdatei hinzu. Umgebungsvariablen behandeln die Verbindungszeichenfolgen- und Portkonfiguration.
Bereitstellen mithilfe der Azure CLI:
az containerapp create \
--name dab-api \
--resource-group myResourceGroup \
--environment myContainerAppEnv \
--image myregistry.azurecr.io/dab-api:v1 \
--target-port 5000 \
--ingress external \
--secrets database-conn="<connection-string>" \
--env-vars DATABASE_CONNECTION_STRING=secretref:database-conn
Container-Apps sind in Azure Key Vault für die geheime Verwaltung integriert. Verweisen Sie auf geheime Schlüssel in Umgebungsvariablen, anstatt Anmeldeinformationen in Konfigurationsdateien oder Containerimages zu speichern.
Tipp
Aktivieren Sie die verwaltete Identität von Azure-Container-Apps, und gewähren Sie ihm Zugriff auf Ihre Azure SQL-Datenbank. Bei diesem Ansatz werden gespeicherte Anmeldeinformationen vollständig mithilfe der Microsoft Entra-Authentifizierung beseitigt.
Bereitstellung in Azure App Service
Azure App Service bietet eine ausgereifte Plattform mit integrierten Bereitstellungsplätzen, benutzerdefinierten Domänen und einer umfassenden Überwachung. Für Teams, die bereits App Service verwenden, folgt das Hinzufügen von DAB vertrauten Mustern.
Konfigurieren Des App-Diensts zum Ausführen des DAB-Containers:
az webapp create \
--name dab-api \
--resource-group myResourceGroup \
--plan myAppServicePlan \
--deployment-container-image-name mcr.microsoft.com/azure-databases/data-api-builder:latest
Festlegen von Umgebungsvariablen über die App Service-Konfiguration:
az webapp config appsettings set \
--name dab-api \
--resource-group myResourceGroup \
--settings DATABASE_CONNECTION_STRING="@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/db-connection)"
Die Key Vault-Referenzsyntax ermöglicht es dem App Service, Geheimnisse zur Laufzeit abzurufen, ohne sie in der Konfiguration offenzulegen. Aktivieren Sie die vom System zugewiesene verwaltete Identität im App-Dienst, und gewähren Sie ihm Zugriff auf Key Vault.
In Azure Static Web Apps bereitstellen
Azure Static Web Apps enthält den Daten-API-Generator als integriertes Feature namens Datenbankverbindungen. Diese Integration bietet die einfachste Bereitstellungserfahrung, wenn Ihre API ein statisches Frontend ergänzt.
Verknüpfen Sie Ihre Datenbank über das Azure-Portal oder die CLI:
az staticwebapp dbconnection create \
--name myStaticWebApp \
--resource-group myResourceGroup \
--db-type mssql \
--db-resource-id /subscriptions/.../servers/myserver/databases/mydb
Die staticwebapps.database.config.json Datei in Ihrem Repository definiert Entitätskonfigurationen mit derselben Struktur wie eigenständige DAB:
{
"data-source": {
"database-type": "mssql"
},
"entities": {
"Product": {
"source": "dbo.Products",
"permissions": [
{ "role": "anonymous", "actions": ["read"] }
]
}
}
}
Statische Web-Apps behandeln automatisch die Integration der Authentifizierung mit den integrierten Authentifizierungsanbietern. API-Routen werden standardmäßig unter /.auth/ und /data-api/ Pfaden angezeigt.
Hinweis
Datenbankverbindungen in Static Web Apps weisen einige Einschränkungen im Vergleich zu eigenständigem DAB auf, einschließlich eingeschränkter Unterstützung für gespeicherte Prozeduren. Überprüfen Sie die Dokumentation zur aktuellen Featureverfügbarkeit.
Implementieren von CI/CD-Bereitstellungspipelines
Automatisierte Bereitstellungspipelinen sorgen für eine konsistente Konfiguration in allen Umgebungen und ermöglichen eine schnelle Iteration. GitHub-Aktionen bieten einen einfachen Ansatz für DAB-Bereitstellungen.
Erstellen sie eine Workflowdatei unter .GitHub/workflows/deploy-dab.yml:
name: Deploy Data API Builder
on:
push:
branches: [main]
paths:
- 'dab-config*.json'
- 'Dockerfile'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Azure Container Registry
uses: azure/docker-login@v1
with:
login-server: ${{ secrets.ACR_LOGIN_SERVER }}
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
- name: Build and push container
run: |
docker build -t ${{ secrets.ACR_LOGIN_SERVER }}/dab-api:${{ github.sha }} .
docker push ${{ secrets.ACR_LOGIN_SERVER }}/dab-api:${{ github.sha }}
- name: Deploy to Container Apps
uses: azure/container-apps-deploy-action@v1
with:
resourceGroup: myResourceGroup
containerAppName: dab-api
imageToDeploy: ${{ secrets.ACR_LOGIN_SERVER }}/dab-api:${{ github.sha }}
Dieser Workflow löst Änderungen an Konfigurationsdateien oder der Dockerfile-Datei aus. Es erstellt ein neues Containerimage, verschiebt es in die Azure-Containerregistrierung und aktualisiert die Container-App.
Konfigurieren von umgebungsspezifischen Bereitstellungen
Produktionsbereitstellungen erfordern eine sorgfältige Trennung zwischen Umgebungen. Verwenden Sie umgebungsspezifische Konfigurationsdateien in Kombination mit Bereitstellungsvariablen.
Strukturieren Sie Ihr Repository mit mehreren Konfigurationsdateien:
/
├── dab-config.json # Base configuration (shared settings)
├── dab-config.development.json
├── dab-config.staging.json
├── dab-config.production.json
└── Dockerfile
Ändern Sie Ihre Dockerfile so, dass sie ein Buildargument akzeptiert:
FROM mcr.microsoft.com/azure-databases/data-api-builder:latest
ARG ENVIRONMENT=production
COPY dab-config.json /App/dab-config.json
COPY dab-config.${ENVIRONMENT}.json /App/dab-config.${ENVIRONMENT}.json
ENV DAB_ENVIRONMENT=${ENVIRONMENT}
Erstellen Sie umgebungsspezifische Images:
docker build --build-arg ENVIRONMENT=production -t dab-api:production .
Von Bedeutung
Fügen Sie niemals tatsächliche Verbindungszeichenfolgen oder geheime Schlüssel in Konfigurationsdateien ein, die zur Quellcodeverwaltung verpflichtet sind. Verwenden Sie Umgebungsvariablenverweise (@env()) und verwalten Sie geheime Schlüssel über Azure Key Vault oder die geheime Verwaltung Ihrer Bereitstellungspipeline.
Überwachen des Bereitstellungszustands
Nach der Bereitstellung sollten Sie Integritätsprüfungen konfigurieren, um sicherzustellen, dass DAB ordnungsgemäß funktioniert. Container-Apps und App Service unterstützen Health-Checks:
{
"probes": [
{
"type": "liveness",
"httpGet": {
"path": "/",
"port": 5000
},
"periodSeconds": 30
},
{
"type": "readiness",
"httpGet": {
"path": "/api/Product?$first=1",
"port": 5000
},
"periodSeconds": 10
}
]
}
Die Liveness-Prüfung überprüft, ob DAB reagiert. Der Bereitschaftstest überprüft die Datenbankkonnektivität, indem eine tatsächliche API-Anforderung erstellt wird. Konfigurieren Sie Ihre Orchestrierungsplattform so, dass fehlerhafte Instanzen automatisch neu gestartet werden.