Aller au contenu

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.com mis en proxy Cloudflare malgré l'absence de certificat Edge à deux niveaux.