<?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>Aks | The .NET Blog</title><link>https://thedotnetblog.com/it/tags/aks/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>it</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/it/tags/aks/index.xml" rel="self" type="application/rss+xml"/><item><title>Aspire 13.3: Supporto Kubernetes, Log del Browser e la Skill Aspireify</title><link>https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</guid><description>Cinque settimane dopo il 13.2, Aspire 13.3 arriva con 45 nuove funzionalità tra cui il deployment AKS di prima classe, una skill di onboarding assistita dall'IA, la cattura dei log del browser e i risultati dei comandi strutturati.</description><content:encoded>&lt;p&gt;Cinque settimane non sono molto per un rilascio, ma Aspire 13.3 non sembra tale. Gli elementi principali sono significativi: deployment di Kubernetes e AKS di prima classe con Helm, una skill di onboarding assistita da agente chiamata Aspireify, cattura dei log del browser direttamente nel dashboard e risultati dei comandi strutturati. In più, 45 nuove funzionalità, 134 miglioramenti e 93 correzioni di bug.&lt;/p&gt;
&lt;p&gt;Passiamo ai punti salienti.&lt;/p&gt;
&lt;h2 id="aspireify-onboarding-assistito-da-agente"&gt;Aspireify: Onboarding Assistito da Agente&lt;/h2&gt;
&lt;p&gt;Aggiungere Aspire a un progetto esistente sembra semplice — inserisci un AppHost, fatto. In pratica comporta molta archeologia: quali porte contano, quali variabili d&amp;rsquo;ambiente sono dipendenze reali, quali servizi Docker Compose devono corrispondere alle integrazioni Aspire.&lt;/p&gt;
&lt;p&gt;La nuova &lt;strong&gt;skill Aspireify&lt;/strong&gt; fornisce al tuo agente di codice un flusso di lavoro guidato esattamente per questo. Quando &lt;code&gt;aspire init&lt;/code&gt; crea un AppHost scheletro, la skill Aspireify aiuta l&amp;rsquo;agente a ispezionare il repository, capire come funziona già e collegare l&amp;rsquo;AppHost per adattarsi all&amp;rsquo;app — non il contrario.&lt;/p&gt;
&lt;p&gt;La postura predefinita è &amp;ldquo;minimizzare le modifiche al tuo codice.&amp;rdquo; Se la tua app legge già &lt;code&gt;DATABASE_URL&lt;/code&gt;, l&amp;rsquo;agente lo mappa con &lt;code&gt;WithEnvironment()&lt;/code&gt; invece di chiederti di riscrivere la tua configurazione. Se una porta è codificata in modo fisso, la skill indica all&amp;rsquo;agente quando preservarla.&lt;/p&gt;
&lt;p&gt;Questo è il tipo di tooling IA che fa davvero risparmiare tempo invece di generare più lavoro da revisionare.&lt;/p&gt;
&lt;h2 id="deployment-di-kubernetes-e-aks-di-prima-classe"&gt;Deployment di Kubernetes e AKS di Prima Classe&lt;/h2&gt;
&lt;p&gt;Questo era nella lista dei desideri da un po&amp;rsquo;. Aspire 13.3 include il &lt;strong&gt;supporto di deployment di Kubernetes e AKS di prima classe con Helm&lt;/strong&gt;. Ora puoi puntare ad AKS come destinazione di deployment direttamente dagli strumenti Aspire.&lt;/p&gt;
&lt;p&gt;Per i team che già eseguono carichi di lavoro di produzione su AKS, questo colma una lacuna significativa. Il tuo modello di applicazione Aspire ora ha un percorso pulito dallo sviluppo locale a Kubernetes senza la necessità di scrivere manualmente chart Helm.&lt;/p&gt;
&lt;h2 id="log-del-browser-nel-dashboard"&gt;Log del Browser nel Dashboard&lt;/h2&gt;
&lt;p&gt;Questa è una di quelle funzionalità che sembrano piccole finché non stai facendo debug di un problema frontend.&lt;/p&gt;
&lt;p&gt;La nuova API &lt;code&gt;WithBrowserLogs()&lt;/code&gt; collega una risorsa browser tracciata a qualsiasi risorsa capace di endpoint. Aspire lancia Chromium usando un pipe CDP privato e trasmette log della console, richieste di rete ed errori direttamente nel flusso di log della risorsa:&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;frontend&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;AddViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;../frontend&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;WithHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&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;WithBrowserLogs&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;L&amp;rsquo;AppHost TypeScript supporta lo stesso:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;frontend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;../frontend&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="nx"&gt;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt;: &lt;span class="kt"&gt;3000&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="nx"&gt;withBrowserLogs&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;Errori della console, richieste di rete fallite, eccezioni lato client — tutto visibile nello stesso dashboard dove stai già guardando trace e metriche. Nessun cambio di tab verso le DevTools del browser per le cose di base.&lt;/p&gt;
&lt;h2 id="risultati-dei-comandi-strutturati"&gt;Risultati dei Comandi Strutturati&lt;/h2&gt;
&lt;p&gt;I comandi delle risorse hanno ricevuto un aggiornamento significativo. Fino ad ora, i comandi restituivano successo/fallimento. Ora restituiscono risultati strutturati: testo, JSON o markdown che fluisce attraverso il modello, l&amp;rsquo;interfaccia del dashboard, la CLI e gli strumenti MCP.&lt;/p&gt;
&lt;p&gt;Il dashboard lega tutto questo con un nuovo centro notifiche nell&amp;rsquo;intestazione. I risultati dei comandi appaiono come notifiche con timestamp con rendering markdown e un&amp;rsquo;azione &amp;ldquo;Visualizza risposta&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Questo rende i comandi delle risorse veramente componibili. Un&amp;rsquo;integrazione ora può esporre un comando che restituisce un output significativo — come un URL di tunnel — invece di cambiare semplicemente lo stato da qualche parte.&lt;/p&gt;
&lt;h2 id="conclusione"&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Aspire 13.3 vale l&amp;rsquo;aggiornamento anche solo per il supporto Kubernetes. I log del browser e i risultati dei comandi strutturati sembrano il tipo di miglioramenti della qualità della vita che si accumulano rapidamente in un flusso di lavoro di sviluppo quotidiano.&lt;/p&gt;
&lt;p&gt;Note di rilascio complete: &lt;a href="https://devblogs.microsoft.com/aspire/whats-new-aspire-13-3/"&gt;What&amp;rsquo;s New in Aspire 13.3&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Dove dovresti ospitare i tuoi agenti IA su Azure? Una guida decisionale pratica</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/</guid><description>Azure offre sei modi per ospitare agenti IA — dai container grezzi ai Foundry Hosted Agents completamente gestiti. Ecco come scegliere quello giusto per il tuo workload .NET.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/azure-ai-agent-hosting-options-guide/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se stai costruendo agenti IA con .NET in questo momento, probabilmente hai notato qualcosa: ci sono &lt;em&gt;molti&lt;/em&gt; modi per ospitarli su Azure. Container Apps, AKS, Functions, App Service, Foundry Agents, Foundry Hosted Agents — e tutti sembrano ragionevoli finché non devi effettivamente sceglierne uno. Microsoft ha appena pubblicato una &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;guida completa all&amp;rsquo;hosting di agenti IA su Azure&lt;/a&gt; che chiarisce tutto, e voglio analizzarla dalla prospettiva pratica di uno sviluppatore .NET.&lt;/p&gt;
&lt;h2 id="le-sei-opzioni-a-colpo-docchio"&gt;Le sei opzioni a colpo d&amp;rsquo;occhio&lt;/h2&gt;
&lt;p&gt;Ecco come riassumerei il panorama:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Opzione&lt;/th&gt;
&lt;th&gt;Ideale per&lt;/th&gt;
&lt;th&gt;Gestisci tu&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;Controllo totale dei container senza complessità K8s&lt;/td&gt;
&lt;td&gt;Osservabilità, stato, ciclo di vita&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;Compliance aziendale, multi-cluster, networking personalizzato&lt;/td&gt;
&lt;td&gt;Tutto (è quello il punto)&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;Task di agenti event-driven e di breve durata&lt;/td&gt;
&lt;td&gt;Quasi niente — serverless vero&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;Agenti HTTP semplici, traffico prevedibile&lt;/td&gt;
&lt;td&gt;Deploy, config di 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;Agenti senza codice via portale/SDK&lt;/td&gt;
&lt;td&gt;Quasi niente&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;Agenti con framework personalizzato e infra gestita&lt;/td&gt;
&lt;td&gt;Solo il tuo codice agente&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le prime quattro sono compute general-purpose — &lt;em&gt;puoi&lt;/em&gt; eseguire agenti su di esse, ma non sono state progettate per quello. Le ultime due sono native per agenti: comprendono conversazioni, chiamate a strumenti e cicli di vita degli agenti come concetti di prima classe.&lt;/p&gt;
&lt;h2 id="foundry-hosted-agents--il-punto-ideale-per-sviluppatori-net-di-agenti"&gt;Foundry Hosted Agents — il punto ideale per sviluppatori .NET di agenti&lt;/h2&gt;
&lt;p&gt;Questo è ciò che ha catturato la mia attenzione. I Foundry Hosted Agents si posizionano proprio nel mezzo: ottieni la flessibilità di eseguire il tuo codice (Semantic Kernel, Agent Framework, LangGraph — qualsiasi cosa) ma la piattaforma gestisce infrastruttura, osservabilità e gestione delle conversazioni.&lt;/p&gt;
&lt;p&gt;Il pezzo chiave è l&amp;rsquo;&lt;strong&gt;Hosting Adapter&lt;/strong&gt; — un sottile livello di astrazione che collega il tuo framework di agenti alla piattaforma Foundry. Per Microsoft Agent Framework, appare così:&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;Questa è tutta la tua storia di hosting. L&amp;rsquo;adapter gestisce traduzione di protocolli, streaming via server-sent events, cronologia delle conversazioni e tracing OpenTelemetry — tutto automaticamente. Nessun middleware personalizzato, nessun plumbing manuale.&lt;/p&gt;
&lt;h2 id="il-deploy-è-genuinamente-semplice"&gt;Il deploy è genuinamente semplice&lt;/h2&gt;
&lt;p&gt;Ho fatto deploy di agenti su Container Apps prima e funziona, ma finisci per scrivere molto codice di collegamento per gestione dello stato e osservabilità. Con Hosted Agents e &lt;code&gt;azd&lt;/code&gt;, il deploy è:&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;# Installare l&amp;#39;estensione agente 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;# Inizializzare da 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;# Costruire, pushare, fare deploy — fatto&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;Quel singolo &lt;code&gt;azd up&lt;/code&gt; costruisce il tuo container, lo pusha su ACR, provisiona il progetto Foundry, fa deploy degli endpoint del modello e avvia il tuo agente. Cinque passaggi condensati in un solo comando.&lt;/p&gt;
&lt;h2 id="gestione-conversazioni-integrata"&gt;Gestione conversazioni integrata&lt;/h2&gt;
&lt;p&gt;Questa è la parte che fa risparmiare più tempo in produzione. Invece di costruire il tuo store di stato delle conversazioni, gli Hosted Agents lo gestiscono nativamente:&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;# Creare una conversazione persistente&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;# Primo turno&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;# Secondo turno — il contesto è preservato&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;Niente Redis. Niente session store Cosmos DB. Niente middleware personalizzato per la serializzazione dei messaggi. La piattaforma semplicemente se ne occupa.&lt;/p&gt;
&lt;h2 id="il-mio-framework-decisionale"&gt;Il mio framework decisionale&lt;/h2&gt;
&lt;p&gt;Dopo aver esaminato tutte e sei le opzioni, ecco il mio modello mentale rapido:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hai bisogno di zero infrastruttura?&lt;/strong&gt; → Foundry Agents (portale/SDK, niente container)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hai codice agente personalizzato ma vuoi hosting gestito?&lt;/strong&gt; → Foundry Hosted Agents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hai bisogno di task agente event-driven e di breve durata?&lt;/strong&gt; → Azure Functions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hai bisogno di massimo controllo dei container senza K8s?&lt;/strong&gt; → Container Apps&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hai bisogno di compliance rigorosa e multi-cluster?&lt;/strong&gt; → AKS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hai un agente HTTP semplice con traffico prevedibile?&lt;/strong&gt; → App Service&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Per la maggior parte degli sviluppatori .NET che costruiscono con Semantic Kernel o Microsoft Agent Framework, Hosted Agents è probabilmente il punto di partenza giusto. Ottieni scale-to-zero, OpenTelemetry integrato, gestione conversazioni e flessibilità di framework — senza gestire Kubernetes o montare il tuo stack di osservabilità.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;Il panorama dell&amp;rsquo;hosting di agenti su Azure sta maturando velocemente. Se stai iniziando un nuovo progetto di agente IA oggi, considererei seriamente Foundry Hosted Agents prima di ricorrere a Container Apps o AKS per abitudine. L&amp;rsquo;infrastruttura gestita fa risparmiare tempo reale, e il pattern hosting adapter ti permette di mantenere la tua scelta di framework.&lt;/p&gt;
&lt;p&gt;Dai un&amp;rsquo;occhiata alla &lt;a href="https://devblogs.microsoft.com/all-things-azure/hostedagent/"&gt;guida completa di Microsoft&lt;/a&gt; e al &lt;a href="https://github.com/microsoft-foundry/foundry-samples/tree/main/samples/python/hosted-agents"&gt;repo Foundry Samples&lt;/a&gt; per esempi funzionanti.&lt;/p&gt;</content:encoded></item><item><title>KubeCon Europe 2026: Cosa dovrebbero davvero sapere gli sviluppatori .NET</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/</guid><description>Microsoft ha rilasciato una valanga di annunci Kubernetes alla KubeCon Europe 2026. Ecco la versione filtrata — solo gli aggiornamenti AKS e cloud-native che contano se sviluppi app .NET.</description><content:encoded>&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/kubecon-2026-aks-updates-dotnet-developers/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Conosci quella sensazione quando esce un post di annunci enorme e scrolli pensando &amp;ldquo;bello, ma cosa cambia davvero per me&amp;rdquo;? Mi succede ogni stagione KubeCon.&lt;/p&gt;
&lt;p&gt;Microsoft ha appena pubblicato il &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;riassunto completo di KubeCon Europe 2026&lt;/a&gt; — scritto da Brendan Burns in persona — e onestamente? C&amp;rsquo;è sostanza vera. Non solo checklist di feature, ma miglioramenti operativi che cambiano come gestisci le cose in produzione.&lt;/p&gt;
&lt;p&gt;Vediamo cosa conta davvero per noi sviluppatori .NET.&lt;/p&gt;
&lt;h2 id="mtls-senza-la-tassa-del-service-mesh"&gt;mTLS senza la tassa del service mesh&lt;/h2&gt;
&lt;p&gt;Il punto sui service mesh: tutti vogliono le garanzie di sicurezza, nessuno vuole il carico operativo. AKS sta finalmente colmando questo divario.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/application-network"&gt;Azure Kubernetes Application Network&lt;/a&gt; ti dà mutual TLS, autorizzazione application-aware e telemetria del traffico — senza deployare un mesh pesante con sidecar. Combinato con &lt;a href="https://aka.ms/acns/cilium-mtls"&gt;Cilium mTLS in Advanced Container Networking Services&lt;/a&gt;, ottieni comunicazione crittografata pod-a-pod usando certificati X.509 e SPIRE per la gestione delle identità.&lt;/p&gt;
&lt;p&gt;Cosa significa in pratica: le tue API ASP.NET Core che parlano con worker in background, i tuoi servizi gRPC che si chiamano a vicenda — tutto crittografato e verificato a livello di rete, senza modifiche al codice applicativo. È enorme.&lt;/p&gt;
&lt;p&gt;Per i team che migrano da &lt;code&gt;ingress-nginx&lt;/code&gt;, c&amp;rsquo;è anche &lt;a href="https://aka.ms/aks/app-routing/gateway-api"&gt;Application Routing con Meshless Istio&lt;/a&gt; con supporto completo per Kubernetes Gateway API. Niente sidecar. Basato su standard. E hanno rilasciato strumenti &lt;code&gt;ingress2gateway&lt;/code&gt; per la migrazione incrementale.&lt;/p&gt;
&lt;h2 id="osservabilità-gpu-che-non-è-un-ripensamento"&gt;Osservabilità GPU che non è un ripensamento&lt;/h2&gt;
&lt;p&gt;Se stai eseguendo inferenza IA accanto ai tuoi servizi .NET (e siamo onesti, chi non sta iniziando?), probabilmente hai incontrato il punto cieco del monitoraggio GPU. Avevi dashboard fantastiche per CPU/memoria e poi&amp;hellip; niente per le GPU senza configurazione manuale degli exporter.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://aka.ms/aks/managed-gpu-metrics"&gt;AKS ora espone le metriche GPU nativamente&lt;/a&gt; in Prometheus e Grafana gestiti. Stesso stack, stesse dashboard, stessa pipeline di alerting. Nessun exporter custom, nessun agent di terze parti.&lt;/p&gt;
&lt;p&gt;Sul lato rete, hanno aggiunto visibilità per flusso per traffico HTTP, gRPC e Kafka con un&amp;rsquo;&lt;a href="https://learn.microsoft.com/en-us/azure/aks/container-network-observability-logs"&gt;esperienza Azure Monitor one-click&lt;/a&gt;. IP, porte, workload, direzione del flusso, decisioni di policy — tutto in dashboard integrate.&lt;/p&gt;
&lt;p&gt;E quella che mi ha fatto guardare due volte: &lt;a href="https://learn.microsoft.com/en-us/azure/aks/advanced-container-networking-services-overview"&gt;agentic container networking&lt;/a&gt; aggiunge un&amp;rsquo;interfaccia web dove puoi fare domande in linguaggio naturale sullo stato di rete del tuo cluster. &amp;ldquo;Perché il pod X non raggiunge il servizio Y?&amp;rdquo; → diagnostica read-only dalla telemetria live. Genuinamente utile alle 2 di notte.&lt;/p&gt;
&lt;h2 id="networking-cross-cluster-senza-bisogno-di-un-dottorato"&gt;Networking cross-cluster senza bisogno di un dottorato&lt;/h2&gt;
&lt;p&gt;Il multi-cluster Kubernetes storicamente è stato un&amp;rsquo;esperienza &amp;ldquo;porta la tua colla di rete&amp;rdquo;. Azure Kubernetes Fleet Manager ora offre &lt;a href="https://aka.ms/kubernetes-fleet/networking/cross-cluster"&gt;networking cross-cluster&lt;/a&gt; tramite Cilium cluster mesh gestito:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connettività unificata tra cluster AKS&lt;/li&gt;
&lt;li&gt;Registro globale dei servizi per la scoperta cross-cluster&lt;/li&gt;
&lt;li&gt;Configurazione gestita centralmente, non ripetuta per cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se esegui microservizi .NET su più regioni per resilienza o compliance, questo sostituisce molto collante custom fragile. Il Servizio A in West Europe può scoprire e chiamare il Servizio B in East US attraverso il mesh, con policy di routing e sicurezza consistenti.&lt;/p&gt;
&lt;h2 id="aggiornamenti-che-non-richiedono-coraggio"&gt;Aggiornamenti che non richiedono coraggio&lt;/h2&gt;
&lt;p&gt;Siamo onesti — gli aggiornamenti Kubernetes in produzione sono stressanti. &amp;ldquo;Aggiornare e sperare&amp;rdquo; è stata la strategia de facto per troppi team, ed è la ragione principale per cui i cluster restano indietro con le versioni.&lt;/p&gt;
&lt;p&gt;Due nuove capacità cambiano questo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Blue-green agent pool upgrade&lt;/strong&gt; creano un pool di nodi parallelo con la nuova configurazione. Valida il comportamento, sposta il traffico gradualmente e mantieni un percorso di rollback pulito. Niente più mutazioni in-place su nodi di produzione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent pool rollback&lt;/strong&gt; permette di riportare un pool di nodi alla versione Kubernetes e all&amp;rsquo;immagine nodo precedenti dopo che un aggiornamento va storto — senza ricostruire il cluster.&lt;/p&gt;
&lt;p&gt;Insieme, danno finalmente agli operatori un vero controllo sul ciclo di vita degli aggiornamenti. Per i team .NET, questo è importante perché la velocità della piattaforma controlla direttamente quanto rapidamente puoi adottare nuovi runtime, patch di sicurezza e capacità di rete.&lt;/p&gt;
&lt;h2 id="i-workload-ia-diventano-cittadini-di-prima-classe-in-kubernetes"&gt;I workload IA diventano cittadini di prima classe in Kubernetes&lt;/h2&gt;
&lt;p&gt;Il lavoro upstream open-source è altrettanto importante. Dynamic Resource Allocation (DRA) è appena andato in GA in Kubernetes 1.36, rendendo lo scheduling GPU una feature di prima classe invece di un workaround.&lt;/p&gt;
&lt;p&gt;Alcuni progetti da tenere d&amp;rsquo;occhio:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Progetto&lt;/th&gt;
&lt;th&gt;Cosa fa&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 comune per l&amp;rsquo;inferenza — deploy di modelli senza conoscere K8s, con scoperta HuggingFace e stime dei costi&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;Troubleshooting agentico per il cloud-native — ora un progetto 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;Build dichiarativi di immagini container con generazione SBOM — meno CVE nella fase di build&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La direzione è chiara: la tua API .NET, il tuo layer di orchestrazione con Semantic Kernel e i tuoi workload di inferenza dovrebbero tutti girare su un modello di piattaforma consistente. Ci stiamo arrivando.&lt;/p&gt;
&lt;h2 id="da-dove-partirei-questa-settimana"&gt;Da dove partirei questa settimana&lt;/h2&gt;
&lt;p&gt;Se stai valutando questi cambiamenti per il tuo team, ecco la mia lista onesta di priorità:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Osservabilità prima&lt;/strong&gt; — abilita le metriche GPU e i log di flusso di rete in un cluster non-prod. Guarda cosa ti sei perso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prova i blue-green upgrade&lt;/strong&gt; — testa il workflow di rollback prima del tuo prossimo aggiornamento di cluster in produzione. Costruisci fiducia nel processo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pilota il networking identity-aware&lt;/strong&gt; — scegli un percorso di servizio interno e abilita mTLS con Cilium. Misura l&amp;rsquo;overhead (spoiler: è minimo).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Valuta Fleet Manager&lt;/strong&gt; — se gestisci più di due cluster, il networking cross-cluster si ripaga da solo in riduzione di collante custom.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Piccoli esperimenti, feedback veloce. È sempre la mossa giusta.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;Gli annunci KubeCon possono essere travolgenti, ma questa tornata muove davvero l&amp;rsquo;ago per i team .NET su AKS. Migliore sicurezza di rete senza overhead di mesh, vera osservabilità GPU, aggiornamenti più sicuri e fondamenta più solide per l&amp;rsquo;infrastruttura IA.&lt;/p&gt;
&lt;p&gt;Se sei già su AKS, è un ottimo momento per rafforzare la tua baseline operativa. E se stai pianificando di spostare workload .NET su Kubernetes — la piattaforma è appena diventata significativamente più pronta per la produzione.&lt;/p&gt;</content:encoded></item></channel></rss>