KlusterKit : un ensemble d'outils open source pour simplifier le déploiement de Kubernetes et le fonctionnement dans des environnements locaux physiquement isolés

Aujourd'hui, nous sommes heureux d'annoncer que Platform9 ouvre le code source de Klusterkit, un ensemble de trois outils, sous la licence Apache v2.0 sur GitHub.
Nos clients déploient des logiciels dans des centres de données privés qui sont souvent non connectés à Internet (pour des raisons de sécurité ou d'autres raisons). Ces grandes entreprises souhaitent tirer parti de Kubernetes et moderniser leurs applications tout en les déployant dans différents centres de données, qui n'ont souvent pas de connexion au monde extérieur. C'est là que Klusterkit intervient, simplifiant le déploiement et la gestion des clusters K8s dans des environnements physiquement isolés.
Klusterkit comprend trois outils indĂ©pendants qui peuvent ĂȘtre utilisĂ©s ensemble ou sĂ©parĂ©ment pour gĂ©rer le cycle de vie d'un cluster Kubernetes en production :
- , un CLI pour la gestion simplifiée du cluster etcd.
- , un CLI pour l'administration des nĆuds, qui complĂšte kubeadm et dĂ©ploie les dĂ©pendances nĂ©cessaires Ă kubeadm.
- , un outil de gestion du cycle de vie du cluster, qui utilise l'API Cluster de la communauté Kubernetes et combine nodeadm et etcdadm pour déployer et maintenir sans souci des clusters Kubernetes hautement disponibles dans des environnements locaux et physiquement isolés.
Ensemble, ces trois outils accomplissent les tĂąches suivantes :
- Déploiement et gestion simples d'un cluster etcd hautement disponible et de l'interface de gestion Kubernetes dans des environnements locaux physiquement isolés via l'API Cluster.
- Récupération de l'interface de gestion du cluster aprÚs une panne en utilisant une sauvegarde etcd.
- Conditionnement de tous les artefacts nécessaires au déploiement de Kubernetes dans des environnements physiquement isolés.
Fonctionnalités de Klusterkit
- Support de plusieurs maĂźtres (cluster K8s HA).
- Déploiement et gestion de clusters etcd sécurisés.
- Fonctionnement dans des environnements physiquement isolés.
- Support pour les mises à jour et les retours en arriÚre séquentiels.
- Flannel (vxlan) comme CNI pour le backend ; soutien prévu pour d'autres CNI.
- Sauvegarde et récupération des clusters etcd aprÚs une perte de quorum.
- Protection de lâinterface de gestion contre le manque de mĂ©moire et les temps de CPU Ă©levĂ©s.
Architecture de la solution Klusterkit
Pour assurer la résilience et la simplicité, Klusterkit utilise un seul fichier cctl-state.yaml pour stocker les métadonnées du cluster Kubernetes. Via le CLI cctl, on peut gérer le cycle de vie du cluster Kubernetes sur toute machine disposant de ce fichier d'état. Il peut s'agir d'un ordinateur portable d'opérateur ou de tout autre ordinateur faisant partie du cluster Kubernetes.
Cctl implémente et appelle depuis upstream l'interface cluster-api comme une bibliothÚque d'opérations CRUD sur des clusters. Il utilise , un fournisseur cluster-api open source sur du « matériel nu » de Platform9, qui à son tour appelle etcdadm et nodeadm pour exécuter des opérations sur le cluster.
Comment utiliser Klusterkit et ses composants :
1 â Chacun des trois outils peut ĂȘtre facilement rĂ©cupĂ©rĂ© avec la commande go get :
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 â Ensuite, ces exĂ©cutables peuvent ĂȘtre emballĂ©s et copiĂ©s sur les machines cibles, oĂč le cluster Kubernetes Ă haute disponibilitĂ© doit fonctionner. Placez les fichiers nodeadm et etcdadm dans les rĂ©pertoires de versions :
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 â Si vous devez orchestrer le cluster Kubernetes localement, dans un environnement physiquement isolĂ©, les dĂ©pendances nĂ©cessaires peuvent facilement ĂȘtre tĂ©lĂ©chargĂ©es Ă l'avance sur un ordinateur avec connexion Internet Ă l'aide de la commande de rĂ©cupĂ©ration de nodeadm et etcdadm. Les Ă©lĂ©ments tĂ©lĂ©chargĂ©s (c'est-Ă -dire kubelet et le fichier d'unitĂ© kubelet pour systemd, les exĂ©cutables CNI, le fichier kubeadm, toutes les images de conteneurs, y compris Kubernetes, l'image keepalived et le fichier systemd, l'image de conteneur etcd et les fichiers de configuration associĂ©s) peuvent ĂȘtre facilement copiĂ©s sur des hĂŽtes physiquement isolĂ©s avec cctl, nodeadm et etcdadm. (Pour plus de dĂ©tails, voir ).
4 â Lorsque tout est en place, vous pouvez crĂ©er le premier cluster Kubernetes avec quelques commandes :
â Tout d'abord, crĂ©ez les identifiants pour le cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~/ .ssh/id_rsaâ Ensuite, crĂ©ez un objet cluster. âhelp appelle la liste des paramĂštres pris en charge.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24â Enfin, crĂ©ez la premiĂšre machine dans le cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterPour plus de documentation, consultez .
Source : habr.com
