Azure App Service-Bereitstellung (Node.js)
Diese Fähigkeit beschreibt den fehlerfreien, bewährten Weg zur Bereitstellung einer Node.js-Anwendung auf Azure App Service (Linux) mit sicherer Verbindung zu einem Azure AI Foundry Agent über Managed Identity.
1. Cloud-Infrastruktureinrichtung
- App Service Plan: Wählen Sie immer einen dedizierten Tarif (z. B. Basic B1) für die Produktion. Free-Tarife (F1) haben strenge CPU-Kontingente von 60 Minuten pro Tag, die die Anwendung zwangsweise herunterfahren (was zu einem
403 Stopped-Fehler führt).
2. Authentifizierung und Verwaltete Identität (Passwortlos)
- Code: Verwenden Sie
DefaultAzureCredentialaus@azure/identityim Node.js-Backend. - Identität aktivieren: Gehen Sie im Azure App Service-Portal zu Einstellungen > Identität und aktivieren Sie Systemseitig zugewiesen.
- IAM-Berechtigungen: Gehen Sie im Ziel-Azure-KI-Projekt zu Zugriffssteuerung (IAM) und weisen Sie der verwalteten Identität des App Service die Rolle Azure KI-Entwickler zu. (Hinweis:
Cognitive Services OpenAI Userist für Azure Foundry Orchestrierungs-Agenten nicht ausreichend).
3. Umgebungsvariablen (Die Frontend-vs-Backend-Falle)
Beim Bereitstellen einer Full-Stack-App (React/Vite + Node.js) über GitHub Actions müssen Umgebungsvariablen logisch aufgeteilt werden:
Das Frontend (Vite)
- Variablen mit dem Präfix
VITE_(z. B. Supabase-Schlüssel) werden zur Build-Zeit in die statischen HTML/JS-Dateien eingebettet. - Wo sie gesetzt werden: Sie MÜSSEN in GitHub Secrets gespeichert und explizit in Ihrer
.github/workflows-Datei imenv:-Block für den Schrittnpm run buildzugeordnet werden. - Gefahr: Wenn sie nur in Azure und nicht in GitHub Actions vorhanden sind, erstellt Vite das Frontend mit leeren Variablen.
Das Backend (Node.js)
- Die Live-Datei
server.jsliest Umgebungsvariablen zur Laufzeit aus dem Cloud-Container. - Wo sie gesetzt werden: Konfigurieren Sie Variablen (z. B. Azure KI-Endpunkte, Backend-Supabase-Schlüssel) direkt im Azure-Portal unter Einstellungen > Umgebungsvariablen.
- Gefahr: Das Azure App Service-Backend übernimmt NICHT Ihre GitHub Actions-Geheimnisse. Sie müssen diese manuell im Azure-Portal setzen.
- Wichtig: Variablen werden genau einmal geladen, wenn der Node.js-Prozess startet. Wenn eine Variable hinzugefügt oder geändert wird, müssen Sie auf der Übersichtsseite des App Service explizit auf Neu starten klicken.
- Um dem Azure Load Balancer zu vertrauen (erforderlich für
express-rate-limit), stellen Sie sicher, dass die Express-Appapp.set('trust proxy', 1);verwendet.
4. GitHub Actions CI/CD-Pipeline
Die sicherste Bereitstellungsstrategie vermeidet widersprüchliche Build-Engines (GitHub vs. Azure Oryx). Lassen Sie GitHub 100% des Builds und der Paketerstellung übernehmen.
Workflow-Best Practices:
- GitHub führt
npm installund den Frontend-Build (npm run build) aus. - GitHub lädt ein Artefakt hoch, das die kompilierten Ausgaben (
dist), die Backend-Dateien (server.js) und entscheidend dennode_modules-Ordner enthält.- Warum? Wenn
node_modulesweggelassen wird, versucht die Oryx-Engine von Azure, die App selbst zu erstellen, indem sienpm run buildausführt. Dies wird abstürzen, da die rohen Quelldateien (index.html) nicht hochgeladen wurden.
- Warum? Wenn
- Verwenden Sie
azure/webapps-deploy@v3mit einem Veröffentlichungsprofil, das als GitHub Secret gespeichert ist.