Pour commencer, Reg Derad de Canonical nous a présenté la distribution Kubernetes proposée par Canonical. Celle-ci est installable sur différents supports (Azure, Vmware, AWS, Joyent, Rackspace, OpenStack, lxd mais aussi le baremetal) et propose un certain nombre d'outils par défaut : ELK/Prometheus/Datadog.
Pour la partie réseau, le choix est laissé entre Flannel (par défaut), Weave et Calico. Le stockage se fait avec la librairie du moment, Ceph. Pour le déploiement, Canonical propose un large choix de logiciels. Le choix de ces logiciels se fait à l'aide de l'outil Juju en mode SAAS, qui propose un écosystème assez fourni. Cet outil permet donc de définir les briques qui seront installées lors du déploiement du cluster Kubernetes. Il peut aussi être installé et utilisé en local. Cela permet aussi d'obtenir les versions upstreams des logiciels, avec les derniers patchs kernel.
Pour terminer cette présentation, Reg nous a fait une démonstration d'un déploiement d'un cluster Kubernetes via Juju, permettant d'obtenir simplement une architecture fonctionnelle en une vingtaine de minutes.
Le second et dernier talk, présenté par Cédric Hauber de Wescale, concerne le déploiement de clusters Kubernetes sur différents cloud providers.
Après un rapide historique sur le déploiement des applications, du baremetal en passant par les containers, pour finir par la clusterisation, Cédric en est arrivé au problème principal de la clusterisation par Kubernetes. En effet, la mise en place de tels systèmes se révèle complexe de par l'ensemble des éléments à mettre en place. Pour ce faire, plusieurs solutions existent : GCE, Kubeadm, Kargo, Canonical Kubernetes Distribution, Tectonic et enfin Pidalio, sujet de ce talk.
Pidalio est développé en Go, avec quelques scripts shell dans cette première version. Il permet l'écriture d'un fichier de description unique du cluster Kubernetes, déployable sur plusieurs cloud providers différents. Le cluster tournera sur Container Linux OS, avec l'installation d'un cluster Ceph, de Prometheus et de Grafana par défaut. Il se base sur Weave pour la composante réseau, Fleet pour le dispatch des différents composants du cluster, d'un noeud etcd comportant les données de configuration et Pidalio en lui même pour fournir aux différents noeuds ce dont ils ont besoin via une communication chiffrée à l'aide d'un token.
Rien n'étant plus clair qu'une démo, Cédric a donc créé un cluster sur une architecture OpenStack, déployé en environ 5 minutes. Dans cette démo, nous avons aussi pu voir le dashboard Grafana pré-installé, dédié au cluster Ceph. Après l'installation d'une application, Cédric a ajouté un second cluster dans un autre réseau OpenStack (permettant de simuler le multi-provider). Dès lors, nous pouvons constater que ces deux clusters n'en forment qu'un. La destruction du cluster comportant le noeud etcd implique une coupure de 2 minutes dans la gestion du cluster Kubernetes, le temps qu'un nouvel etcd prenne la main. Le service déployé, par les mécanismes de Kubernetes, est toujours disponible.
Pour finir, une évolution vers l'utilisation de Terraform pour la description du cluster est en cours de développement.
Si suite à cet article, votre intérêt concernant Kubernetes est grandissant, inscrivez-vous au groupe meetup afin de pouvoir participer aux prochains meetups et ainsi en apprendre encore plus sur les possibilités proposées par Kubernetes.
Merci aux organisateurs et aux équipes de Dailymotion qui nous ont accueilli et à bientôt dans un prochain meetup.