Et oui , rien à voir avec Microsoft, mais j’ai décidé de faire un rapide REX sur ces solutions là, que j’utilise depuis un bout de temps pour héberger différentes applications et sites web.
Quand j’ai commencé mon activité d’indépendant il y a maintenant 13 ans, j’ai auto-hébergé, sites web et applications, sur l’OS que je connaissait bien: Windows.
Mais voila, après avoirs fait le tour de la question je me suis lassé et pleins de nouvelles solutions apparaissaient, notamment les containers Docker apparaissaient.
Et Docker, c’est a l’origine plus du Linux que du Windows. Donc je me suis mis à Linux.
Et venant de l’infra pas question de monter un Docker Standalone, mais plutôt un cluster. Je suis donc parti sur swarm, mais j’ai tres vite bifurqué sur Kubernetes, le standard implicite.
J’ai commencé avec un cluster K8S construit tout à la main: pour un néophyte ce n’est pas évident…
C’est donc pour cela que je vous partage mes choix techniques sur ces plateforme.
Kubernetes : Rancher + RKE
Rancher ,c’est la solution simple pour se monter rapidement un cluster Kubernetes.
C’est une solution gratuite: donc pas de souci de ce coté là.
Un hyperviseur Hyper-V (gratuit aussi) permettra d’héberger les 6 VM nécessaire si l’on désire respecter les pratiques suivantes :
- 2 hosts etcd+ control plain
- 1 host etcd (il faut 3 etcd pour une question de quorum)
- 3 nodes worker (pour les applis)
Donc un total de 6 vm avec Ubuntu 20.10 LTS
Dessus il faut installer Docker avec la commande suivante
1 |
curl https://releases.rancher.com/install-docker/20.10.sh | sh |
Pour gérer ce cluster il faudra un VM supplémentaire avec aussi Ubuntu 20.10 LTS et Docker.
C’est sur celle la que l’on installera Rancher, qui nous permettra de créer et de gérer le cluster Kubernetes.
Sur cette dernière on lancera Rancher
1 |
sudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher |
Une fois lancé, il suffit de se rendre sur l’interface web de Rancher, et de créér le cluster en choisissant Custom:
La , il suffira dans un premier temps de donner un nom et de choisir un fournisseur de réseau (calico) :
Et c’est fini !
Il ne reste plus qu’a recopier la ligne de commande proposée en sélectionnant les rôles désirés pour chaque nœud, puis d’aller le coller sur les 6 VM précédemment déployées.
Si tout est ok, vous devez avoir ceci: 3 etcd, 2 control plain et 3 workers.
Le Stockage persistant : Portworx
Si vous vous êtes penchés sur la problématique container, vous savez que un container est par définition mené a être détruit.
Pour conserver des données, il est donc nécessaire de stocker ces dernières sur des stockages persistent qui peuvent donc êtres disponibles sur n’importe quel nœud du cluster et meme après destruction du container.
J’ai testé pas mal de solutions avec le bench fio (Flexible I/O tester):
GlusterFS: Gourmand en CPU, et gestion des PVC laborieuse.
Longhorn: peu performant et souvent en panne, mauvaises performances.
Quobyte: pas mal, mais basé sur java et nécessite énormément de RAM performances moyennes.
Portworx: Simple et performant.
Donc j’ai choisi Portworx essential.
D’abord, la version essential est gratuite. Elle gère jusqu’à 5 nodes avec 1 To par node, ce qui est largement suffisant pour un usage de base.
Portworx n’autorise que 5 snapshoot par volume, mais en fait, ce n’est pas très grave car on peut facilement contourner ce problème avec Kasten lors de la sauvegarde:)
Portworx fournit une interface web, pxlight , qui permet de voir l’usage du stockage:
Et d’analyser les données chaudes ou froides:
Les sauvegardes: Kasten
Une fois les applications déployées, il est nécessaire de faire des sauvegardes.
Là aussi, j’ai testé quelques solution :
Sans hésiter, j’ai choisis Kasten ou K10.
D’abord car la solution est simple à déployer et simple à exploiter.
Kasten permet de faire des sauvegardes au travers de snapshoot (natif portworx):
Ces sauvegardes sont conservées au sein de Kubernetes dans des PVC affectés à Kasten, mais peuvent être aussi exportées sur du stockage externe de type S3:
Pour ma part, j’utilise MinIO qui est un serveur de stockage S3 Gratuit 🙂
Des lors, il est possible de ne faire qu’un seul snapshot par volume(pour ne pas dépasser les 5 permis par Portworx), et d’exporter autant de backup que l’on souhaite sur MinIO
Les applications a sauvegarder sont sélectionnées automatiquement, à l’aide d’étiquettes spécifiques, ce qui évite de repasser sur les politiques de sauvegarde.
Et le clou du spectacle, c’est que Kasten permet l’export planifié ou ne manière manuelle d’une ou plusieurs appli sur un autre cluster, ce qui permet d’avoir une excellente solution de PRA.
J’ai testé cette fonctionnalité inter cluster : c’est top et ça marche !!
Il est aussi possible au travers de mécanisme de conversion de changer par exemple de storage class ce qui est totalement impossible dans Velero…
Et les certificats…
Et oui, pour les sites web, il faut du certificat et c’est possible grâce a cert-manager qui s’appuis sur Letsencrypt. Le certificat est généré de manière automatique et utilisé sur ingress en niveau 7. Il ne reste plus qu’a mettre un autre revers proxy niveau 4 devant et le tour est joué !!
Voila pour ce rapide REX, je suis peu rentré dans les détail, mais si comme moi, vous venez du monde MS, contactez moi pour plus de détails 😉
Aujourd’hui, l’ensembles des sites web, applis, bases de données tournent sur Rancher- RKE – Portworx – Kasten -MinIO et j’en suis assez satisfait !