Aller au contenu
Prime Telecom · Kubernetes Engine

PTKE — Prime Telecom Kubernetes Engine

Une plateforme multi-locataire en self-service pour provisionner et exploiter des clusters Kubernetes de production sur le cloud OpenStack souverain de Prime Telecom.

Année 2024–2025
Statut En prod · production

Un aperçu du produit.

Les clouds publics livrent du « Kubernetes managé » derrière un seul bouton. Prime Telecom avait besoin de la même expérience, mais sur sa propre infrastructure OpenStack — où la souveraineté, la résidence des données et l'économie des réseaux locaux comptent plus que n'importe quelle fonctionnalité marginale d'AWS ou de GCP.

PTKE est le plan de contrôle qui rend cela possible : une application Laravel + Vue qui permet aux locataires de provisionner, mettre à l'échelle, mettre à jour, sauvegarder et exploiter des clusters Kubernetes de production sur RKE2 géré par Rancher, le compute/networking/storage OpenStack et la reprise après sinistre basée sur Velero. Chaque opération de plateforme qui vivait dans une file de tickets — clusters, node pools, floating IPs, volumes block, object storage, add-ons, sauvegardes — est désormais une action en self-service via une API REST et une interface Vue 3.

Defi

Faire tourner OpenStack, c'est faire tourner Keystone, Nova, Neutron, Cinder, Swift et Octavia — chacun avec sa propre surface d'API, son modèle d'authentification et ses modes de défaillance. Y faire tourner Kubernetes, c'est empiler Rancher, RKE2, CAPI, Helm, des fichiers kubeconfig et des DaemonSets. Offrir aux locataires une UI self-service propre par-dessus tout ça — sans laisser fuir la plomberie bas niveau ni casser la sûreté opérationnelle — c'est l'essentiel du travail.

Et tout doit être strictement multi-locataire. Des quotas par locataire, des projets OpenStack distincts, des pistes d'audit sur chaque action modifiante, des clés SSH diffusées uniquement sur les bons nœuds, des téléchargements de kubeconfig impossibles à abuser. Un seul cluster exposé ou une seule action inter-locataires tuerait la crédibilité de la plateforme pour tous les autres.

Approche

Laravel 12 + Inertia v2 + Vue 3 + Tailwind CSS v4 offre aux opérateurs une expérience rapide et typée sans pipeline frontend séparé. Wayfinder génère des clients typés de routes et d'actions, pour que chaque page Vue parle au backend à travers des contrats vérifiés. Fortify gère les sessions, le 2FA et la vérification d'e-mail ; Sanctum émet des tokens API pour le provider Terraform et les consommateurs d'automatisation.

Le backend est structuré en Controllers → Form Requests → Services → Jobs. Tout travail de plus de quelques secondes passe toujours par la file. Onze wrappers de services OpenStack sont placés devant Keystone, Nova, Neutron, Cinder, Swift et Octavia ; une couche de wrappers distincte parle à Rancher (v1, v3 et CAPI) pour le cycle de vie des clusters. Vingt-huit jobs en file orchestrent le provisioning, les modifications de node pools, les sauvegardes, les health checks, l'enregistrement d'usage et la diffusion des clés SSH. Horizon les supervise ; Reverb renvoie des mises à jour WebSocket vers le navigateur de l'opérateur, pour que les changements d'état se sentent immédiats.

Le multi-locataire est appliqué de bout en bout : chaque action modifiante passe par une Policy avec vérification de locataire plus une permission Spatie, les quotas sont appliqués à chaque allocation de ressources et le rate limiting fonctionne par utilisateur et par locataire. Les téléchargements de kubeconfig sont journalisés et limités. Les clés SSH privées ne touchent jamais la plateforme — un DaemonSet intra-cluster (ptke-ssh-sync) distribue seulement les clés publiques dans des Kubernetes Secrets au sein du propre cluster de chaque locataire.

L'expérience en un clic d'EKS, GKE ou AKS — mais sur une infrastructure roumaine souveraine, exploitée localement.

Principales fonctionnalités livrées.

  • Cycle de vie complet en self-service des clusters RKE2 — provisioning, mise à l'échelle, mise à jour et clonage depuis des templates, avec des politiques de drain et des options de control plane HA
  • Gestion des node pools avec labels, taints, flavors, volumes supplémentaires et prise en charge du cluster-autoscaler
  • Networking OpenStack : parcours des subnets, allocation de floating IPs et visibilité des load balancers Octavia
  • Volumes block Cinder avec redimensionnement en ligne, object storage Swift avec credentials compatibles EC2 et backup/restore de cluster basé sur Velero
  • Catalogue d'add-ons curé (ingress, monitoring, logging, cert-manager, external-dns…) avec installation Helm en un clic par cluster
  • Quotas multi-locataire, RBAC Spatie, 2FA Fortify et rate limiting par utilisateur / par locataire
  • Diffusion des clés SSH publiques à chaque nœud du locataire via un DaemonSet intra-cluster — les clés privées ne touchent jamais la plateforme
  • Log d'audit Spatie complet, téléchargements de kubeconfig rate-limités et un provider Terraform expérimental pour l'infrastructure-as-code

Des résultats concrets, mesurés en production.

Pages Vue
214
Écrans opérateur pour chaque primitive OpenStack et Rancher
Contrôleurs
43
Couvrant clusters, networking, storage et administration
Jobs en file
28
Orchestration asynchrone du provisioning, de la mise à l'échelle, des backups et des health checks
Services OpenStack
11
Wrappers pour Keystone, Nova, Neutron, Cinder, Swift, Octavia et plus

PTKE est en production, livrant du Kubernetes managé sur une infrastructure roumaine souveraine. Des opérations qui nécessitaient autrefois un ingénieur de plateforme dans une file de tickets — provisioning de clusters, mises à jour, attach/détach de volumes, installation d'add-ons, backup/restore — sont désormais des actions en self-service en deux clics, avec des pistes d'audit complètes et une API REST typée. Un provider Terraform bêta étend le même contrat aux workflows infrastructure-as-code.

Technologies utilisées, regroupées par rôle.

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