Typhoon & RKE : de nouveaux outils pour installer un cluster Kubernetes
Sommaire
Typhoon
Typhoon est une solution qui est inspirée très fortement de Tectonic. Elle propose d’utiliser un seul et unique outil, Terraform, pour déployer un cluster Kubernetes sur différents cloud providers (AWS / GCP / Digital Ocean) ainsi que sur des serveurs physiques.
Prérequis
Pour faire fonctionner Typhoon sur AWS ou sur un autre cloud provider, il faut répondre à quelque prérequis :
- Terraform =< v0.10.x
- Terraform-provider-ct
- Disposer d’un compte AWS et des secrets API (à définir en variable d’environnement)
- AWS Route 53
- SSH-Agent
- kubectl
L’ensemble des composants de Kubernetes fonctionne dans des conteneurs Docker.
Création du premier cluster
On crée un dossier main.tf qui contiendra le code suivant :
Vous devez au minimum modifier les lignes suivantes :
- dns_zone (nom de domaine à déclarer sur Route 53)
- dns_zone_id (ID de la zone à déclarer sur Route 53)
- ssh_authorized_key (Clé SSH publique à configurer sur vos serveurs)
- asset_dir (Dossier de création des fichiers ainsi que du fichier de configuration pour kubectl)
Ajouter la clé privée qui correspond à votre clé publique dans votre SSH-Agent.
Maintenant, nous allons lancer la création du cluster Kubernetes :
terraform init
terraform get --update
terraform plan
terraform apply
Une fois votre cluster déployé, pour y accéder en créant une variable locale nommée KUBECONFIG qui sera récupérée par kubectl.
export KUBECONFIG=/home/user/.secrets/clusters/tempest/auth/kubeconfig
kubectl get nodes
Vous devez modifier le répertoire où se trouve le fichier kubeconfig avec les valeurs que vous avez rentrées dans la partie Terraform.
Conclusion
Points positifs
- Installation rapide
- Prise en main simple
Points négatifs
- Pas de choix de la version de Kubernetes qu’on veut déployer
- Pas de système d’update / upgrade de Kubernetes
- Utilisation de CoreOS forcée
RKE
Prérequis
RKE est une solution créée par les équipes de Rancher qui est totalement agnostique de l’emplacement où vous souhaitez déployer votre cluster Kubernetes. Ainsi, vous devez lui fournir un ensemble de machines, où vous allez définir le rôle de chaque machine (etcd, controlplane, worker).
RKE étant développé en Go, vous devez télécharger le binaire ici et l’installer sur votre poste / serveur.
Chaque machine que vous avez créée doit avoir un système Docker local opérationnel.
L’ensemble des composants de Kubernetes fonctionne dans des conteneurs Docker.
Création du premier cluster
Pour créer notre premier cluster, nous allons avoir besoin de créer un fichier yaml pour lui donner l’ensemble des informations nécessaires à son fonctionnement, le fichier se nommera config.yaml.
Vous avez certainement remarqué que RKE propose d’utiliser sa propre image pour Kubernetes rancher/k8s:v1.8.5-rancher3
, cependant, vous pouvez utiliser sans aucun problème les images officielles de Kubernetes.
/!\ Rancher ne met pas à disposition les sources de leur image rancher/k8s, il est donc difficile de savoir quelles sont les différences avec une image officielle.
Nous allons maintenant lancer la création de notre cluster Kubernetes.
rke up --config config.yaml
Vous avez maintenant un cluster Kubernetes totalement opérationnel et fonctionnel.
Pour avoir accès au cluster, vous pouvez créer une variable locale nommée KUBECONFIG, qui sera récupérée par kubectl.
export KUBECONFIG=$(pwd)/.kube_config_online.yml
kubectl get nodes
Conclusion
Points positifs
- La solution est totalement agnostique de l’environnement
- Déploiement très simple
- Configuration via un fichier yaml
- Gestion de l’update / upgrade du cluster
- HA natif
Points négatifs
- Solution encore jeune
- Manque de documentation (arrivera certainement avec la v1)
- Pas encore de version release (encore en 0.0.9-dev)
Matrice de choix
Les deux solutions que sont Typhoon et RKE proposent des approches différentes de l’installation d’un cluster Kubernetes.
Mais elles ont des points communs :
- Installation simple
- Pas de long fichier de configuration à écrire
Cependant, les solutions ne sont pas encore parfaites.
De mon côté, j'ai une petite préférence pour la solution de Rancher, celle-ci me permet d'avoir plus facilement la main sur l'infrastructure que je souhaite déployer et maintenir.
Et vous, quelle solution préférez-vous ?