Aide-mémoire CKAD

exemple YAML Gateway API k8s

Ingress mélange listener et routage. Gateway API les sépare. Le GatewayClass doit déjà exister.

Tout le trafic passe par une seule arche ; un officier veille depuis un balcon. Tout le trafic passe par une seule arche ; un officier veille depuis un balcon.
Gateway
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: web
  namespace: app
spec:
  gatewayClassName: nginx
  listeners:
    - name: http
      protocol: HTTP
      port: 80
      allowedRoutes:
        namespaces:
          from: Same
HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: web
  namespace: app
spec:
  parentRefs:
    - name: web
  hostnames:
    - web.example
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      backendRefs:
        - name: web
          port: 80

Champs

gatewayClassName
Choisit le contrôleur. Même idée qu’ingressClassName. Sans classe, rien n’écoute.
parentRefs
À quel Gateway cette route s’attache. name, namespace et sectionName optionnels.
backendRefs
Le Service. port est obligatoire. weight pour un split canary.
PathPrefix
type : PathPrefix, value : /api. Pas pathType — ça c’est Ingress.
allowedRoutes
from : Same est la réponse d’examen habituelle. All laisse les autres namespaces s’attacher.

Pièges

  • apiVersion : gateway.networking.k8s.io/v1. Pas networking.k8s.io — ça c’est Ingress.
  • HTTPRoute utilise type : PathPrefix, pas pathType. backendRefs[].port est obligatoire.
  • Le GatewayClass doit exister. allowedRoutes.from : Same sauf si la question dit autrement.

Doc officielle Gateway API HTTPRoute

S’entraîner sur un cluster réel →