<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cloud-Native | The .NET Blog</title><link>https://thedotnetblog.com/fr/tags/cloud-native/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>fr</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/fr/tags/cloud-native/index.xml" rel="self" type="application/rss+xml"/><item><title>Hooks azd en Python, TypeScript et .NET : fini les scripts shell</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/</guid><description>La CLI Azure Developer prend désormais en charge les hooks en Python, JavaScript, TypeScript et .NET. Plus besoin de basculer vers Bash juste pour lancer un script de migration.</description><content:encoded>&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azd-hooks-python-javascript-typescript-dotnet/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Vous avez déjà eu un projet entièrement en .NET et vous avez quand même dû écrire des scripts Bash pour les hooks azd ? Vous connaissez la douleur. Pourquoi basculer vers la syntaxe shell pour une étape de pré-provisioning quand tout le reste du projet est en C# ?&lt;/p&gt;
&lt;p&gt;Cette frustration a maintenant une solution officielle. La CLI Azure Developer &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;vient de publier la prise en charge multi-langages pour les hooks&lt;/a&gt;, et c&amp;rsquo;est exactement aussi bien que ça en a l&amp;rsquo;air.&lt;/p&gt;
&lt;h2 id="les-hooks-en-bref"&gt;Les hooks, en bref&lt;/h2&gt;
&lt;p&gt;Les hooks sont des scripts qui s&amp;rsquo;exécutent à des moments clés du cycle de vie d&amp;rsquo;&lt;code&gt;azd&lt;/code&gt; — avant le provisioning, après le déploiement, etc. Définis dans &lt;code&gt;azure.yaml&lt;/code&gt;, ils permettent d&amp;rsquo;injecter de la logique personnalisée sans modifier la CLI.&lt;/p&gt;
&lt;p&gt;Avant, seuls Bash et PowerShell étaient supportés. Maintenant, on peut utiliser &lt;strong&gt;Python, JavaScript, TypeScript ou .NET&lt;/strong&gt; — et &lt;code&gt;azd&lt;/code&gt; s&amp;rsquo;occupe du reste automatiquement.&lt;/p&gt;
&lt;h2 id="comment-fonctionne-la-détection"&gt;Comment fonctionne la détection&lt;/h2&gt;
&lt;p&gt;Il suffit de pointer le hook vers un fichier et &lt;code&gt;azd&lt;/code&gt; déduit le langage à partir de l&amp;rsquo;extension :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.py&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postdeploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/seed.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pas de configuration supplémentaire. Si l&amp;rsquo;extension est ambiguë, on peut ajouter &lt;code&gt;kind: python&lt;/code&gt; (ou le langage correspondant) pour le préciser.&lt;/p&gt;
&lt;h2 id="détails-par-langage"&gt;Détails par langage&lt;/h2&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;p&gt;Placer un &lt;code&gt;requirements.txt&lt;/code&gt; ou &lt;code&gt;pyproject.toml&lt;/code&gt; à côté du script (ou dans un répertoire parent). &lt;code&gt;azd&lt;/code&gt; crée automatiquement un environnement virtuel, installe les dépendances et exécute le script.&lt;/p&gt;
&lt;h3 id="javascript-et-typescript"&gt;JavaScript et TypeScript&lt;/h3&gt;
&lt;p&gt;Même principe — un &lt;code&gt;package.json&lt;/code&gt; près du script, et &lt;code&gt;azd&lt;/code&gt; exécute d&amp;rsquo;abord &lt;code&gt;npm install&lt;/code&gt;. Pour TypeScript, il utilise &lt;code&gt;npx tsx&lt;/code&gt; sans étape de compilation et sans &lt;code&gt;tsconfig.json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="net"&gt;.NET&lt;/h3&gt;
&lt;p&gt;Deux modes disponibles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mode projet&lt;/strong&gt; : Si un &lt;code&gt;.csproj&lt;/code&gt; est présent à côté du script, &lt;code&gt;azd&lt;/code&gt; exécute automatiquement &lt;code&gt;dotnet restore&lt;/code&gt; et &lt;code&gt;dotnet build&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mode single-file&lt;/strong&gt; : Sur .NET 10+, les fichiers &lt;code&gt;.cs&lt;/code&gt; autonomes s&amp;rsquo;exécutent directement via &lt;code&gt;dotnet run script.cs&lt;/code&gt;. Aucun fichier de projet requis.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration-par-exécuteur"&gt;Configuration par exécuteur&lt;/h2&gt;
&lt;p&gt;Chaque langage supporte un bloc &lt;code&gt;config&lt;/code&gt; optionnel :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;hooks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/setup.ts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;packageManager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;pnpm&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;postprovision&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./hooks/migrate.cs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Release&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;framework&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;net10.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="pourquoi-cest-important-pour-les-développeurs-net"&gt;Pourquoi c&amp;rsquo;est important pour les développeurs .NET&lt;/h2&gt;
&lt;p&gt;Les hooks étaient le dernier endroit dans un projet azd qui forçait à changer de langage. Maintenant, l&amp;rsquo;intégralité du pipeline de déploiement peut vivre dans un seul langage. Il devient possible de réutiliser les utilitaires .NET existants dans les hooks, de référencer des bibliothèques partagées et d&amp;rsquo;abandonner la maintenance de scripts shell.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Un de ces changements qui paraissent anodins mais qui réduisent concrètement la friction au quotidien avec azd. Le support multi-langages pour les hooks est disponible maintenant — tous les détails dans le &lt;a href="https://devblogs.microsoft.com/azure-sdk/azd-multi-language-hooks/"&gt;post officiel&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Global Azure Spain 2026</title><link>https://thedotnetblog.com/fr/events/global-azure-spain-2026/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://thedotnetblog.com/fr/events/global-azure-spain-2026/</guid><description>Le plus grand événement Azure communautaire en Espagne — une journée complète de sessions sur Azure, IA, données, sécurité et développement cloud-native avec 38 speakers sur 3 tracks.</description><content:encoded>&lt;p&gt;Global Azure Spain 2026 a lieu le &lt;strong&gt;18 avril 2026&lt;/strong&gt; au &lt;strong&gt;Kinépolis Diversia&lt;/strong&gt; à Alcobendas, Madrid. C&amp;rsquo;est le plus grand événement communautaire Azure en Espagne, réunissant 38 speakers sur 3 tracks parallèles couvrant les agents IA, le réseau Azure, Cosmos DB, Fabric, IoT, la sécurité et bien plus.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;événement se déroule de &lt;strong&gt;08h30 à 18h30&lt;/strong&gt; et comprend une keynote, des pauses café, un déjeuner et une session de clôture Q&amp;amp;A.&lt;/p&gt;
&lt;h2 id="points-forts-de-lagenda"&gt;Points forts de l&amp;rsquo;agenda&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domando Agentes de IA&lt;/strong&gt; : gouvernance, outils et APIs avec Azure AI Foundry et Azure API Management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construyendo agentes con LibreChat en Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How Can I Steal Your Data with Azure Private Endpoints&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop Building APIs. Forge Agents with Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agentic DevOps Meets IoT: Real-Time Systems with Fabric and GitHub Copilot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El regreso de los tamagotchis!&lt;/strong&gt; : systèmes multi-agents en action&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foundry Control Plane como plataforma de Agentes global&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rompiendo el perímetro: Zero Trust aplicado en Azure&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="billets"&gt;Billets&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;inscription est une donation symbolique — le prix du billet est entièrement reversé à &lt;strong&gt;Plan International&lt;/strong&gt;, soutenant les droits des enfants et l&amp;rsquo;égalité dans le monde. Capacité limitée, alors réservez votre place rapidement.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.eventbrite.es/e/entradas-global-azure-spain-2026-en-madrid-1981594189564"&gt;Billets sur Eventbrite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://globalazure.es/"&gt;Site de l&amp;rsquo;événement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="azure-tour-2026"&gt;Azure Tour 2026&lt;/h2&gt;
&lt;p&gt;Au-delà de Madrid, le Global Azure Tour 2026 comprend également des étapes à &lt;strong&gt;Saragosse&lt;/strong&gt;, &lt;strong&gt;Tenerife&lt;/strong&gt; et &lt;strong&gt;Séville&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 accueille MongoDB EF Core et Azure Data Lake — Deux intégrations à essayer</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/</guid><description>Aspire 13.2 ajoute les intégrations MongoDB Entity Framework Core et Azure Data Lake Storage avec des health checks et du service discovery sans configuration. Voici à quoi elles ressemblent en pratique.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/aspire-132-mongodb-efcore-data-lake/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aspire 13.2 vient d&amp;rsquo;arriver avec &lt;a href="https://devblogs.microsoft.com/aspire/aspire-new-database-integrations/"&gt;deux nouvelles intégrations de bases de données&lt;/a&gt; qui méritent votre attention : MongoDB Entity Framework Core et Azure Data Lake Storage. Si vous vouliez utiliser EF Core avec MongoDB dans une app Aspire, ou si vous aviez besoin de connecter des workloads data lake avec du service discovery, cette version apporte les deux.&lt;/p&gt;
&lt;h2 id="mongodb-rencontre-ef-core-dans-aspire"&gt;MongoDB rencontre EF Core dans Aspire&lt;/h2&gt;
&lt;p&gt;C&amp;rsquo;est celle qui m&amp;rsquo;enthousiasme le plus. Aspire supporte MongoDB depuis un moment, mais c&amp;rsquo;était toujours le driver brut — pas d&amp;rsquo;EF Core, pas de &lt;code&gt;DbContext&lt;/code&gt;, pas de requêtes LINQ sur vos documents. Maintenant vous avez l&amp;rsquo;expérience complète d&amp;rsquo;EF Core avec MongoDB, plus les health checks automatiques et le service discovery d&amp;rsquo;Aspire.&lt;/p&gt;
&lt;p&gt;La mise en place suit le pattern typique d&amp;rsquo;Aspire. Dans votre AppHost :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;mongodb&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddMongoDB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;mongodb&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithDataVolume&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithLifetime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ContainerLifetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Persistent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddProject&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ApiService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mongodb&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis dans votre projet consommateur, ajoutez l&amp;rsquo;intégration EF Core :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Aspire.MongoDB.EntityFrameworkCore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et enregistrez votre &lt;code&gt;DbContext&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddMongoDbContext&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;MyDbContext&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;mongodb&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;mydb&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;À partir de là, c&amp;rsquo;est de l&amp;rsquo;EF Core standard. Définissez vos entités, utilisez votre &lt;code&gt;DbContext&lt;/code&gt; comme vous le feriez avec n&amp;rsquo;importe quel autre provider. L&amp;rsquo;intégration gère le connection pooling, les traces OpenTelemetry et les health checks en arrière-plan.&lt;/p&gt;
&lt;p&gt;Pour les développeurs .NET qui utilisaient MongoDB avec le driver brut et configuraient les connection strings manuellement, c&amp;rsquo;est une belle amélioration. Vous obtenez l&amp;rsquo;abstraction complète d&amp;rsquo;EF Core sans perdre le service discovery d&amp;rsquo;Aspire.&lt;/p&gt;
&lt;h2 id="azure-data-lake-storage-entre-dans-la-danse"&gt;Azure Data Lake Storage entre dans la danse&lt;/h2&gt;
&lt;p&gt;Le deuxième ajout majeur est une &lt;a href="https://aspire.dev/integrations/cloud/azure/azure-storage-datalake/"&gt;intégration Azure Data Lake Storage (ADLS)&lt;/a&gt;. Si vous construisez des pipelines de données, des processus ETL ou des plateformes d&amp;rsquo;analytique, vous pouvez maintenant connecter des ressources Data Lake de la même façon que n&amp;rsquo;importe quelle autre dépendance Aspire.&lt;/p&gt;
&lt;p&gt;Dans l&amp;rsquo;AppHost :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;storage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddAzureStorage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;azure-storage&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dataLake&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddDataLake&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;fileSystem&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddDataLakeFileSystem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake-file-system&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;analyticsService&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddProject&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AnalyticsService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;analytics&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataLake&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fileSystem&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dans le projet consommateur :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddAzureDataLakeServiceClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddAzureDataLakeFileSystemClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;data-lake-file-system&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pas de gestion manuelle de connection strings, pas de recherche de credentials. Aspire provisionne les ressources et les injecte. Pour ceux d&amp;rsquo;entre nous qui construisent des apps .NET cloud-native touchant à la fois aux données opérationnelles et aux workloads analytiques, cela fait du data lake un citoyen de première classe dans le modèle Aspire.&lt;/p&gt;
&lt;h2 id="les-petits-correctifs-qui-comptent"&gt;Les petits correctifs qui comptent&lt;/h2&gt;
&lt;p&gt;Au-delà des fonctionnalités principales, il y a quelques améliorations à noter :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Correction du connection string MongoDB&lt;/strong&gt; — le slash avant le nom de la base de données est maintenant géré correctement. Si vous aviez un workaround, vous pouvez le supprimer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exports SQL Server&lt;/strong&gt; — &lt;code&gt;Aspire.Hosting.SqlServer&lt;/code&gt; exporte maintenant des options de configuration serveur supplémentaires pour un contrôle plus fin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mises à jour des émulateurs&lt;/strong&gt; — émulateur ServiceBus 2.0.0, émulateur App Configuration 1.0.2, et l&amp;rsquo;émulateur preview de CosmosDB inclut maintenant une vérification de disponibilité&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure Managed Redis&lt;/strong&gt; — utilise maintenant &lt;code&gt;rediss://&lt;/code&gt; (Redis Secure) par défaut, donc les connexions sont chiffrées d&amp;rsquo;emblée&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce dernier point est subtil mais important — un Redis chiffré par défaut signifie une chose de moins à configurer en production.&lt;/p&gt;
&lt;h2 id="pour-conclure"&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 est une version incrémentale, mais les intégrations MongoDB EF Core et Data Lake comblent de vrais manques. Si vous attendiez un support EF Core correct avec MongoDB dans Aspire, ou si vous aviez besoin que Data Lake soit une dépendance de première classe, &lt;a href="https://get.aspire.dev"&gt;passez à la 13.2&lt;/a&gt; et essayez-les. La commande &lt;code&gt;aspire add&lt;/code&gt; génère tout ce dont vous avez besoin.&lt;/p&gt;
&lt;p&gt;Lisez les &lt;a href="https://aspire.dev/whats-new/aspire-13-2/#-integrations-updates"&gt;notes de version complètes&lt;/a&gt; pour plus de détails, et consultez la &lt;a href="https://aspire.dev/integrations/gallery/"&gt;galerie d&amp;rsquo;intégrations&lt;/a&gt; pour la liste complète.&lt;/p&gt;</content:encoded></item><item><title>Azure Smart Tier est en GA — Optimisation automatique des coûts de Blob Storage sans règles de cycle de vie</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/</guid><description>Le smart tier d'Azure Blob Storage est maintenant en disponibilité générale, déplaçant automatiquement les objets entre les niveaux hot, cool et cold en fonction des patterns d'accès réels — sans règles de cycle de vie.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azure-smart-tier-blob-storage-ga/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si vous avez déjà passé du temps à peaufiner les politiques de cycle de vie d&amp;rsquo;Azure Blob Storage pour ensuite les voir s&amp;rsquo;effondrer quand les patterns d&amp;rsquo;accès ont changé, ceci est pour vous. Microsoft vient d&amp;rsquo;annoncer la &lt;a href="https://azure.microsoft.com/en-us/blog/optimize-object-storage-costs-automatically-with-smart-tier-now-generally-available/"&gt;disponibilité générale du smart tier&lt;/a&gt; pour Azure Blob et Data Lake Storage — une capacité de tiering entièrement gérée qui déplace automatiquement les objets entre les niveaux hot, cool et cold en fonction de l&amp;rsquo;utilisation réelle.&lt;/p&gt;
&lt;h2 id="ce-que-fait-réellement-le-smart-tier"&gt;Ce que fait réellement le smart tier&lt;/h2&gt;
&lt;p&gt;Le concept est simple : le smart tier évalue en continu la dernière heure d&amp;rsquo;accès de chaque objet dans votre compte de stockage. Les données fréquemment consultées restent en hot, les données inactives passent en cool après 30 jours, puis en cold après 60 jours supplémentaires. Quand les données sont à nouveau consultées, elles sont repromues en hot immédiatement. Le cycle recommence.&lt;/p&gt;
&lt;p&gt;Pas de règles de cycle de vie à configurer. Pas de prédictions de patterns d&amp;rsquo;accès. Pas de réglages manuels.&lt;/p&gt;
&lt;p&gt;Pendant la preview, Microsoft a rapporté que &lt;strong&gt;plus de 50% de la capacité gérée par smart tier s&amp;rsquo;est automatiquement déplacée vers des niveaux plus froids&lt;/strong&gt; en fonction des patterns d&amp;rsquo;accès réels. C&amp;rsquo;est une réduction de coûts significative pour les comptes de stockage volumineux.&lt;/p&gt;
&lt;h2 id="pourquoi-cest-important-pour-les-développeurs-net"&gt;Pourquoi c&amp;rsquo;est important pour les développeurs .NET&lt;/h2&gt;
&lt;p&gt;Si vous développez des applications qui génèrent des logs, de la télémétrie, des données analytiques, ou tout type de patrimoine de données en croissance — et soyons honnêtes, qui ne le fait pas ? — les coûts de stockage s&amp;rsquo;accumulent vite. L&amp;rsquo;approche traditionnelle consistait à écrire des politiques de gestion de cycle de vie, les tester, puis les réajuster quand les patterns d&amp;rsquo;accès de votre application changeaient. Smart tier supprime entièrement ce workflow.&lt;/p&gt;
&lt;p&gt;Quelques scénarios pratiques où cela aide :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Télémétrie et logs d&amp;rsquo;applications&lt;/strong&gt; — hot lors du débogage, rarement consultés après quelques semaines&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelines de données et sorties ETL&lt;/strong&gt; — sollicités intensément pendant le traitement, puis majoritairement cold&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenu généré par les utilisateurs&lt;/strong&gt; — les uploads récents sont hot, le contenu ancien refroidit progressivement&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Données de sauvegarde et d&amp;rsquo;archivage&lt;/strong&gt; — consultées occasionnellement pour la conformité, majoritairement inactives&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Activer le smart tier est une configuration unique :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nouveaux comptes&lt;/strong&gt; : Sélectionnez smart tier comme niveau d&amp;rsquo;accès par défaut lors de la création du compte de stockage (redondance zonale requise)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comptes existants&lt;/strong&gt; : Changez le niveau d&amp;rsquo;accès blob de votre valeur par défaut actuelle vers smart tier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les objets de moins de 128 KiB restent en hot et n&amp;rsquo;engendrent pas de frais de surveillance. Pour tout le reste, vous payez les tarifs standard de capacité hot/cool/cold sans frais de transition de niveau, sans pénalités de suppression anticipée et sans coûts de récupération de données. Des frais de surveillance mensuels par objet couvrent l&amp;rsquo;orchestration.&lt;/p&gt;
&lt;h2 id="le-compromis-à-connaître"&gt;Le compromis à connaître&lt;/h2&gt;
&lt;p&gt;Les règles de tiering du smart tier sont statiques (30 jours → cool, 90 jours → cold). Si vous avez besoin de seuils personnalisés — par exemple, passer en cool après 7 jours pour un workload spécifique — les règles de cycle de vie restent la solution. Et ne mélangez pas les deux : évitez d&amp;rsquo;utiliser des règles de cycle de vie sur des objets gérés par smart tier, car elles peuvent entrer en conflit.&lt;/p&gt;
&lt;h2 id="pour-conclure"&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Ce n&amp;rsquo;est pas révolutionnaire, mais ça résout un vrai casse-tête opérationnel. Si vous gérez des comptes blob storage en croissance et que vous en avez assez de maintenir des politiques de cycle de vie, &lt;a href="https://learn.microsoft.com/en-us/azure/storage/blobs/access-tiers-smart"&gt;activez smart tier&lt;/a&gt; et laissez Azure s&amp;rsquo;en charger. C&amp;rsquo;est disponible dès aujourd&amp;rsquo;hui dans la quasi-totalité des régions zonales du cloud public.&lt;/p&gt;</content:encoded></item><item><title>Où héberger vos agents IA sur Azure ? Un guide de décision pratique</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</guid><description>Azure propose six façons d'héberger des agents IA — des conteneurs bruts aux Foundry Hosted Agents entièrement gérés. Voici comment choisir la bonne option pour votre charge de travail .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si vous construisez des agents IA avec .NET en ce moment, vous avez probablement remarqué quelque chose : il y a &lt;em&gt;beaucoup&lt;/em&gt; de façons de les héberger sur Azure. Container Apps, AKS, Functions, App Service, Foundry Agents, Foundry Hosted Agents — et tous semblent raisonnables jusqu&amp;rsquo;à ce que vous ayez réellement besoin d&amp;rsquo;en choisir un. Microsoft vient de publier un &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;guide complet sur l&amp;rsquo;hébergement d&amp;rsquo;agents IA sur Azure&lt;/a&gt; qui clarifie tout ça, et je veux le décomposer du point de vue pratique d&amp;rsquo;un développeur .NET.&lt;/p&gt;
&lt;h2 id="les-six-options-en-un-coup-dœil"&gt;Les six options en un coup d&amp;rsquo;œil&lt;/h2&gt;
&lt;p&gt;Voici comment je résumerais le paysage :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Idéal pour&lt;/th&gt;
&lt;th&gt;Vous gérez&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Container Apps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Contrôle total des conteneurs sans complexité K8s&lt;/td&gt;
&lt;td&gt;Observabilité, état, cycle de vie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AKS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Conformité entreprise, multi-cluster, réseau personnalisé&lt;/td&gt;
&lt;td&gt;Tout (c&amp;rsquo;est le but)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Azure Functions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tâches d&amp;rsquo;agents événementielles et courtes&lt;/td&gt;
&lt;td&gt;Presque rien — vrai serverless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;App Service&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agents HTTP simples, trafic prévisible&lt;/td&gt;
&lt;td&gt;Déploiement, config de scaling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Foundry Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agents sans code via portail/SDK&lt;/td&gt;
&lt;td&gt;Presque rien&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Foundry Hosted Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agents framework personnalisé avec infra gérée&lt;/td&gt;
&lt;td&gt;Uniquement votre code d&amp;rsquo;agent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Les quatre premières sont du compute généraliste — vous &lt;em&gt;pouvez&lt;/em&gt; y exécuter des agents, mais elles n&amp;rsquo;ont pas été conçues pour ça. Les deux dernières sont natives aux agents : elles comprennent les conversations, les appels d&amp;rsquo;outils et les cycles de vie des agents comme des concepts de première classe.&lt;/p&gt;
&lt;h2 id="foundry-hosted-agents--le-sweet-spot-pour-les-développeurs-net-dagents"&gt;Foundry Hosted Agents — le sweet spot pour les développeurs .NET d&amp;rsquo;agents&lt;/h2&gt;
&lt;p&gt;C&amp;rsquo;est ce qui a attiré mon attention. Les Foundry Hosted Agents se situent pile au milieu : vous obtenez la flexibilité d&amp;rsquo;exécuter votre propre code (Semantic Kernel, Agent Framework, LangGraph — peu importe) mais la plateforme gère l&amp;rsquo;infrastructure, l&amp;rsquo;observabilité et la gestion des conversations.&lt;/p&gt;
&lt;p&gt;La pièce clé est le &lt;strong&gt;Hosting Adapter&lt;/strong&gt; — une fine couche d&amp;rsquo;abstraction qui connecte votre framework d&amp;rsquo;agents à la plateforme Foundry. Pour Microsoft Agent Framework, ça ressemble à ça :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;azure.ai.agentserver.agentframework&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;from_agent_framework&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ChatAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chat_client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;AzureAIAgentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;You are a helpful assistant.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;get_local_time&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;from_agent_framework&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;C&amp;rsquo;est toute votre histoire d&amp;rsquo;hébergement. L&amp;rsquo;adapter gère la traduction de protocoles, le streaming via server-sent events, l&amp;rsquo;historique de conversation et le traçage OpenTelemetry — tout automatiquement. Pas de middleware personnalisé, pas de plomberie manuelle.&lt;/p&gt;
&lt;h2 id="le-déploiement-est-vraiment-simple"&gt;Le déploiement est vraiment simple&lt;/h2&gt;
&lt;p&gt;J&amp;rsquo;ai déployé des agents sur Container Apps avant et ça fonctionne, mais on finit par écrire beaucoup de code de colle pour la gestion d&amp;rsquo;état et l&amp;rsquo;observabilité. Avec Hosted Agents et &lt;code&gt;azd&lt;/code&gt;, le déploiement c&amp;rsquo;est :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Installer l&amp;#39;extension agent IA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ext install azure.ai.agents
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialiser depuis un template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd ai agent init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Construire, pousser, déployer — terminé&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;azd up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce seul &lt;code&gt;azd up&lt;/code&gt; construit votre conteneur, le pousse vers ACR, provisionne le projet Foundry, déploie les endpoints de modèle et démarre votre agent. Cinq étapes condensées en une seule commande.&lt;/p&gt;
&lt;h2 id="gestion-de-conversations-intégrée"&gt;Gestion de conversations intégrée&lt;/h2&gt;
&lt;p&gt;C&amp;rsquo;est la partie qui fait gagner le plus de temps en production. Au lieu de construire votre propre store d&amp;rsquo;état de conversation, les Hosted Agents le gèrent nativement :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Créer une conversation persistante&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;conversation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conversations&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Premier tour&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MyAgent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Remember: my favorite number is 42.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deuxième tour — le contexte est préservé&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;response2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai_client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;conversation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MyAgent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_reference&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Multiply my favorite number by 10.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pas de Redis. Pas de store de sessions Cosmos DB. Pas de middleware personnalisé pour la sérialisation des messages. La plateforme gère tout simplement.&lt;/p&gt;
&lt;h2 id="mon-framework-de-décision"&gt;Mon framework de décision&lt;/h2&gt;
&lt;p&gt;Après avoir passé en revue les six options, voici mon modèle mental rapide :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Vous avez besoin de zéro infrastructure ?&lt;/strong&gt; → Foundry Agents (portail/SDK, pas de conteneurs)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vous avez du code d&amp;rsquo;agent personnalisé mais voulez un hébergement géré ?&lt;/strong&gt; → Foundry Hosted Agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vous avez besoin de tâches d&amp;rsquo;agents événementielles et courtes ?&lt;/strong&gt; → Azure Functions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vous avez besoin d&amp;rsquo;un contrôle maximum des conteneurs sans K8s ?&lt;/strong&gt; → Container Apps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vous avez besoin de conformité stricte et multi-cluster ?&lt;/strong&gt; → AKS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vous avez un agent HTTP simple avec un trafic prévisible ?&lt;/strong&gt; → App Service&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pour la plupart des développeurs .NET qui construisent avec Semantic Kernel ou Microsoft Agent Framework, Hosted Agents est probablement le bon point de départ. Vous obtenez le scale-to-zero, OpenTelemetry intégré, la gestion des conversations et la flexibilité de framework — sans gérer Kubernetes ni monter votre propre stack d&amp;rsquo;observabilité.&lt;/p&gt;
&lt;h2 id="pour-conclure"&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Le paysage de l&amp;rsquo;hébergement d&amp;rsquo;agents sur Azure mûrit rapidement. Si vous démarrez un nouveau projet d&amp;rsquo;agent IA aujourd&amp;rsquo;hui, je considérerais sérieusement Foundry Hosted Agents avant de recourir à Container Apps ou AKS par habitude. L&amp;rsquo;infrastructure gérée fait gagner un temps réel, et le pattern hosting adapter vous permet de garder votre choix de framework.&lt;/p&gt;
&lt;p&gt;Consultez le &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;guide complet de Microsoft&lt;/a&gt; et le &lt;a href="https://github.com/microsoft-foundry/foundry-samples/tree/main/samples/python/hosted-agents"&gt;repo Foundry Samples&lt;/a&gt; pour des exemples fonctionnels.&lt;/p&gt;</content:encoded></item><item><title>KubeCon Europe 2026 : Ce que les développeurs .NET devraient vraiment retenir</title><link>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/fr/news/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/</guid><description>Microsoft a publié une avalanche d'annonces Kubernetes à KubeCon Europe 2026. Voici la version filtrée — uniquement les mises à jour AKS et cloud-native qui comptent si vous livrez des apps .NET.</description><content:encoded>&lt;p&gt;&lt;em&gt;Cet article a été traduit automatiquement. Pour la version originale, &lt;a href="https://thedotnetblog.com/fr/news/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/"&gt;cliquez ici&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Vous connaissez cette sensation quand un énorme post d&amp;rsquo;annonces tombe et que vous scrollez en pensant « cool, mais concrètement ça change quoi pour moi » ? C&amp;rsquo;est moi à chaque saison KubeCon.&lt;/p&gt;
&lt;p&gt;Microsoft vient de publier son &lt;a href="https://opensource.microsoft.com/blog/2026/03/24/whats-new-with-microsoft-in-open-source-and-kubernetes-at-kubecon-cloudnativecon-europe-2026/"&gt;récapitulatif complet de KubeCon Europe 2026&lt;/a&gt; — écrit par Brendan Burns en personne — et honnêtement ? Il y a du vrai contenu ici. Pas juste des cases à cocher, mais des améliorations opérationnelles qui changent votre façon de gérer les choses en production.&lt;/p&gt;
&lt;p&gt;Laissez-moi décortiquer ce qui compte vraiment pour nous développeurs .NET.&lt;/p&gt;
&lt;h2 id="mtls-sans-la-taxe-du-service-mesh"&gt;mTLS sans la taxe du service mesh&lt;/h2&gt;
&lt;p&gt;Voici le truc avec les service meshes : tout le monde veut les garanties de sécurité, personne ne veut la charge opérationnelle. AKS comble enfin cet écart.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/application-network"&gt;Azure Kubernetes Application Network&lt;/a&gt; vous donne le TLS mutuel, l&amp;rsquo;autorisation consciente de l&amp;rsquo;application et la télémétrie du trafic — sans déployer un mesh complet avec sidecars. Combiné avec &lt;a href="https://aka.ms/acns/cilium-mtls"&gt;Cilium mTLS dans Advanced Container Networking Services&lt;/a&gt;, vous obtenez une communication chiffrée pod-à-pod utilisant des certificats X.509 et SPIRE pour la gestion des identités.&lt;/p&gt;
&lt;p&gt;Ce que ça signifie en pratique : vos APIs ASP.NET Core qui communiquent avec des workers en arrière-plan, vos services gRPC qui s&amp;rsquo;appellent mutuellement — tout chiffré et vérifié au niveau réseau, sans aucune modification de code. C&amp;rsquo;est énorme.&lt;/p&gt;
&lt;p&gt;Pour les équipes qui migrent depuis &lt;code&gt;ingress-nginx&lt;/code&gt;, il y a aussi &lt;a href="https://aka.ms/aks/app-routing/gateway-api"&gt;Application Routing avec Meshless Istio&lt;/a&gt; avec support complet de Kubernetes Gateway API. Pas de sidecars. Basé sur les standards. Et ils ont livré des outils &lt;code&gt;ingress2gateway&lt;/code&gt; pour une migration incrémentale.&lt;/p&gt;
&lt;h2 id="observabilité-gpu-qui-nest-pas-une-pensée-après-coup"&gt;Observabilité GPU qui n&amp;rsquo;est pas une pensée après coup&lt;/h2&gt;
&lt;p&gt;Si vous exécutez de l&amp;rsquo;inférence IA aux côtés de vos services .NET (et soyons honnêtes, qui ne commence pas ?), vous avez probablement rencontré l&amp;rsquo;angle mort du monitoring GPU. Vous aviez de super dashboards CPU/mémoire et ensuite&amp;hellip; rien pour les GPU sans configuration manuelle d&amp;rsquo;exporteurs.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/managed-gpu-metrics"&gt;AKS expose maintenant les métriques GPU nativement&lt;/a&gt; dans Prometheus et Grafana managés. Même stack, mêmes dashboards, même pipeline d&amp;rsquo;alertes. Pas d&amp;rsquo;exporteurs custom, pas d&amp;rsquo;agents tiers.&lt;/p&gt;
&lt;p&gt;Côté réseau, ils ont ajouté de la visibilité par flux pour le trafic HTTP, gRPC et Kafka avec une &lt;a href="https://learn.microsoft.com/en-us/azure/aks/container-network-observability-logs"&gt;expérience Azure Monitor en un clic&lt;/a&gt;. IPs, ports, workloads, direction des flux, décisions de policies — tout dans des dashboards intégrés.&lt;/p&gt;
&lt;p&gt;Et voici celle qui m&amp;rsquo;a fait regarder deux fois : &lt;a href="https://learn.microsoft.com/en-us/azure/aks/advanced-container-networking-services-overview"&gt;agentic container networking&lt;/a&gt; ajoute une interface web où vous pouvez poser des questions en langage naturel sur l&amp;rsquo;état réseau de votre cluster. « Pourquoi le pod X n&amp;rsquo;atteint-il pas le service Y ? » → diagnostics en lecture seule depuis la télémétrie en direct. C&amp;rsquo;est vraiment utile à 2h du matin.&lt;/p&gt;
&lt;h2 id="networking-cross-cluster-sans-avoir-besoin-dun-doctorat"&gt;Networking cross-cluster sans avoir besoin d&amp;rsquo;un doctorat&lt;/h2&gt;
&lt;p&gt;Le multi-cluster Kubernetes a toujours été une expérience « apportez votre propre colle réseau ». Azure Kubernetes Fleet Manager propose maintenant du &lt;a href="https://aka.ms/kubernetes-fleet/networking/cross-cluster"&gt;networking cross-cluster&lt;/a&gt; via un cluster mesh Cilium managé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connectivité unifiée entre clusters AKS&lt;/li&gt;
&lt;li&gt;Registre global de services pour la découverte cross-cluster&lt;/li&gt;
&lt;li&gt;Configuration gérée centralement, pas répétée par cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vous exécutez des microservices .NET sur plusieurs régions pour la résilience ou la conformité, ça remplace beaucoup de colle custom fragile. Le Service A en West Europe peut découvrir et appeler le Service B en East US à travers le mesh, avec des politiques de routage et de sécurité cohérentes.&lt;/p&gt;
&lt;h2 id="des-mises-à-jour-qui-ne-demandent-pas-du-courage"&gt;Des mises à jour qui ne demandent pas du courage&lt;/h2&gt;
&lt;p&gt;Soyons honnêtes — les mises à jour Kubernetes en production sont stressantes. « Mettre à jour et espérer » a été la stratégie de fait pour trop d&amp;rsquo;équipes, et c&amp;rsquo;est la raison principale pour laquelle les clusters restent en retard sur les versions.&lt;/p&gt;
&lt;p&gt;Deux nouvelles capacités changent la donne :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les blue-green agent pool upgrades&lt;/strong&gt; créent un pool de nœuds parallèle avec la nouvelle configuration. Validez le comportement, déplacez le trafic progressivement et gardez un chemin de rollback propre. Plus de mutations in-place sur les nœuds de production.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le rollback d&amp;rsquo;agent pool&lt;/strong&gt; permet de revenir à la version Kubernetes et l&amp;rsquo;image de nœud précédentes d&amp;rsquo;un pool après qu&amp;rsquo;une mise à jour se passe mal — sans reconstruire le cluster.&lt;/p&gt;
&lt;p&gt;Ensemble, ils donnent enfin aux opérateurs un vrai contrôle sur le cycle de vie des mises à jour. Pour les équipes .NET, c&amp;rsquo;est important car la vélocité de la plateforme contrôle directement la vitesse à laquelle vous pouvez adopter de nouveaux runtimes, patchs de sécurité et capacités réseau.&lt;/p&gt;
&lt;h2 id="les-workloads-ia-deviennent-des-citoyens-de-première-classe-kubernetes"&gt;Les workloads IA deviennent des citoyens de première classe Kubernetes&lt;/h2&gt;
&lt;p&gt;Le travail upstream en open-source est tout aussi important. Dynamic Resource Allocation (DRA) vient de passer en GA dans Kubernetes 1.36, faisant du scheduling GPU une vraie fonctionnalité de première classe plutôt qu&amp;rsquo;un contournement.&lt;/p&gt;
&lt;p&gt;Quelques projets à surveiller :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Projet&lt;/th&gt;
&lt;th&gt;Ce qu&amp;rsquo;il fait&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/kaito-project/kubeairunway"&gt;AI Runway&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;API Kubernetes commune pour l&amp;rsquo;inférence — déployez des modèles sans connaître K8s, avec découverte HuggingFace et estimations de coûts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.cncf.io/blog/2026/01/07/holmesgpt-agentic-troubleshooting-built-for-the-cloud-native-era/"&gt;HolmesGPT&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Dépannage agentique pour le cloud-native — maintenant un projet CNCF Sandbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/project-dalec/dalec"&gt;Dalec&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Builds déclaratifs d&amp;rsquo;images de conteneur avec génération de SBOM — moins de CVE à l&amp;rsquo;étape de build&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La direction est claire : votre API .NET, votre couche d&amp;rsquo;orchestration Semantic Kernel et vos workloads d&amp;rsquo;inférence devraient tous tourner sur un modèle de plateforme cohérent. On y arrive.&lt;/p&gt;
&lt;h2 id="par-où-commencer-cette-semaine"&gt;Par où commencer cette semaine&lt;/h2&gt;
&lt;p&gt;Si vous évaluez ces changements pour votre équipe, voici ma liste de priorités honnête :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;observabilité d&amp;rsquo;abord&lt;/strong&gt; — activez les métriques GPU et les logs de flux réseau dans un cluster non-prod. Voyez ce que vous avez manqué.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testez les blue-green upgrades&lt;/strong&gt; — essayez le workflow de rollback avant votre prochaine mise à jour de cluster en production. Construisez la confiance dans le processus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pilotez le networking identity-aware&lt;/strong&gt; — choisissez un chemin de service interne et activez mTLS avec Cilium. Mesurez l&amp;rsquo;overhead (spoiler : c&amp;rsquo;est minimal).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Évaluez Fleet Manager&lt;/strong&gt; — si vous gérez plus de deux clusters, le networking cross-cluster se rentabilise tout seul en réduisant la colle custom.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Petites expériences, feedback rapide. C&amp;rsquo;est toujours le bon choix.&lt;/p&gt;
&lt;h2 id="pour-conclure"&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Les annonces KubeCon peuvent être accablantes, mais cette fournée fait vraiment bouger les choses pour les équipes .NET sur AKS. Meilleure sécurité réseau sans overhead de mesh, vraie observabilité GPU, mises à jour plus sûres et des fondations d&amp;rsquo;infrastructure IA plus solides.&lt;/p&gt;
&lt;p&gt;Si vous êtes déjà sur AKS, c&amp;rsquo;est un excellent moment pour renforcer votre baseline opérationnel. Et si vous prévoyez de migrer des workloads .NET vers Kubernetes — la plateforme vient de devenir nettement plus prête pour la production.&lt;/p&gt;</content:encoded></item></channel></rss>