> ## Documentation Index
> Fetch the complete documentation index at: https://infra-docs.kaeyros.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Écrire un fichier de valeurs pour un nouveau service

> Gabarit annoté pour créer un fichier de values Helm : image, ingress, ressources, sondes et étapes canary.

Le fichier de valeurs Helm définit la configuration spécifique d'une application : image, ingress, ressources, sondes de santé et étapes canary. Voici le gabarit complet utilisé par Kaeyros Analytics.

## Gabarit complet d'un fichier de valeurs

```yaml values.yaml theme={null}
# 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

> [!WARNING]
>
> **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.

> [!WARNING]
>
> **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.

> [!TIP]
>
> 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.