Skip to content

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