Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Ingress2gateway : migration simplifiée de Kubernetes Ingress vers Gateway API

By Chimbu ChinnaduraiMar 31, 20254 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Kubernetes Ingress est depuis longtemps la méthode classique pour exposer des services hors du cluster, avec routage, terminaison TLS et load balancing. Toutefois, à mesure que les besoins réseau dans Kubernetes se sont complexifiés, Ingress a montré ses limites, en particulier dans les environnements multi-tenants, le contrôle avancé du trafic et l'extensibilité.

C'est là qu'entre en jeu Gateway API. Pensé comme le successeur d'Ingress, Gateway API offre des capacités plus riches, davantage de flexibilité et une approche plus Kubernetes-native pour gérer le trafic externe. Il introduit des fonctionnalités clés telles que l'accès basé sur les rôles pour les ressources réseau, une manière standardisée de définir les politiques de trafic et la prise en charge des patterns de service mesh.

Les besoins propres à chaque projet déterminent s'il faut opter pour Ingress ou Gateway API. Gateway API convient mieux aux routages complexes et aux exigences de sécurité strictes, tandis qu'Ingress reste pertinent pour des approches Kubernetes-native. Dans cet article, nous présentons l'outil ingress2gateway et la façon dont il facilite la migration d'Ingress vers Gateway API.

Qu'est-ce qu'**ingress2gateway** ?

L'outil Ingress2gateway est conçu pour simplifier la transition des ressources Kubernetes Ingress vers Gateway API, plus puissant et plus expressif. Il propose un processus de conversion automatisé et robuste, qui assure une migration fluide tout en limitant les interruptions.

Principales fonctionnalités :

✅ Conversion automatique

  • Analyse intelligemment les ressources Ingress existantes et génère les configurations Gateway API équivalentes, y compris les ressources Gateway, HTTPRoute et BackendPolicy.
  • Prend en charge les règles, annotations et configurations Ingress complexes en les traduisant vers les spécifications Gateway API correspondantes.

✅ Préservation des règles de routage :

  • Mappe avec précision les chemins URL, les noms d'hôtes et les services backend depuis les règles Ingress vers les règles HTTPRoute.
  • Garantit que le comportement du routage reste cohérent après la migration, ce qui évite les interruptions de service inattendues.
  • Prend en charge diverses fonctionnalités de routage : correspondance de chemin (préfixe, exacte, regex), correspondance de nom d'hôte et routage basé sur les en-têtes.

✅ Compatibilité avec plusieurs contrôleurs Ingress

✅ Migration progressive :

  • Permet une adoption incrémentale de Gateway API grâce à la conversion sélective des ressources Ingress.
  • Prend en charge le mode dry-run pour prévisualiser les résultats de la conversion avant d'appliquer les changements au cluster.
  • Permet de tester en parallèle les ressources Ingress et Gateway API.

Ingress2gateway en action

Pour tester l'outil, il vous faut un cluster Kubernetes avec Gateway API installé. Plusieurs projets prennent en charge Gateway API, et certains fournisseurs cloud proposent même une implémentation entièrement managée.

Dans l'exemple qui suit, j'utilise Google Kubernetes Engine et le contrôleur Ingress par défaut ingress-gce de GKE.

Déploiement d'un workload et d'une ressource Ingress de démonstration

  • Déployez le workload de démonstration httpbin.
---
apiVersion: v1
kind: Service
metadata:
  name: httpbin
  labels:
    app: httpbin
spec:
  ports:
  - name: http
    port: 8000
    targetPort: 80
  selector:
    app: httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpbin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: httpbin
  template:
    metadata:
      labels:
        app: httpbin
    spec:
      containers:
      - image: docker.io/kennethreitz/httpbin
        imagePullPolicy: IfNotPresent
        name: httpbin
        ports:
        - containerPort: 80

Exemple de Deployment et de Service Kubernetes

  • Créez une ressource Ingress pour le déploiement httpbin.
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: httpbin-ingress
  namespace: default
spec:
  rules:
  - host: httpbin.example.com
    http:
      paths:
      - backend:
          service:
            name: httpbin
            port:
              number: 8000
        path: /
        pathType: Prefix

Exemple de ressource Ingress

Installer et exécuter ingress2gateway

  • Suivez la documentation d'installation pour installer ingress2gateway, ou téléchargez le binaire depuis la page des releases.
  • Exécutez ingress2gateway pour le provider concerné. L'outil lit les ressources Ingress et/ou les CRD spécifiques au provider depuis un cluster Kubernetes ou un fichier, puis génère sur stdout les ressources Gateway API équivalentes au format YAML/JSON.

Le résultat ressemble à ceci :

Exemple de ressources Gateway API générées par ingress2gateway

Remarque : ingress2gateway n'a pas vocation à recopier les annotations d'Ingress vers Gateway API. L'outil convertit plutôt les annotations en CRD Gateway ; certaines annotations et/ou CRD spécifiques aux providers, même très répandues, peuvent ne pas être prises en charge. Reportez-vous à la liste des providers pris en charge et à leur documentation.

Exemple de ressources Gateway API

  • Vérifiez le manifeste généré pour vous assurer qu'il contient toutes les configurations nécessaires avant de l'appliquer en production. Réalisez un test de bout en bout avant de supprimer les ressources Ingress existantes.

Si Ingress a longtemps fait ses preuves, Gateway API ouvre un nouveau niveau de contrôle et de flexibilité pour la gestion du trafic Kubernetes. Avec ses capacités avancées de routage, ses politiques de sécurité plus fines et son support natif du multi-tenancy, Gateway API répond aux besoins en constante évolution du networking cloud-native. Prêt à passer le cap ? L'outil communautaire ingress2gatewayapi simplifie le processus de migration et assure une transition sans accroc.

J'espère que cet article vous aura apporté des éclairages utiles. Pour en savoir plus ou découvrir nos services, n'hésitez pas à nous contacter ici.