> ## 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.

# Annotations d'Ingress nginx : sans effet sur Traefik

> Dans les fichiers de valeurs Kaeyros, les annotations nginx.ingress.kubernetes.io/* ne font rien car l'ingress controller est Traefik. Voici les équivalents Traefik pour chaque cas.

Dans de nombreux fichiers de valeurs Helm on trouve des annotations `nginx.ingress.kubernetes.io/*`. Elles ne font strictement rien car notre ingress controller est Traefik. Cette page explique pourquoi ces annotations sont inertes, et comment obtenir le même comportement avec la syntaxe Traefik correcte.

## Pourquoi elles sont sans effet

> [!WARNING]
>
> Notre ingress controller est Traefik, pas nginx. Les annotations `nginx.ingress.kubernetes.io/*` proviennent d'une ancienne pile et n'ont jamais été nettoyées. Elles n'ont aucun effet sur le routage, le CORS, les timeouts ni la taille des requêtes.

Lorsqu'une annotation d'ingress n'est pas reconnue par le controller actif, elle est simplement ignorée. Kubernetes ne lève pas d'erreur. Le résultat est un fichier de valeurs qui semble configurer quelque chose, mais qui en réalité ne change rien au comportement du trafic. Cela peut masquer des problèmes de production si l'application dépendait d'un timeout, d'une limite de taille ou d'un en-tête CORS.

## Annotations couramment vues

| Annotation nginx | But recherché | Équivalent Traefik |
| - | - | - |
| `nginx.ingress.kubernetes.io/proxy-body-size` | Limiter la taille du corps de requête | Middleware `buffering` avec `maxRequestBodyBytes` |
| `nginx.ingress.kubernetes.io/proxy-read-timeout` | Timeout de lecture côté backend | `serversTransport` avec `forwardingTimeouts` |
| `nginx.ingress.kubernetes.io/rewrite-target` | Réécrire l'URL cible | Middleware `replacePathRegex` |
| `nginx.ingress.kubernetes.io/enable-cors` | Activer les en-têtes CORS | Middleware `headers` avec `accessControlAllowOriginList` |
| `nginx.ingress.kubernetes.io/ssl-redirect` | Forcer la redirection HTTPS | Middleware `redirectScheme` |

## Créer un Middleware Traefik

Pour obtenir un comportement équivalent à `nginx.ingress.kubernetes.io/enable-cors`, créez un objet `Middleware` Traefik dans le même namespace que votre application.

```yaml Middleware CORS theme={null}
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: mon-app-cors
  namespace: mon-namespace
spec:
  headers:
    accessControlAllowOriginList:
      - "https://mon-frontend.kaeyros.org"
    accessControlAllowMethods:
      - "GET"
      - "POST"
      - "PUT"
      - "DELETE"
    accessControlAllowHeaders:
      - "Content-Type"
      - "Authorization"
    accessControlAllowCredentials: true
    accessControlMaxAge: 100
    addVaryHeader: true
```

Vous pouvez créer d'autres types de Middleware selon le besoin : `buffering` pour la taille des requêtes, `replacePathRegex` pour la réécriture d'URL, ou `redirectScheme` pour forcer HTTPS. Consultez la documentation Traefik pour la liste complète des types de Middleware.

## Référencer le Middleware depuis l'Ingress

Une fois le Middleware créé, référencez-le dans votre ressource Ingress via l'annotation `traefik.ingress.kubernetes.io/router.middlewares`.

```yaml Ingress avec middleware theme={null}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mon-app-ingress
  namespace: mon-namespace
  annotations:
    traefik.ingress.kubernetes.io/router.middlewares: mon-namespace-mon-app-cors@kubernetescrd
spec:
  ingressClassName: traefik
  rules:
    - host: mon-app.kaeyros.org
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: mon-app-rollout
                port:
                  number: 80
```

> [!NOTE]
>
> Le format de l'annotation est `<namespace>-<middleware-name>@kubernetescrd`. Le séparateur est un tiret, et le suffixe `@kubernetescrd` indique à Traefik que la ressource provient du CRD Kubernetes.

> [!TIP]
>
> Quand vous nettoyez un fichier de valeurs, retirez ces annotations mortes. Si l'application dépendait d'un comportement (timeout, CORS, taille de requête), ajoutez le Middleware Traefik équivalent dans le même commit pour ne pas introduire de régression.


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