Partager via


Déployer un contrôleur d’entrée

S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server

Un contrôleur d’entrée est une ressource Kubernetes qui autorise un accès externe aux services au sein du cluster Kubernetes. L’entrée permet à un opérateur d’exposer un service aux demandes de réseau externe, généralement HTTP ou HTTPS. Vous configurez l’accès en créant un ensemble de règles qui définissent les connexions entrantes accédant à des services spécifiques.

Un contrôleur d’entrée est un logiciel qui fournit un routage de trafic configurable pour les services Kubernetes. Des ressources d’entrée Kubernetes sont utilisées pour configurer les règles d’entrée et les itinéraires des services Kubernetes individuels. En utilisant un contrôleur d’entrée et des règles d’entrée, vous pouvez utiliser une seule adresse IP pour acheminer le trafic vers plusieurs services dans un cluster Kubernetes.

Après avoir déployé le contrôleur dans votre environnement, vous pouvez ensuite créer et déployer le manifeste d’entrée. Actuellement, vous utilisez l’entrée dans AKS Arc à l’aide du contrôleur d’entrée NGINX. Pour plus d’informations sur l’installation, la configuration et l’utilisation du contrôleur d’entrée NGINX, consultez Installation avec des manifestes.

L’entrée diffère de NodePort et LoadBalancer de manière unique, et améliore le routage du trafic vers votre cluster de manière moins coûteuse. La définition des services NodePort crée de nombreux ports aléatoires et la définition des services LoadBalancer augmente le coût des ressources cloud plus que vous le souhaitez. Quand vous définissez un contrôleur d’entrée, vous regroupez les règles de routage du trafic dans une même ressource qui s’exécute dans le cadre de votre cluster. NodePort et LoadBalancer vous permettent d’exposer un service en spécifiant cette valeur dans le type du service, tandis que l’entrée est une ressource indépendante du service. L’entrée est définie, créée et détruite séparément du service.

Vous pouvez déployer l’entrée de différentes façons en fonction du cas d’usage. Les ressources d’entrée sont utilisées afin de mettre à jour la configuration au sein du contrôleur d’entrée pour déterminer son fonctionnement.

Utiliser l’entrée pour exposer des services en utilisant des URL accessibles de l’extérieur

Un exemple d’utilisation de l’entrée est illustré dans le manifeste YAML suivant. Le ingress.class paramètre apparaît dans les métadonnées (dans cet exemple), ingress-nginxet ce paramètre permet au contrôleur d’entrée NGINX de savoir ce qu’il doit surveiller et mettre à jour :

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
        kubernetes.io/ingress.class: "nginx"
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080

La spec section fournit des informations sur ce qui est configuré. Dans cet exemple, une règle (ou ensemble de règles) est définie et inclut les éléments suivants :

  • Hôte auquel les règles sont appliquées.
  • Indique si le trafic est HTTP ou HTTPS.
  • Chemin surveillé.
  • Service interne et port où le trafic est envoyé.

Utiliser l’entrée pour équilibrer la charge du trafic

Dans l’exemple suivant, un autre chemin d’accès est ajouté au manifeste qui autorise l’équilibrage de charge entre différents back-ends d’une application. Dans cet exemple, l’opérateur peut diviser le trafic et l’envoyer à différents points de terminaison de service et déploiements en fonction du chemin décrit. Derrière chaque chemin d’accès est un déploiement et un service, ce qui est utile pour les points de terminaison qui reçoivent plus de trafic :

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-and-earth
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080
               - path: /hello-earth
pathType: Prefix
backend:
    service: 
         name: hello-earth 
                    port:  
                     number: 8080

Utiliser l’entrée pour router le trafic HTTP vers plusieurs noms d’hôte sur la même adresse IP

Vous pouvez utiliser une ressource d’entrée différente pour chaque hôte, ce qui vous permet de contrôler le trafic avec plusieurs noms d’hôte. Pour utiliser une ressource d’entrée différente, pointez plusieurs noms d’hôte au même adresse IP publique utilisée pour le service LoadBalancer. Dans le fichier manifeste suivant, une version de production de hello-world a été ajoutée. Le nom d’hôte prod.example.com est utilisé et le trafic est pointé vers le nouveau service hello-world-prod. Le trafic passe par l’adresse IP de l’équilibreur de charge et est routé en fonction du nom d’hôte et du chemin d’accès que vous fournissez :

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-prod
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-test 
                    port:  
                     number: 8080
       - host: prod.example.com
          http:
              paths:
               - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-prod 
                    port:  
                     number: 8080

Étapes suivantes

Pour en savoir plus, consultez les liens suivants :