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 :
-
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é -
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.
-
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 -
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.