Faciliter le déploiement de cluster K3s via Scaleway et Ansible
K3s est un projet développer par Rancher permettant de disposer d'un Kubernetes le plus léger possible en terme d'empreinte disque/mémoire, et faire fonctionner le tout sur de l'IoT ou des petites machines types ARM. https://k3s.io/
Documentation officielle du module Ansible pour Scaleway
- Avoir un compte sur Scaleway
- Avoir une clé SSH, avoir la clé publique à la racine du projet, et l'appeler admin.pub
- Installer les package pip sur la machine locale
pip install jinja2 PyYAML paramiko cryptography packaging- Installer Ansible depuis les sources (>= 2.8devel)
- Installer jq
Créer un token sur le site de Scaleway pour les accès distants et le stocker dans un fichier scaleway_token
export SCW_API_KEY='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'Sourcer le fichier
source scaleway_tokenUtiliser le playbook create_arm_vms.yaml pour :
- récupérer l'ID d'organisation du compte Scaleway
- récupérer un ID d'image compatible debian Stretch
- ajouter si nécessaire la clé SSH de l'admin
- créer autant de machines que nécessaire
ansible-playbook create_arm_vms_scaleway.ymlplugin: scaleway
regions:
- par1
tags:
- k3smaster
- k3sworkerVérifier le retour de la commande ansible-inventory
ansible-inventory --list -i inventory.yml
{
"_meta": {
"hostvars": {
"x.x.x.x": {
"arch": "arm64",
"commercial_type": "ARM64-2GB",
"hostname": "k3smaster1",
[...]
"k3sworker": {
"hosts": [
"x.x.x.x",
"y.y.y.y",
"z.z.z.z"
]
}Récupérer les empreintes de nos nouveaux serveurs pour éviter une erreur lors de la première connexion
ansible-inventory --list -i inventory.yml | jq -r '.k3smaster.hosts | .[]' | xargs ssh-keyscan >> ~/.ssh/known_hosts
ansible-inventory --list -i inventory.yml | jq -r '.k3sworker.hosts | .[]' | xargs ssh-keyscan >> ~/.ssh/known_hostsAjouter sa clé SSH dans l'agent, puis vérifier qu'on peut se connecter à tous les serveurs via Ansible
eval `ssh-agent`
ssh-add myprivate.keyInstaller les prerequis non présents sur l'image de base (python et sudo)
ansible-playbook -i inventory.yml -u root install_prerequisites_scaleway.ymlInstaller k3s
ansible-playbook -i inventory.yml -u root install_k3s_scaleway.ymlConfigurer kubeconfig (pour kubectl) sur la machine locale
ansible-playbook -i inventory.yml -u root configure_kubeconfig.ymlTester votre nouveau cluster
cd
kubectl --kubeconfig=.kube/config.k3smaster get nodes