Non esiste alcun Kubernetes 2.0 ufficiale che elimina YAML, ma il dibattito è più che mai attuale. Con il 79% dei problemi di produzione di Kubernetes tracciabili a errori di configurazione YAML, la community sta attivamente esplorando alternative più robuste. La vera domanda non è se buttare via YAML, ma come evolverlo intelligentemente.
Negli ultimi mesi, diversi articoli online hanno fatto circolare l’idea di un “Kubernetes 2.0” che eliminerebbe completamente YAML in favore di SDK Python/TypeScript, con funzionalità AI-native e “Nanopods” al posto dei sidecar. Alcuni di questi contenuti presentano anche screenshot e esempi di codice, alimentando speculazioni nella community DevOps.
La realtà è però diversa: dopo ricerche approfondite tra documentazione ufficiale, roadmap CNCF e annunci del progetto Kubernetes, non esiste alcuna conferma ufficiale di un “Kubernetes 2.0” che elimina YAML. La CNCF continua a investire nel progetto attuale, con AWS che ha rinnovato il supporto con 3 milioni di dollari in cloud credits per il 2026 e focus su evoluzione graduale piuttosto che rivoluzioni.
I problemi con YAML non sono teorici. Le configurazioni basate su YAML possono essere error-prone, portando a problemi come limiti di risorse incorretti, selettori di servizio impropri o permessi insufficienti che disturbano le operazioni.
Mentre è vero che le configurazioni errate a volte risultano in violazioni di sicurezza o perdite di dati sensibili, è altrettanto comune che causino problemi di stabilità della produzione, come interruzioni e degradazioni delle performance.
Esempi reali di problemi YAML:
NO
, yes
, 1.0
vengono interpretati in modi inaspettati:
mancante o nginxx
invece di nginx
possono far saltare un cluster interoKubernetes è nato come “la soluzione di orchestrazione container de-facto”, ma per essere una soluzione che funziona per TUTTI ha dovuto supportare praticamente qualsiasi configurazione; causando uno spostamento monumentale nella complessità complessiva.
Le aziende riportano incidenti reali causati da errori YAML:
Contrariamente ai rumors su un fantomatico “Kubernetes 2.0”, esistono già oggi diverse soluzioni mature per ridurre la dipendenza da YAML:
CDK8s (Cloud Development Kit for Kubernetes) CDK8s è un progetto open source CNCF che aiuta a rappresentare risorse e applicazioni Kubernetes come codice (non YAML!). Supporta Python, TypeScript, Java e Go.
# Esempio CDK8s
from cdk8s import App, Chart
from cdk8s_plus_27 import Deployment
class MyApp(Chart):
def __init__(self, scope, id):
super().__init__(scope, id)
Deployment(self, "nginx",
image="nginx:1.20",
replicas=3,
port=80
)
app = App()
MyApp(app, "my-app")
app.synth()
Pulumi Pulumi sta guadagnando rapida trazione come strumento di infrastruttura moderno che ti permette di usare linguaggi general-purpose come TypeScript, Python, Go e C# per provision infrastructure.
// Esempio Pulumi per Kubernetes
import * as k8s from "@pulumi/kubernetes";
const deployment = new k8s.apps.v1.Deployment("nginx", {
spec: {
replicas: 3,
selector: { matchLabels: { app: "nginx" } },
template: {
metadata: { labels: { app: "nginx" } },
spec: {
containers: [{
name: "nginx",
image: "nginx:1.20",
ports: [{ containerPort: 80 }]
}]
}
}
}
});
La community di Kubernetes ha riconosciuto questi pain points e sta proponendo una soluzione elegante: KYAML, un sottoinsieme più sicuro e meno ambiguo di YAML che mantiene piena compatibilità con i tooling esistenti eliminando molti dei pitfall più comuni di YAML.
Caratteristiche di KYAML:
# YAML tradizionale (problematico)
spec:
containers:
- name: app
image: nginx
- name: sidecar
image: busybox
# KYAML (whitespace-insensitive)
spec: {
containers: [{
name: "app",
image: "nginx",
}, {
name: "sidecar",
image: "busybox",
}],
}
HCL è già il formato per Terraform, quindi almeno dovremmo odiare un solo linguaggio di configurazione invece di due. È fortemente tipizzato con tipi espliciti. Ci sono già buoni meccanismi di validazione. È specificamente progettato per fare il lavoro che stiamo chiedendo a YAML di fare.
# Esempio HCL per Kubernetes
resource "kubernetes_deployment" "nginx" {
metadata {
name = "nginx-deployment"
labels = {
app = "nginx"
}
}
spec {
replicas = var.replicas
selector {
match_labels = {
app = "nginx"
}
}
template {
metadata {
labels = {
app = "nginx"
}
}
spec {
container {
image = "nginx:${var.nginx_version}"
name = "nginx"
port {
container_port = 80
}
resources {
limits = {
cpu = var.cpu_limit
memory = var.memory_limit
}
}
}
}
}
}
}
Invece di speculare su un “Kubernetes 2.0” immaginario, guardiamo ai trend reali che stanno guidando l’evoluzione della piattaforma:
La community CNCF sta esplorando un programma di conformità centrato sui carichi di lavoro AI nello spazio Kubernetes, con l’obiettivo di finalizzare una definizione all’inizio dell’autunno per annunciarla al KubeCon+CloudNativeCon NA 2025.
Nel 2025, ci aspettiamo che l’IaC e l’ottimizzazione cloud (attualmente al 56%) crescano significativamente, così come failover e disaster recovery (attualmente 33%).
Le organizzazioni devono implementare policy di rete, proteggere le immagini container e aggiornare regolarmente Kubernetes stesso e tutti gli add-on, API e altri componenti correlati.
Tool come Chainsaw stanno semplificando il testing di integrazione delle risorse Kubernetes, permettendo agli ingegneri di testare deployment, servizi, configurazioni ingress e altro prima che i cambiamenti raggiungano la produzione.
Se dovessimo immaginare un percorso di evoluzione graduale per Kubernetes, potrebbe assomigliare a questo:
Mentre sogniamo il futuro, ecco cosa puoi fare oggi per ridurre la “YAML fatigue”:
# Usa kubeval per validare i manifest
kubeval deployment.yaml
# Conftest per policy as code
conftest verify --policy k8s-security.rego deployment.yaml
# Kustomize per composizione DRY
kustomize build overlays/production/
# Chainsaw per integration testing
chainsaw test --test-dir ./tests/
# Dry-run sempre prima del deploy
kubectl apply --dry-run=client -f deployment.yaml
Il messaggio finale – quello che amo del tuo paragone originale – è che non è giusto gettare via YAML perché ha qualche limite. È come buttare un’automobile perché inquina: meglio aggiornarla a elettrica.
La realtà è che Kubernetes non ha bisogno di un “2.0” rivoluzionario. Ha bisogno di evoluzione intelligente:
Dopo che Kubernetes ha compiuto 10 anni, si è saldamente stabilito come una pietra angolare del deployment cloud-native. Guardando al 2025, ci aspettiamo che Kubernetes e l’ecosistema cloud-native continuino a crescere ed evolvere.
Il futuro di Kubernetes non sarà una rivoluzione che butta tutto, ma un’evoluzione che preserva l’investimento esistente mentre apre nuove possibilità. E questo, forse, è ancora più eccitante di qualsiasi “2.0” immaginario.
Ora, permettetemi una piccola malizia da bar dello sport. Non è che tutto questo “boicottaggio” di YAML sia una macchinazione orchestrata per spingere le persone verso soluzioni che casualmente si sposano perfettamente con l’ecosistema AWS?
Pensateci un attimo: CDK per AWS, Pulumi (che funziona benissimo con i servizi cloud), tutti questi SDK che “guarda caso” rendono più semplice scrivere infrastruttura che si integra naturalmente with cloud provider specifici. Non è che AWS & co. abbiano interesse a farvi scrivere più codice invece di semplici file di configurazione? Codice che magari chiama le loro API in modo più diretto?
Intendiamoci, YAML ha i suoi problemi reali, ma non è curioso che le alternative più pubblicizzate siano tutte orientate verso linguaggi di programmazione che rendono più “naturale” chiamare servizi cloud proprietari?
Fine del complottismo da cortile. Tornate alle vostre configurazioni, non c’è niente da vedere qui. 😏
Hai domande su come iniziare la migrazione dai YAML tradizionali? Vuoi approfondire CDK8s o Pulumi per i tuoi progetti? Lascia un commento e discutiamone insieme.