Bootstrap rapidement son cluster
Pour bootstrap rapidement un cluster, on peut utiliser RKE, un outil Rancher. À noter qu'on utilise RKE et non RKEv2 car ce dernier se base sur K3S et non K8S, ce qui apporte beaucoup moins de fonctionnalités.
RKE c'est un binaire et un fichier cluster.yaml. Il peut être exécuté depuis le serveur lui-même ou en remote. La dernière version est disponible ici.
Voici un exemple de fichier cluster.yaml :
####################################
## CLUBIC Rancher master cluster ##
####################################
cluster_name: K8S-CC-Preprod
# Nodes definition
# ---
nodes:
- address: master01.rancher.k8s.local
role: [controlplane, etcd, worker]
internal_address: 192.168.1.220
hostname_override: master01.rancher.k8s
user: mgmt-rancher
port: "1998"
ssh_key_path: ~/.ssh/id_ed25519
- address: master02.rancher.k8s.local
role: [controlplane, etcd, worker]
internal_address: 192.168.1.221
hostname_override: master02.rancher.k8s
user: mgmt-rancher
port: "1998"
ssh_key_path: ~/.ssh/id_ed25519
- address: master03.rancher.k8s.local
role: [controlplane, etcd, worker]
internal_address: 192.168.1.222
hostname_override: master03.rancher.k8s
user: mgmt-rancher
port: "1998"
ssh_key_path: ~/.ssh/id_ed25519
- address: node01.rancher.k8s.local
role: [worker]
internal_address: 192.168.1.210
hostname_override: node01.rancher.k8s
user: mgmt-rancher
port: "1998"
ssh_key_path: ~/.ssh/id_ed25519
- address: node02.rancher.k8s.local
role: [worker]
internal_address: 192.168.1.211
hostname_override: node02.rancher.k8s
user: mgmt-rancher
port: "1998"
ssh_key_path: ~/.ssh/id_ed25519
- address: node03.rancher.k8s.local
role: [worker]
internal_address: 192.168.1.212
hostname_override: node03.rancher.k8s
user: mgmt-rancher
port: "1998"
ssh_key_path: ~/.ssh/id_ed25519
# Service settings
# ---
services:
kube-api:
extra-args:
external-hostname: rancher.k8s.domain.tld
etcd:
snapshot: true
creation: 6h
retention: 24h
# Authentication settings
# ---
authentication:
strategy: x509
sans:
- rancher.k8s.domain.tld
# NGINX ingress controller settings
# ---
ingress:
provider: nginx
network_mode: hostNetwork
options:
use-forwarded-headers: "true"
Une fois l'infrastructure décrite, une simple commande suffit : rke up
On spécifie l'user mgmt-rancher pour le déploiement et on distingue les nœuds master des workers. L'adresse spécifiée doit idéalement être sur un réseau privé et être résolvable.
Voici un fichier hosts adapté :
# K8S
192.168.1.220 master01.vlan master01.rancher.k8s master01.rancher.k8s.local
192.168.1.221 master02.vlan master02.rancher.k8s master02.rancher.k8s.local
192.168.1.222 master03.vlan master03.rancher.k8s master03.rancher.k8s.local
192.168.1.210 node01.vlan node01.rancher.k8s node01.rancher.k8s.local
192.168.1.211 node02.vlan node02.rancher.k8s node02.rancher.k8s.local
192.168.1.212 node03.vlan node03.rancher.k8s node03.rancher.k8s.local
On active également quelques options supplémentaires comme le snapshot automatique d'etcd toutes les 6h. Des exemples sont disponibles sur le site officiel de Rancher — il est possible par exemple d'envoyer les snapshots automatiquement dans un S3.