Déploiement d'Azure App Service (Node.js)
Cette compétence décrit la voie exemplaire et optimale pour déployer une application Node.js sur Azure App Service (Linux) tout en se connectant de manière sécurisée à un agent Azure AI Foundry via Managed Identity.
1. Configuration de l'infrastructure cloud
- Plan App Service : Choisissez toujours un niveau dédié (par exemple, Basic B1) pour la production. Les niveaux Gratuit (F1) ont des quotas CPU quotidiens stricts de 60 minutes qui arrêteront de force l'application (entraînant une erreur
403 Stopped).
2. Authentification & Managed Identity (Sans mot de passe)
- Code : Utilisez
DefaultAzureCredentialde@azure/identitydans le backend Node.js. - Activer l'identité : Dans le portail Azure App Service, allez dans Paramètres > Identité et activez Attribuée par le système.
- Autorisations IAM : Dans le projet Azure AI cible, allez dans Contrôle d'accès (IAM) et attribuez le rôle Azure AI Developer à l'identité managée de l'App Service. (Remarque :
Cognitive Services OpenAI Usern'est pas suffisant pour les agents d'orchestration Azure Foundry).
3. Variables d'environnement (Le piège Frontend vs Backend)
Lors du déploiement d'une application full-stack (React/Vite + Node.js) via GitHub Actions, les variables d'environnement doivent être réparties logiquement :
Le Frontend (Vite)
- Les variables préfixées par
VITE_(par exemple, les clés Supabase) sont intégrées dans le HTML/JS statique au moment de la construction. - Où les définir : Elles DOIVENT être stockées dans les Secrets GitHub et explicitement mappées dans votre fichier
.github/workflowssous le blocenv:pour l'étapenpm run build. - Danger : Si elles ne sont que dans Azure et pas dans GitHub Actions, Vite construira le frontend avec des variables vides.
Le Backend (Node.js)
- Le fichier
server.jsen cours d'exécution lit les variables d'environnement à l'exécution depuis le conteneur cloud. - Où les définir : Configurez les variables (par exemple, les points de terminaison Azure AI, les clés Supabase backend) directement dans le portail Azure sous Paramètres > Variables d'environnement.
- Danger : Le backend Azure App Service n'hérite PAS des secrets de votre GitHub Actions. Vous devez les définir manuellement dans le portail Azure.
- Crucial : Les variables sont chargées en mémoire une seule fois au démarrage du processus Node.js. Si une variable est ajoutée ou modifiée, vous devez cliquer explicitement sur Redémarrer sur la page de présentation de l'App Service.
- Pour approuver l'équilibreur de charge Azure (nécessaire pour
express-rate-limit), assurez-vous que l'application Express inclutapp.set('trust proxy', 1);.
4. Pipeline CI/CD GitHub Actions
La stratégie de déploiement la plus sûre évite les moteurs de construction conflictuels (GitHub vs. Azure Oryx). Laissez GitHub effectuer 100 % de la construction et du packaging.
Bonnes pratiques du workflow :
- GitHub exécute
npm installet la construction du frontend (npm run build). - GitHub télécharge un artefact contenant la sortie compilée (
dist), les fichiers backend (server.js), et crucialement, le dossiernode_modules.- Pourquoi ? Si
node_modulesest omis, le moteur Oryx d'Azure tente de construire l'application elle-même en exécutantnpm run build, ce qui échouera car les fichiers sources bruts (index.html) n'ont pas été téléchargés.
- Pourquoi ? Si
- Utilisez
azure/webapps-deploy@v3avec un profil de publication stocké comme secret GitHub.