NSX ALB en tant que contrôleur d'entrée L7

Pour utiliser NSX Advanced Load Balancer en tant que contrôleur d'entrée dans le cluster Kubernetes, vous devez disposer de la version NSX ALB Enterprise. Vous pouvez également utiliser Contour comme contrôleur d’entrée dans vos clusters Tanzu Kubernetes Grid.

Lorsqu'il est intégré via AKO dans Tanzu Kubernetes Grid, NSX ALB prend en charge trois modes d'entrée : NodePort, ClusterIP et NodePortLocal. Choisissez un type en fonction de vos besoins.

NodePort

Lorsque vous choisissez d'utiliser le mode NodePort pour l'entrée NSX ALB, le service principal d'entrée doit être en mode NodePort. Dans ce type, le trafic réseau est routé du client vers le moteur de service NSX ALB, puis vers les nœuds de cluster, avant qu'il n'atteigne les espaces. Le moteur de service NSX ALB achemine le trafic vers les nœuds et kube-proxy permet d'acheminer le trafic des nœuds vers les espaces cibles.

Le diagramme suivant décrit comment le trafic réseau est routé en mode NodePort :

Trafic réseau en mode NodePort

Le mode NodePort prend en charge le partage d'un moteur de service NSX ALB entre différents clusters. Cependant, ce type de service peut exposer un port dans le cluster, car il nécessite l'utilisation du service principal en mode NodePort. Il nécessite également un tronçon supplémentaire pour kube-proxy afin d'acheminer le trafic du nœud vers l'espace.

Pour configurer le mode d'entrée NodePort sur le cluster de gestion :

  1. Créez un objet CR AKODeploymentConfig comme suit :

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-node-port
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: Default-Group
      clusterSelector:
        matchLabels:
          nsx-alb-node-port-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePort       # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
  2. Appliquez les modifications sur le cluster de gestion :

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
    
  3. Pour activer le mode d'entrée NodePort sur les clusters de charge de travail, créez un fichier YAML de configuration de cluster de charge de travail et ajoutez le champ suivant :

    AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
    
  4. Déployez le cluster de charge de travail au moyen de la commande tanzu cluster create.

Pour plus d'informations sur le déploiement de clusters de charge de travail sur vSphere, reportez-vous à la section Créer des clusters de charge de travail.

Le fournisseur de services d'entrée NSX ALB est désormais configuré pour utiliser le mode NodePort sur les clusters de charge de travail dont les variables AVI_LABELS correspondent au sélecteur de cluster dans l'objet AKODeploymentConfig install-ako-l7-node-port.

ClusterIP

En mode ClusterIP, le trafic réseau est acheminé du client vers le moteur de service NSX ALB, puis vers les espaces. Ce mode nécessite ClusterIP comme type de service de serveur principal d'entrée. Le moteur de service NSX ALB achemine le trafic vers les espaces en exploitant les routes statiques.

Le diagramme suivant décrit comment le trafic réseau est routé en mode ClusterIP :

Trafic réseau en mode ClusterIP

Le mode ClusterIP simplifie le trafic réseau en l'acheminant directement du moteur de service vers les espaces. Ce mode empêche également l’exposition des ports dans un cluster. Cependant, dans ce mode, les moteurs de service ne peuvent pas être partagés entre les clusters, car un moteur de service doit être attaché à un cluster.

Pour activer cette fonctionnalité :

  1. Créez un objet CR AKODeploymentConfig comme suit :

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-cluster-ip
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: SEG-2   # must be unique, can only be used for one cluster
      clusterSelector:
        matchLabels:
          nsx-alb-cluster-ip-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: false # required
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: ClusterIP      # required
          shardVSSize: SMALL 
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
  2. Appliquez les modifications sur le cluster de gestion :

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
    
  3. Pour activer le mode d'entrée ClusterIP sur les clusters de charge de travail, créez un fichier YAML de configuration de cluster de charge de travail et ajoutez le champ suivant :

    AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
    
  4. Déployez le cluster de charge de travail au moyen de la commande tanzu cluster create.

Pour plus d'informations sur le déploiement de clusters de charge de travail sur vSphere, reportez-vous à la section Créer des clusters de charge de travail.

Le fournisseur de services d'entrée NSX ALB est désormais configuré pour utiliser le mode ClusterIP sur les clusters de charge de travail dont les variables AVI_LABELS correspondent au sélecteur de cluster dans l'objet AKODeploymentConfig install-ako-l7-cluster-ip.

Pour activer le mode d'entrée ClusterIP sur d'autres clusters de charge de travail, vous devez créer un moteur de service dans le contrôleur Avi, puis créer un objet AKODeploymentConfig spécifiant le nom du nouveau moteur de service avant d'appliquer le fichier sur le cluster de gestion.

NodePortLocal (pour CNI Antrea)

Si vous utilisez Antrea comme CNI, vous pouvez activer le mode d'entrée NodePortLocal sur ALB NSX. Il exploite la fonctionnalité NodePortLocal d'Antrea pour acheminer directement le trafic du moteur de service vers l'espace. Dans ce mode, le trafic réseau est routé du client vers le moteur de service NSX ALB, puis vers les espaces. Ce mode nécessite ClusterIP comme type de serveur principal d'entrée. En outre, la variable de configuration ANTREA_NODEPORTLOCAL doit être définie sur true dans Tanzu Kubernetes Grid. Pour plus d'informations sur la fonctionnalité NodePortLocal dans Antrea, reportez-vous à la section NodePortLocal (NPL) dans la documentation d'Antrea.

Le diagramme suivant décrit comment le trafic réseau est routé en mode NodePortLocal :

Trafic réseau en mode NodePortLocal

Le mode NodePortLocal simplifie le trafic réseau en l'acheminant directement du moteur de service vers les espaces. Ce mode prend en charge les moteurs de services partagés pour les clusters et empêche l'exposition des ports d'un cluster.

Pour configurer le mode d’entrée NodePortLocal sur un cluster de gestion existant :

  1. Créez un objet CR AKODeploymentConfig comme suit :

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-node-port-local
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: Default-Group
      clusterSelector:
        matchLabels:
          nsx-alb-node-port-local-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePortLocal  # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
  2. Appliquez les modifications sur le cluster de gestion :

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
    
  3. Pour activer le mode d'entrée NodePortLocal sur les clusters de charge de travail, créez un fichier YAML de configuration de cluster de charge de travail et ajoutez le champ suivant :

    AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
    
    ANTREA_NODEPORTLOCAL: "true"
    
  4. Déployez le cluster de charge de travail au moyen de la commande tanzu cluster create.

Le fournisseur de services d'entrée NSX ALB est désormais configuré pour utiliser le mode NodePortLocal sur les clusters de charge de travail dont les variables AVI_LABELS correspondent au sélecteur de cluster dans l'objet AKODeploymentConfig install-ako-l7-node-port-local.

Prise en charge de l’entrée NSX ALB L7 dans le cluster de gestion

Seul le mode d'entrée NodePort est pris en charge dans le cluster de gestion si vous utilisez NSX ALB comme fournisseur d'adresses IP virtuelles du point de terminaison du cluster. Si vous n'utilisez pas NSX ALB comme fournisseur d'adresses IP virtuelles de point de terminaison du cluster, les trois modes d'entrée sont pris en charge.

Pour activer l’entrée L7 dans le cluster de gestion :

  1. Modifiez le fichier AKODeploymentConfig dans le cluster de gestion :

    kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
    
  2. Dans le fichier qui s'ouvre, modifiez le champ spec.extraConfigs.ingress comme indiqué dans l'exemple suivant :

      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePort       # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon