KlusterKit: un insieme di strumenti open source per semplificare i deploy di Kubernetes e il lavoro in ambienti locali fisicamente isolati

Oggi con piacere annunciamo che Platform9 ha aperto il codice sorgente di Klusterkit, un insieme di tre strumenti, sotto licenza Apache v2.0 su GitHub.
I nostri clienti implementano software in data center privati, che spesso non sono connessi a Internet (per motivi di sicurezza o per altre ragioni). Queste grandi aziende vogliono sfruttare i vantaggi di Kubernetes e modernizzare le loro applicazioni, distribuendole in diversi data center, che spesso non hanno connessione con il mondo esterno. Qui entra in gioco Klusterkit, che semplifica la fornitura e la gestione dei cluster K8s in ambienti fisicamente isolati.
Klusterkit comprende tre strumenti indipendenti, che possono essere utilizzati insieme o separatamente per gestire il ciclo di vita di un cluster Kubernetes in produzione:
- , CLI per la gestione semplificata del cluster etcd.
- , CLI per l'amministrazione dei nodi, che integra kubeadm e distribuisce le dipendenze necessarie a kubeadm.
- , uno strumento per la gestione del ciclo di vita del cluster, che adotta il Cluster API della comunità Kubernetes e utilizza nodeadm e etcdadm per fornire e mantenere cluster Kubernetes ad alta disponibilità senza problemi negli ambienti locali, compresi quelli fisicamente isolati.
Insieme, questi tre strumenti svolgono le seguenti funzioni:
- Fornitura semplice e gestione di un cluster etcd ad alta disponibilità e della console di gestione Kubernetes in ambienti locali fisicamente isolati tramite Cluster API.
- Ripristino della console del cluster dopo un guasto utilizzando un backup di etcd.
- Pacchettizzazione di tutti gli artefatti necessari per la distribuzione di Kubernetes in ambienti fisicamente isolati.
Funzionalità di Klusterkit
- Supporto per più master (cluster K8s HA).
- Fornitura e gestione di cluster etcd sicuri.
- Funzionamento in ambienti fisicamente isolati.
- Supporto per aggiornamenti e rollback sequenziali.
- Flannel (vxlan) come CNI per il backend; è prevista l'integrazione di altri CNI.
- Backup e ripristino dei cluster etcd dopo la perdita di quorum.
- Protezione della console di gestione contro la mancanza di memoria e CPU.
Architettura della soluzione Klusterkit
Per garantire resilienza e facilità d'uso, Klusterkit utilizza un unico file cctl-state.yaml per memorizzare i metadati del cluster Kubernetes. Attraverso la CLI cctl è possibile gestire il ciclo di vita del cluster Kubernetes su qualsiasi macchina in cui sia presente questo file di stato. Può essere il laptop di un operatore o qualsiasi altro computer che faccia parte del cluster Kubernetes.
Cctl implementa e chiama l'interfaccia cluster-api da upstream come libreria di operazioni CRUD sui cluster. Utilizza , un fornitore cluster-api open source su 'bare metal' fornito da Platform9, che a sua volta chiama etcdadm e nodeadm per eseguire operazioni sul cluster.
Come utilizzare Klusterkit e i suoi componenti:
1 – Uno dei tre strumenti può essere facilmente installato con il comando go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Successivamente, questi file eseguibili possono essere impacchettati e copiati sulle macchine target, dove dovrebbe funzionare il cluster Kubernetes ad alta disponibilità. Colloca i file nodeadm e etcdadm nelle cartelle di versioni:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Se necessario orchestrare il cluster Kubernetes localmente, in un ambiente fisicamente isolato, le dipendenze richieste possono essere facilmente scaricate in anticipo su un computer con accesso a Internet utilizzando i comandi di download di nodeadm e etcdadm. Poi, gli elementi scaricati (ossia kubelet e unit file di kubelet per systemd, file eseguibili CNI, file kubeadm, tutte le immagini dei container, compresa Kubernetes, immagine keepalived e file systemd, immagine del container etcd e i relativi file di configurazione) possono essere facilmente copiati su host fisicamente isolati insieme a cctl, nodeadm e etcdadm. (Ulteriori dettagli sono disponibili in ).
4 – Quando tutto è al suo posto, il primo cluster Kubernetes può essere creato con un paio di comandi:
– Prima crea le credenziali per il cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~/ .ssh/id_rsa– Poi crea l'oggetto cluster. –help restituisce un elenco dei parametri supportati.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Infine, crea la prima macchina nel cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterPer ulteriori informazioni, consulta la documentazione su .
Fonte: habr.com
