Sobes.tech
Middle

Comment assurer l'accès des utilisateurs à une application fonctionnant dans Kubernetes?

sobes.tech IA

Réponse de l'IA

Il existe plusieurs méthodes principales :

  1. Type de service Kubernetes : LoadBalancer. Le fournisseur cloud crée un équilibreur de charge externe qui dirige le trafic vers les pods de votre application.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: LoadBalancer # Ici, le type LoadBalancer est spécifié
    
  2. Type de service Kubernetes : NodePort. Chaque nœud du cluster ouvre un port statique qui redirige le trafic vers le service. L'accès à l'application se fait via l'adresse IP de n'importe quel nœud du cluster et ce port statique.

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
      type: NodePort # Ici, le type NodePort est spécifié
    

    Cette méthode est moins évolutive et souvent non recommandée pour la production.

  3. Ingress. Objet Kubernetes qui gère l'accès externe aux services dans le cluster. Nécessite un contrôleur d'Ingress (par exemple, Nginx Ingress, Traefik, HAProxy). Ingress permet de configurer le routage basé sur les noms de domaine et les chemins.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
        - host: myapp.mydomain.com # Nom de domaine
          http:
            paths:
              - path: / # Chemin
                pathType: Prefix
                backend:
                  service:
                    name: my-app-service # Nom du service
                    port:
                      number: 80 # Port du service
    
  4. Gateway API (approche plus moderne). Évolution d'Ingress, fournit une API plus expressive et extensible pour gérer l'accès. Inclut des ressources GatewayClass, Gateway, HTTPRoute (et d'autres types de routes).

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: my-app-route
    spec:
      parentRefs:
        - name: my-gateway # Référence à la ressource Gateway
      hostnames:
        - "myapp.mydomain.com"
      rules:
        - matches:
            - path:
                type: Prefix
                value: /
          backendRefs:
            - name: my-app-service # Nom du service
              port: 80 # Port du service
    

Le choix de la méthode dépend des exigences en matière de :

  • Scalabilité
  • Complexité du routage
  • Sécurité (terminaison SSL/TLS)
  • Plateforme cloud utilisée
  • Besoin de gestion centralisée de l'accès

Pour la plupart des scénarios de production, on utilise LoadBalancer pour fournir un point d'entrée (souvent pour le contrôleur d'Ingress) ou directement, et Ingress (ou Gateway API) pour un routage flexible et une gestion de l'accès à différents services dans le cluster.