Sari la continut
Prime Telecom · Kubernetes Engine

PTKE — Prime Telecom Kubernetes Engine

O platformă multi-tenant self-service pentru provisionarea și operarea clusterelor Kubernetes de producție pe cloud-ul OpenStack suveran al Prime Telecom.

An 2024–2025
Status Live · producție

O privire asupra produsului.

Cloud-urile publice livrează „Kubernetes managed" în spatele unui singur buton. Prime Telecom avea nevoie de aceeași experiență, dar pe propria infrastructură OpenStack — unde suveranitatea, rezidența datelor și economia rețelei locale contează mai mult decât orice funcționalitate marginală din AWS sau GCP.

PTKE este planul de control care face asta posibil: o aplicație Laravel + Vue care permite chiriașilor să provisioneze, să scaleze, să facă upgrade, backup și să opereze clustere Kubernetes de producție peste RKE2 gestionat de Rancher, compute/networking/storage OpenStack și disaster recovery bazat pe Velero. Fiecare operațiune de platformă care trăia într-o coadă de ticket-uri — clustere, node pool-uri, floating IP-uri, volume block, object storage, add-on-uri, backup-uri — este acum o acțiune self-service printr-un API REST și o interfață Vue 3.

Provocare

A rula OpenStack înseamnă a rula Keystone, Nova, Neutron, Cinder, Swift și Octavia — fiecare cu propriul API, model de autentificare și moduri de eșec. A rula Kubernetes deasupra înseamnă a stratifica Rancher, RKE2, CAPI, Helm, fișiere kubeconfig și DaemonSet-uri. A oferi chiriașilor un UI self-service curat peste toate acestea — fără să scurgi instalația de bază și fără să strici siguranța operațională — este cea mai mare parte a muncii.

Și totul trebuie să fie strict multi-tenant. Cote per chiriaș, proiecte OpenStack separate, audit trail pe fiecare acțiune de modificare, chei SSH distribuite doar pe nodurile potrivite, descărcări kubeconfig care nu pot fi abuzate. Un singur cluster scurs sau o singură acțiune între chiriași ar ucide credibilitatea platformei pentru toți ceilalți.

Abordare

Laravel 12 + Inertia v2 + Vue 3 + Tailwind CSS v4 oferă operatorilor o experiență rapidă și tipizată fără un pipeline separat de build pe frontend. Wayfinder generează clienți tipizați de rute și acțiuni, astfel încât fiecare pagină Vue vorbește cu backend-ul prin contracte verificate. Fortify gestionează sesiunile, 2FA și verificarea emailului; Sanctum emite token-uri API pentru provider-ul Terraform și pentru consumatorii de automatizare.

Backend-ul este structurat ca Controllers → Form Requests → Services → Jobs. Munca de mai mult de câteva secunde merge întotdeauna prin coadă. Unsprezece wrapper-e de servicii OpenStack stau în fața Keystone, Nova, Neutron, Cinder, Swift și Octavia; un strat separat de wrapper vorbește cu Rancher (v1, v3 și CAPI) pentru ciclul de viață al clusterului. Douăzeci și opt de job-uri în coadă orchestrează provisionarea, modificările de node pool, backup-urile, verificările de sănătate, înregistrarea utilizării și distribuția cheilor SSH. Horizon le supraveghează; Reverb trimite actualizări prin WebSocket înapoi în browser-ul operatorului, astfel încât schimbările de stare se simt imediat.

Multi-tenancy-ul este impus end-to-end: fiecare acțiune de modificare trece printr-un Policy cu verificare de chiriaș plus o permisiune Spatie, cote sunt aplicate pe fiecare alocare de resurse, iar limitarea ratei rulează per utilizator și per chiriaș. Descărcările de kubeconfig sunt auditate și limitate. Cheile private SSH nu ating niciodată platforma — un DaemonSet din cluster (ptke-ssh-sync) distribuie doar chei publice în Kubernetes Secrets, în cadrul propriului cluster al fiecărui chiriaș.

Experiența de tip „un click" a EKS, GKE sau AKS — dar pe infrastructură românească suverană, operată local.

Capabilitati cheie livrate.

  • Ciclu de viață complet self-service pentru clustere RKE2 — provisionare, scalare, upgrade și clonare din template-uri, cu politici de drain și opțiuni de control plane HA
  • Gestionarea node pool-urilor cu label-uri, taint-uri, flavor-uri, volume suplimentare și suport pentru cluster-autoscaler
  • Networking OpenStack: răsfoirea subnet-urilor, alocarea de floating IP-uri și vizibilitate asupra load balancer-elor Octavia
  • Volume block Cinder cu redimensionare online, object storage Swift cu credențiale compatibile EC2 și backup/restore de cluster bazat pe Velero
  • Catalog curat de add-on-uri (ingress, monitoring, logging, cert-manager, external-dns…) cu instalare Helm cu un click per cluster
  • Cote multi-tenant, RBAC Spatie, 2FA Fortify și limitare a ratei per utilizator / per chiriaș
  • Distribuția cheilor publice SSH către fiecare nod al chiriașului printr-un DaemonSet din cluster — cheile private nu ating niciodată platforma
  • Log de audit Spatie complet, descărcări kubeconfig cu rate limiting și un provider Terraform experimental pentru infrastructure-as-code

Rezultate reale, masurate in productie.

Pagini Vue
214
Ecrane de operator pentru fiecare primitivă OpenStack și Rancher
Controlere
43
Acoperind clustere, networking, storage și administrare
Joburi în coadă
28
Orchestrare asincronă a provisionării, scalării, backup-urilor, verificărilor de sănătate
Servicii OpenStack
11
Wrapper-e pentru Keystone, Nova, Neutron, Cinder, Swift, Octavia și altele

PTKE este în producție, livrând Kubernetes gestionat pe infrastructură românească suverană. Operațiuni care necesitau anterior un inginer de platformă într-o coadă de ticket-uri — provisionarea clusterelor, upgrade-urile, atașarea/detașarea de volume, instalarea de add-on-uri, backup/restore — sunt acum acțiuni self-service la două click-uri, cu trasee de audit complete și un API REST tipizat. Un provider Terraform beta extinde același contract către fluxurile infrastructure-as-code.

Tehnologii folosite, grupate dupa rol.

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
Infrastructura
OpenStack (Keystone, Nova, Neutron, Cinder, Swift, Octavia) Rancher RKE2 CAPI Helm Velero
Ops si IaC
Terraform Provider Forgejo Actions Pest v4 Playwright Laravel Pint ESLint