OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent

Il progetto

Miglioramenti

Oltre l'isofunzionalità: strumenti, sicurezza e facilità d'uso.

Go: il linguaggio Cloud Native

Il linguaggio Cloud Native

Kubernetes, etcd, containerd, Helm, Prometheus, KubeVirt: lo stesso linguaggio della piattaforma

Ecosistema integrato

client-go, SDK Helm, OVSDB, Prometheus, OIDC: librerie native, nessun bridge

Tipizzato e compilato

Tipizzazione forte, errori rilevati in compilazione, codice più veloce di Python

Build rapide

Un binario statico per servizio, compilazione rapida, multiarchitettura

Container minimali

Un eseguibile, rootless, senza shell né sorgenti, su distroless anziché Ubuntu

Leggero in esecuzione

Nessun interprete e nessun eventlet (tempo di avvio e memoria non misurati nel workspace)

Strumenti: automatizzare, distribuire, pilotare

Tre strumenti che OpenStack non offre in questa forma, scritti in Go come i servizi e forniti con ogni versione di OpenKeel.

ok

La CLI di OpenStack, in Go

ok è il comando openstack riscritto in Go: un unico binario statico, senza Python, virtualenv né plugin da installare.

  • Tutti i 1.325 comandi di python-openstackclient 10.3.1 e dei suoi plugin, ognuno verificato rispetto alla CLI Python con replay differenziale
  • Stessi argomenti, formati di output, messaggi di errore e codici di uscita: gli script esistenti continuano a funzionare
  • Legge clouds.yaml, OS_* e --os-* come l'originale; binari per Linux, macOS e Windows, e un'immagine distroless
export OS_CLOUD=openkeel
ok server list -f json
Per saperne di più
okadm

Deployment plug and play, in lab o in produzione

okadm installa OpenKeel su un cluster Kubernetes con un comando per ogni fase del ciclo di vita, in modalità lab o produzione.

  • Lab: senza cluster, crea un cluster kind, installa gli operatori di lab e una replica di ogni servizio; --ingress aggiunge il punto di accesso pubblico
  • Produzione: okadm plan verifica i prerequisiti (versione, ruoli dei nodi, operatori, StorageClass, dominio) e indica la correzione per ciascuno; tre repliche
  • Installazione idempotente che riprende da dove si era fermata, aggiornamento componente per componente, stato, disinstallazione; client-go e l'SDK di Helm integrati
okadm plan --mode production
okadm install --mode lab \
  --create-kind --ingress --demo
Per saperne di più
Configurator

Pilotare il deployment graficamente

Il Configurator è una console web, installata di default da okadm, per preparare il deployment dei moduli OpenKeel e seguirlo visivamente.

  • Ruoli dei nodi (control plane, calcolo, rete, storage, container, provisioning) e posizionamento di ogni componente, con trascinamento in una vista topologica per zona di disponibilità
  • Parametri di ogni servizio: abilitato, repliche, autoscaling, risorse, YAML libero; controlli di quorum, anti-affinità e minimi per ruolo
  • Monitoraggio visivo: la distribuzione dei componenti sui nodi, lo stato dei pod (pronti, riavvii) e i log di ogni servizio, uniti e ricercabili
  • Produce i valori di okadm install -f e le etichette dei nodi, oppure etichetta i nodi da sé
Guarda il tour

Meno codice, le stesse garanzie

  • 1,008 kRighe Python negli 19 moduli originali
  • 310 kRighe Go nei moduli OpenKeel
  • −69%codice, test esclusi
ModuloPythonGoModifica
Placement10,28710,2560%
Nova150,84620,534−86%
Zun30,93813,947−55%
Masakari10,8359,347−14%
Cinder255,93417,400−93%
Glance31,27914,372−54%
Manila135,16218,285−86%
Neutron127,62325,947−80%
Octavia (OVN)5,7789,042+56%
Neutron-FWaaS8,0859,643+19%
Neutron-VPNaaS6,44911,190+74%
OVN-BGP-Agent8,4485,074−40%
Keystone50,58421,015−58%
Barbican18,68812,851−31%
Designate23,67115,367−35%
CloudKitty15,02012,042−20%
API EC211,57016,272+41%
Skyline18,7238,590−54%
ok (CLI)88,12259,156−33%
Total1,008,042310,330−69%

Righe non vuote e non di commento, test esclusi, contate alla generazione del sito. Sul lato Python viene contato solo il pacchetto del servizio: oslo, neutron-lib, keystonemiddleware e os-brick no, mentre i loro equivalenti risiedono in ciascun modulo Go. I driver e gli agenti sostituiti da Kubernetes scompaiono; i piccoli moduli un tempo innestati su Neutron o Nova crescono, perché diventano servizi autonomi.

Configurazione: da oslo.config a YAML

OpenStack (Python)OpenKeel (Go)
FileINI oslo.config, più api-paste.ini, rootwrap.conf e i suoi filtri, logging.conf, policyUn config.yaml per processo, montato da una ConfigMap
SecretPassword all'interno di connection e transport_urlCampi *_file letti da Secret montati, mai nello YAML
Processobind_host, workers, log_file, use_syslog, debugGestito da Kubernetes; un unico default.log_level
DriverOpzioni di tutti i driver inclusi (libvirt, VMware, storage array, ML2…)Solo le opzioni dei componenti scelti (KubeVirt, CSI, OVN)
ValidazioneUn controllo separato con lo strumento oslo-config-validatorDecodifica rigorosa: con una chiave sconosciuta o un valore fuori intervallo, il processo rifiuta di avviarsi
ModificaModificare i file su ogni host, riavviareNuovo hash della ConfigMap, riavvio progressivo; livello di log tramite SIGHUP

Stessi nomi: gruppi, opzioni e valori predefiniti dell'originale; OPENKEEL_<GROUP>_<OPTION> sovrascrive un valore per un singolo pod.

Meno opzioni: tenere solo ciò che conta

ModuloMantenuteRimosse
Placement7101
Nova1221,015
Zun63300
Masakari35235
Cinder491,411
Glance66472
Manila82905
Neutron82443
Keystone100313
Barbican72200
Designate84300
CloudKitty50271
API EC216151
  • 828opzioni mantenute su 6,945, in 13 moduli
  • 88%delle opzioni oslo rimosse

Dati letti dal file config/dropped-options.md di ogni modulo; ogni opzione rimossa vi è elencata con la relativa motivazione. Rimosse: opzioni deprecate, driver non inclusi, eventlet e lock su file, opzioni di processo gestite da Kubernetes. Mantenute: tutto ciò che modifica l'API, i dati o i limiti (quote, allocation ratio, durata dei token, enforce_scope).

Sicurezza e facilità d'uso

Skyline-OIDC

Accesso alla console tramite un identity provider OIDC: federazione, SSO, token validati con JWKS.

Secret interni a rotazione

Password dei database, account RabbitMQ e chiavi di servizio gestiti come componenti a rotazione, rinnovabili senza interventi manuali.

Credenziali EC2 in Skyline

Creare e gestire le credenziali EC2 (access / secret) dalla console, per accedere allo storage S3.