Traefik et cert-manager
| Propriété | Valeur |
|---|---|
| Namespaces | kube-system, cert-manager |
| Entrées | Ports publics 80 et 443 sur les trois VPS |
| Service | traefik, type LoadBalancer |
| Réplicas Traefik | 3, avec anti-affinité stricte par nœud |
| Disponibilité | PDB minAvailable: 2 |
| Certificats | Let's Encrypt via letsencrypt-production |
| Criticité | Très haute : toutes les routes publiques |
Rôle
Traefik distribue les requêtes vers les Services Kubernetes. cert-manager crée et renouvelle les certificats demandés par les annotations des Ingress.
Traefik est géré par le chart embarqué de K3s. La surcharge HA est versionnée dans infrastructure/ovh-primary/config/traefik-ha.yaml sous forme de HelmChartConfig. Les trois pods sont obligatoirement répartis sur les trois VPS. La perte d'un nœud laisse deux instances disponibles.
Les mises à jour remplacent une instance à la fois (maxUnavailable: 1). Cette stratégie est nécessaire avec l'anti-affinité stricte : elle libère un nœud avant d'y placer le nouveau pod tout en maintenant deux réplicas disponibles.
Exploitation
kubectl -n kube-system get deploy,svc,pod -l app.kubernetes.io/name=traefik -o wide
kubectl -n kube-system get helmchartconfig traefik -o yaml
kubectl -n kube-system get pdb traefik
kubectl get ingress -A
kubectl get certificate,certificaterequest,challenge -A
kubectl -n cert-manager logs deployment/cert-manager --tail=200
Ajouter une route
Créer un Ingress Traefik, renseigner le host, le Service cible, le bloc TLS et l'annotation cert-manager.io/cluster-issuer: letsencrypt-production. Pour *.lab.djayzone.com, le wildcard Cloudflare pointe déjà vers les trois VPS : aucun enregistrement DNS individuel n'est nécessaire.
Pannes typiques
- DNS ne visant pas les trois IP ;
- challenge ACME bloqué ;
- Service sans endpoint ;
- nom
*.lab.djayzone.commis en proxy Cloudflare malgré l'absence de certificat Edge à deux niveaux.