Kubernetes — Vue d'ensemble
Cluster Kubernetes k3s sur 3 VMs (pve03), orchestré en GitOps via ArgoCD.
Architecture
| Rôle |
VM |
IP |
vCPU |
RAM |
Stockage |
| k3s-master (control plane) |
301 |
192.168.1.40 |
2 |
4 Go |
40 Go |
| k3s-worker01 |
302 |
192.168.1.41 |
3 |
6 Go |
100 Go |
| k3s-worker02 |
303 |
192.168.1.42 |
3 |
6 Go |
100 Go |
Composants
| Composant |
Détail |
| Distribution |
k3s (certifié Kubernetes, binaire unique) |
| Datastore |
SQLite (pas d'etcd — économique en RAM) |
| CNI |
Flannel (VXLAN, UDP 8472) |
| Ingress Controller |
Traefik (intégré k3s) |
| GitOps |
ArgoCD |
| Stockage |
Local Path Provisioner (intégré k3s) |
| Runner |
GitLab Runner (executor Kubernetes) |
Flux réseau
Traefik (VM 101)
│
│ 443 (TLS terminé par Traefik)
│
▼
k3s-master:443 (Ingress Controller Traefik)
│
├── argocd.mounik.ovh → ArgoCD (namespace argocd)
└── app-*.mounik.ovh → Applications (namespace fastapi, streamlit, flask)
Services déployés
| Service |
Namespace |
Déploiement |
| ArgoCD |
argocd |
GitOps — synchronisation avec GitLab |
| GitLab Runner |
gitlab-runner |
Helm — executor Kubernetes |
| FastAPI |
fastapi |
ArgoCD — 2 réplicas |
| Streamlit |
streamlit |
ArgoCD — 2 réplicas |
| Flask |
flask |
ArgoCD — 2 réplicas |
Déploiement Ansible
# Cluster k3s
ansible-playbook -i inventory/homelab.yml playbooks/10-k3s.yml
# ArgoCD
ansible-playbook -i inventory/homelab.yml playbooks/11-argocd.yml
# GitLab Runner
ansible-playbook -i inventory/homelab.yml playbooks/12-gitlab-runner.yml
Vérification
kubectl get nodes
kubectl get pods -A
kubectl get svc -A
Pour aller plus loin