Exécutez-vous Kubernetes dans votre homelab ou dans votre entreprise ? Vous souhaitez gérer et créer facilement des clusters Kubernetes ? Ici je vais vous montrer comment installer pas à pas Rancher sur un cluster k3s haute disponibilité.
Il vous faut d'abord un cluster K3S fonctionnel.
Ensuite il vous faut installer HELM :
Il est possible de l'installer soit sur une des masters du cluster ou directement sur votre machine à partir du moment ou votre utilisateur courant à bien dans son "HOME/.KUBE" le fichier de config du serveur.
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Remarque : Il est conseillé de consulter la matrice de support Rancher pour obtenir la version recommandée pour toutes les dépendances Rancher.
Vous devez aussi avoir mis en place de traefik et cert-manager.
Ainsi qu'un stockage distribué
Ajoutez le dépôt helm stable de rancher
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
Puis mettez à jour le depôt
helm repo update
Créez un namespace pour rancher
kubectl create namespace cattle-system
Installez Rancher avec Helm
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.exemple.fr \
--set replicas=3 \
--set bootstrapPassword=Mon-SUPER-mot-de-Passe
Bien penser à changer la valeur de hostname par votre adresse à laquelle vous souhaitez accèder à rancher et bootstrapPassword avec votre propre mot de passe (Il doit faire plus de 12 caractères).
Vérifiez le déploiement
kubectl -n cattle-system rollout status deploy/rancher
Vous devriez voir
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 1 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 2 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
La mise en place de rancher peu prendre quelques minutes
Si vous en etes ici, vous devriez avoir ingress controleur traefik fonctionnel
kubectl get svc --all-namespaces -o wide
Vous devriez trouver la ligne suivante :
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
traefik traefik LoadBalancer 10.43.191.138 192.168.40.75 80:31715/TCP,443:30608/TCP 33h app.kubernetes.io/instance=traefik,app.kubernetes.io/name=traefik
puis créez une entrée DNS pour rancher.exemple.fr 192.168.40.75
Il peut s'agir d'une entrée dns sur votre hôte dans le fichier hosts ou d'une entrée DNS dans votre système DNS local (routeur, pi-hole, etc.)
Pour accèder au site web de rancher il vous faudra un mot de passe, celui ce génère directement sur votre serveur avec la commande suivante :
echo https://rancher.exemple.fr/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')
Pensez à changer le nom de domaine par le votre.
Dans le cas ou votre mot de passe ne fonctionnerait pas sur la page web, faites la commande suivante :
kubectl -n cattle-system exec $(kubectl -n cattle-system get pods -l app=rancher | grep '1/1' | head -1 | awk '{ print $1 }') -- reset-password
Vous obtiendrez un mot de passe fonctionnel