Gabarit complet d’un fichier de valeurs
values.yaml
# Nombre de réplicas du pod
replicaCount: 2
# Image à déployer (sera surchargée par argocd-image-updater)
image:
repository: ghcr.io/kaeyros-analytics-org/mon-service
tag: "0.0.0"
pullPolicy: IfNotPresent
# Secrets pour tirer les images privées
imagePullSecrets:
- name: ghcr-secret
# Labels additionnels appliqués sur les pods
podLabels:
environement: production # Note : la faute de frappe est conservée telle quelle dans le gabarit source
# Configuration du service Kubernetes
service:
type: ClusterIP
port: 80
targetPort: 8080
# Configuration de l'ingress (Traefik)
ingress:
enabled: true
className: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
cert-manager.io/cluster-issuer: letsencrypt-prod
uptime-kuma.io/monitor: "true"
hosts:
- host: mon-service.kaeyros-analytics.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: mon-service-tls
hosts:
- mon-service.kaeyros-analytics.com
# Ressources CPU et mémoire
resources:
# Par défaut, ce bloc est vide : le pod est en BestEffort
# limits:
# cpu: 500m
# memory: 512Mi
# requests:
# cpu: 250m
# memory: 256Mi
# Sondes de santé
startupProbe:
httpGet:
path: /health
port: 8080
failureThreshold: 30
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 3
# Variables d'environnement
env:
- name: NODE_ENV
value: production
- name: LOG_LEVEL
value: info
# Configuration du déploiement canary (Argo Rollouts)
rollout:
enabled: true
canary:
steps:
- setWeight: 10
- pause:
duration: 2m
- setWeight: 25
- pause:
duration: 2m
- setWeight: 50
- pause:
duration: 2m
- setWeight: 75
- pause:
duration: 2m
- setWeight: 100
Deux avertissements critiques
Resources vide par défaut : si vous ne définissez pas de
limits et requests, le pod est en classe BestEffort. Il sera le premier évincé par le scheduler Kubernetes en cas de pression sur les nœuds. Mesurez la consommation réelle avec kubectl top pod plutôt que de deviner les valeurs.Sans readinessProbe : si vous omettez la sonde de disponibilité, le canary basculera sur des pods dont Argo Rollouts ignore complètement l’état. Le trafic sera envoyé vers des pods potentiellement non prêts, ce qui provoque des erreurs 502/503.
Utilisez
kubectl top pod -n <namespace> sur plusieurs jours pour établir une baseline CPU et mémoire, puis remplissez le bloc resources avec des valeurs fondées sur des mesures réelles.