NSX ALB como controlador de entrada L7

Para utilizar NSX Advanced Load Balancer como controlador de entrada en el clúster de Kubernetes, debe tener la versión NSX ALB Enterprise. Si lo prefiere, puede utilizar Contour como controlador de entrada en los clústeres de Tanzu Kubernetes Grid.

Cuando se integra a través de AKO en Tanzu Kubernetes Grid, NSX ALB admite tres modos de entrada: NodePort, ClusterIP y NodePortLocal. Elija un tipo según sus requisitos.

NodePort

Cuando se elige utilizar el modo NodePort para la entrada de NSX ALB, el servicio back-end de entrada debe ser el modo NodePort. En este tipo, el tráfico de red se enruta desde el cliente hacia el SE NSX ALB y, a continuación, hacia los nodos del clúster, antes de que llegue a los pods. El SE NSX ALB enruta el tráfico a los nodos y kube-proxy ayuda a enrutar el tráfico desde los nodos hacia los pods de destino.

El siguiente diagrama describe cómo se enruta el tráfico de red en el modo NodePort:

Tráfico de red en el modo NodePort

El modo NodePort admite el uso compartido de un SE NSX ALB entre diferentes clústeres. Sin embargo, este tipo de servicio puede exponer un puerto en el clúster, ya que requiere utilizar el servicio back-end del modo NodePort. También requiere un salto adicional para que kube-proxy enrute el tráfico del nodo al pod.

Para configurar el modo de entrada de NodePort en el clúster de administración:

  1. Cree un objeto CR AKODeploymentConfig de la siguiente manera:

    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. Aplique los cambios en el clúster de administración:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
    
  3. Para habilitar el modo de entrada de NodePort en los clústeres de carga de trabajo, cree un archivo YAML de configuración del clúster de carga de trabajo y agregue el siguiente campo:

    AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
    
  4. Implemente el clúster de carga de trabajo mediante el comando tanzu cluster create.

Para obtener más información sobre la implementación de clústeres de carga de trabajo en vSphere, consulte Crear clústeres de carga de trabajo.

El proveedor de servicios de entrada NSX ALB ahora está configurado para utilizar el modo NodePort en los clústeres de carga de trabajo que tienen AVI_LABELS que coinciden con el selector de clúster en el objeto AKODeploymentConfig install-ako-l7-node-port.

ClusterIP

En el modo ClusterIP, el tráfico de red se enruta desde el cliente al SE NSX ALB y, a continuación, a los pods. Este modo requiere ClusterIP como el tipo de servicio back-end de entrada. El SE NSX ALB enruta el tráfico a los pods aprovechando las rutas estáticas.

El siguiente diagrama describe cómo se enruta el tráfico de red en el modo ClusterIP:

Tráfico de red en el modo ClusterIP

El modo ClusterIP simplifica el tráfico de red enrutando el tráfico directamente desde el SE a los pods. Este modo también evita la exposición de los puertos en un clúster de. Sin embargo, en este modo, los SE no se pueden compartir entre clústeres porque se debe asociar un SE a un clúster.

Para habilitar esta función:

  1. Cree un objeto CR AKODeploymentConfig de la siguiente manera:

    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. Aplique los cambios en el clúster de administración:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
    
  3. Para habilitar el modo de entrada de ClusterIP en los clústeres de carga de trabajo, cree un archivo YAML de configuración del clúster de carga de trabajo y agregue el siguiente campo:

    AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
    
  4. Implemente el clúster de carga de trabajo mediante el comando tanzu cluster create.

Para obtener más información sobre la implementación de clústeres de carga de trabajo en vSphere, consulte Crear clústeres de carga de trabajo.

El proveedor de servicios de entrada NSX ALB ahora está configurado para utilizar el modo ClusterIP en los clústeres de carga de trabajo que tienen AVI_LABELS que coinciden con el selector de clúster en el objeto AKODeploymentConfig install-ako-l7-cluster-ip.

Para habilitar el modo de entrada de ClusterIP en otros clústeres de carga de trabajo, debe crear un nuevo SE en el controlador AVI y, a continuación, crear un nuevo objeto AKODeploymentConfig especificando el nombre del nuevo SE antes de aplicar el archivo en el clúster de administración.

NodePortLocal (para CNI de Antrea)

Si utiliza Antrea como CNI, puede habilitar el modo de entrada NodePortLocal en NSX ALB. Aprovecha la función NodePortLocal de Antrea para enrutar directamente el tráfico del SE al pod. En el modo, el tráfico de red se enruta desde el cliente al SE NSX ALB y, a continuación, a los pods. Este modo requiere ClusterIP como el tipo de back-end de entrada. Además, la variable de configuración ANTREA_NODEPORTLOCAL debe establecerse en true en Tanzu Kubernetes Grid. Para obtener más información sobre la función NodePortLocal en Antrea, consulte NodePortLocal (NPL) en la documentación de Antrea.

El siguiente diagrama describe cómo se enruta el tráfico de red en el modo NodePortLocal:

Tráfico de red en el modo NodePortLocal

El modo NodePortLocal simplifica el tráfico de red enrutando el tráfico de red directamente desde el SE a los pods. Este modo admite SE compartidos para los clústeres e impide la exposición de los puertos en un clúster.

Para configurar el modo de entrada de NodePortLocal en un clúster de administración existente:

  1. Cree un objeto CR AKODeploymentConfig de la siguiente manera:

    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. Aplique los cambios en el clúster de administración:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
    
  3. Para habilitar el modo de entrada de NodePortLocal en los clústeres de carga de trabajo, cree un archivo YAML de configuración del clúster de carga de trabajo y agregue el siguiente campo:

    AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
    
    ANTREA_NODEPORTLOCAL: "true"
    
  4. Implemente el clúster de carga de trabajo mediante el comando tanzu cluster create.

El proveedor de servicios de entrada NSX ALB ahora está configurado para utilizar el modo NodePortLocal en los clústeres de carga de trabajo que tienen AVI_LABELS que coinciden con el selector de clúster en el objeto AKODeploymentConfig install-ako-l7-node-port-local.

Compatibilidad con la entrada de NSX ALB capa 7 en el clúster de administración

Solo se admite el modo de entrada de NodePort en el clúster de administración si utiliza NSX ALB como el proveedor de VIP del endpoint del clúster. Si no utiliza NSX ALB como proveedor de VIP de endpoint de clúster, se admiten los tres modos de entrada.

Para habilitar la entrada de capa 7 en el clúster de administración:

  1. Edite el archivo AKODeploymentConfig en el clúster de administración:

    kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
    
  2. En el archivo que se abre, modifique el campo spec.extraConfigs.ingress como se muestra en el siguiente ejemplo:

      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