Vai al contenuto
Prime Telecom · Kubernetes Engine

PTKE — Prime Telecom Kubernetes Engine

Una piattaforma multi-tenant self-service per provisioning e operatività di cluster Kubernetes di produzione sulla cloud OpenStack sovrana di Prime Telecom.

Anno 2024–2025
Stato Live · produzione

Uno sguardo al prodotto.

Le public cloud consegnano «Kubernetes gestito» dietro un singolo pulsante. Prime Telecom aveva bisogno della stessa esperienza, ma sulla propria infrastruttura OpenStack — dove sovranità, residenza dei dati ed economia di rete locale contano più di qualsiasi funzionalità marginale su AWS o GCP.

PTKE è il piano di controllo che lo rende possibile: un'applicazione Laravel + Vue che permette ai tenant di provisionare, scalare, aggiornare, effettuare backup e gestire cluster Kubernetes di produzione su RKE2 gestito da Rancher, compute/networking/storage OpenStack e disaster recovery basato su Velero. Ogni operazione di piattaforma che prima viveva in una coda di ticket — cluster, node pool, floating IP, volumi block, object storage, add-on, backup — è ora un'azione self-service su un'API REST e un'interfaccia Vue 3.

Sfida

Far girare OpenStack significa far girare Keystone, Nova, Neutron, Cinder, Swift e Octavia — ognuno con la propria superficie API, modello di autenticazione e modalità di fallimento. Farci girare sopra Kubernetes significa stratificare Rancher, RKE2, CAPI, Helm, file kubeconfig e DaemonSet. Offrire ai tenant una UI self-service pulita su tutto questo — senza lasciar trasparire la plumbing di basso livello né rompere la sicurezza operativa — è la parte più grande del lavoro.

E tutto deve essere rigorosamente multi-tenant. Quota per tenant, progetti OpenStack separati, audit trail su ogni azione mutante, chiavi SSH distribuite solo sui nodi giusti, download kubeconfig non abusabili. Un singolo cluster esposto o una singola azione cross-tenant ucciderebbe la credibilità della piattaforma per tutti gli altri.

Approccio

Laravel 12 + Inertia v2 + Vue 3 + Tailwind CSS v4 offre agli operatori un'esperienza veloce e tipizzata senza una pipeline di build frontend separata. Wayfinder genera client tipizzati di rotte e action, quindi ogni pagina Vue parla con il backend attraverso contratti verificati. Fortify gestisce sessioni, 2FA e verifica email; Sanctum emette token API per il provider Terraform e i consumatori di automazione.

Il backend è strutturato come Controllers → Form Requests → Services → Jobs. Il lavoro che richiede più di qualche secondo passa sempre dalla coda. Undici wrapper di servizi OpenStack si trovano davanti a Keystone, Nova, Neutron, Cinder, Swift e Octavia; un livello di wrapper separato parla con Rancher (v1, v3 e CAPI) per il ciclo di vita del cluster. Ventotto job in coda orchestrano provisioning, modifiche dei node pool, backup, health check, registrazione dell'utilizzo e distribuzione delle chiavi SSH. Horizon li supervisiona; Reverb trasmette aggiornamenti WebSocket di ritorno al browser dell'operatore, in modo che i cambiamenti di stato sembrino immediati.

La multi-tenancy è applicata end-to-end: ogni azione mutante passa attraverso una Policy con controllo del tenant più un permesso Spatie, le quote sono applicate a ogni allocazione di risorse e il rate limiting funziona per utente e per tenant. I download di kubeconfig sono registrati nell'audit log e throttlati. Le chiavi SSH private non toccano mai la piattaforma — un DaemonSet interno al cluster (ptke-ssh-sync) distribuisce solo chiavi pubbliche in Kubernetes Secrets all'interno del cluster del tenant stesso.

L'esperienza a un clic di EKS, GKE o AKS — ma su infrastruttura rumena sovrana, operata localmente.

Capacità chiave rilasciate.

  • Ciclo di vita completo self-service dei cluster RKE2 — provisioning, scaling, upgrade e clonazione da template, con policy di drain e opzioni di control plane HA
  • Gestione dei node pool con label, taint, flavor, volumi extra e supporto del cluster-autoscaler
  • Networking OpenStack: esplorazione delle subnet, allocazione di floating IP e visibilità dei load balancer Octavia
  • Volumi block Cinder con ridimensionamento online, object storage Swift con credenziali compatibili EC2 e backup/restore del cluster basato su Velero
  • Catalogo curato di add-on (ingress, monitoring, logging, cert-manager, external-dns…) con installazione Helm in un clic per cluster
  • Quote multi-tenant, RBAC Spatie, 2FA Fortify e rate limiting per utente / per tenant
  • Distribuzione delle chiavi SSH pubbliche a ogni nodo del tenant tramite un DaemonSet interno al cluster — le chiavi private non toccano mai la piattaforma
  • Audit log Spatie completo, download kubeconfig con rate limiting e un provider Terraform sperimentale per infrastructure-as-code

Risultati concreti, misurati in produzione.

Pagine Vue
214
Schermate operatore per ogni primitiva OpenStack e Rancher
Controller
43
Tra cluster, networking, storage e amministrazione
Job in coda
28
Orchestrazione asincrona di provisioning, scaling, backup e health check
Servizi OpenStack
11
Wrapper per Keystone, Nova, Neutron, Cinder, Swift, Octavia e altri

PTKE è in produzione, consegnando Kubernetes gestito su infrastruttura rumena sovrana. Operazioni che prima richiedevano un platform engineer in coda di ticket — provisioning dei cluster, aggiornamenti, attach/detach di volumi, installazione di add-on, backup/restore — sono ora azioni self-service a due clic con audit trail completi e un'API REST tipizzata. Un provider Terraform beta estende lo stesso contratto ai flussi infrastructure-as-code.

Tecnologie utilizzate, raggruppate per ruolo.

Backend
Laravel 12 PHP 8.3+ PostgreSQL Redis Horizon Reverb Fortify Sanctum Spatie Permission
Frontend
Vue 3 Inertia.js v2 TypeScript Tailwind CSS 4 Wayfinder
Infrastruttura
OpenStack (Keystone, Nova, Neutron, Cinder, Swift, Octavia) Rancher RKE2 CAPI Helm Velero
Ops e IaC
Terraform Provider Forgejo Actions Pest v4 Playwright Laravel Pint ESLint