Ingress Controller de Citrix ADC

Soporte de redirección basado en directivas para varios clústeres de Kubernetes

Cuando utiliza un solo Citrix ADC para equilibrar la carga de varios clústeres de Kubernetes, el Citrix Ingress Controller agrega redes CIDR de pods a través de rutas estáticas. Estas rutas establecen la conectividad de red entre los pods de Kubernetes y Citrix ADC. Sin embargo, cuando los CIDR de pod se superponen, puede haber conflictos de ruta. Citrix ADC admite el redirección basada en directivas (PBR) para abordar los conflictos de red en tales casos. En PBR, las decisiones se toman en función de los criterios que especifique. Por lo general, se especifica un salto siguiente al que envía los paquetes seleccionados. En un entorno de Kubernetes de varios clústeres, PBR se implementa reservando una dirección IP de subred (SNIP) para cada clúster de Kubernetes o Citrix Ingress Controller. Mediante el perfil de red, el SNIP está enlazado a todos los grupos de servicios creados por el mismo Citrix Ingress Controller. Para todo el tráfico generado por los grupos de servicios que pertenecen al mismo clúster, la dirección IP de origen es el mismo SNIP.

A continuación, se muestra un ejemplo de topología en la que PBR se configura para dos clústeres de Kubernetes con equilibrio de carga mediante Citrix ADC VPX o MPX.

Configuración PBR

Configurar PBR mediante el Citrix Ingress Controller

Para configurar PBR, necesita un SNIP o más por clúster de Kubernetes. Puede proporcionar valores SNIP mediante la variable de entorno en el archivo YAML de implementación del Citrix Ingress Controller durante el arranque o mediante ConfigMap.

Realice los siguientes pasos para implementar el Citrix Ingress Controller y configurar PBR mediante ConfigMap.

  1. Descargue el archivo citrix-k8s-ingress-controller.yaml con el siguiente comando:

    wget  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml
    
  2. Modifique el archivo YAML Citrix Ingress Controller:

      - Specify the values of the environment variables as per your requirements. For more information on specifying the environment variables, see the [Deploy Citrix ingress controller](/en-us/citrix-k8s-ingress-controller/cic-yaml.html) documentation.
    
  3. Implemente el Citrix Ingress Controller mediante el archivo YAML modificado con el siguiente comando en cada clúster.

    kubectl create -f citrix-k8s-ingress-controller.yaml
    
  4. Crea un archivo YAML cic-configmap.yaml con los valores SNIP requeridos en ConfigMap.

    A continuación se muestra un ejemplo de un ConfigMap con los valores SNIP:

    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: pbr-test
        namespace: default
    data:
        NS_SNIPS: '["192.0.2.2", "192.0.2.1"]'
    
  5. Aplica el ConfigMap.

     kubectl create -f cic-configmap.yaml
    

También puede especificar los SNIP mediante la variable de entorno NS_SNIPS en el archivo YAML de implementación Citrix Ingress Controller.

     - name: "NS_SNIPS"
        value: '["192.0.2.2", "192.0.2.1"]'

Las siguientes son las pautas de uso al usar ConfigMap para configurar SNIP:

  • Solo se pueden agregar o eliminar SNIP a través de ConfigMap. El feature-node-watch argumento solo se puede habilitar durante el arranque.

  • Cuando agregas un ConfigMap:

    • Si los SNIP ya se proporcionan con la variable de entorno durante el arranque y quiere conservarlos, esos SNIP deben especificarse en el ConfigMap junto con los nuevos SNIP.
  • Cuando eliminas ConfigMap:

    • Se eliminan todos los PBR generados por los SNIP de ConfigMap. Si los SNIP se proporcionan a través de la variable de entorno, se agrega PBR para esas direcciones IP.

    • Si los SNIP no se proporcionan mediante la variable de entorno NS_SNIPS, se agregan rutas estáticas ya que feature-node-watch está habilitado.

Validar la configuración de PBR en un Citrix ADC después de implementar el Citrix Ingress Controller

En este ejemplo de validación se utiliza un clúster de Kubernetes de dos nodos con el Citrix Ingress Controller implementado junto con el siguiente ConfigMap con dos SNIP.

Imagen

Puede comprobar que el Citrix Ingress Controller agrega las siguientes configuraciones al ADC:

  1. Se agrega uno IPset de todos los NS_SNIPs proporcionados por ConfigMap.

    Imagen

  2. Se agrega un perfil de red con el conjunto SrcIP a IPset.

    Imagen

  3. El grupo de servicios agregado por el Citrix Ingress Controller contiene el conjunto de perfiles de red.

    Imagen

  4. Por último, el Citrix Ingress Controller agrega los PBR.

    Imagen

    Aquí:

    • La cantidad de PBR es equivalente a (cantidad de SNIP) * (cantidad de nodos de Kubernetes). En este caso, agrega cuatro (2*2) PBR.
    • El srcIP PBR es el que ConfigMap NS_SNIPS proporciona al controlador de entrada de Citrix. destIP Es el intervalo de subredes superpuestas de CNI del nodo de Kubernetes.
    • NextHop es la dirección IP del nodo de Kubernetes.
  5. También puede usar los registros del Citrix Ingress Controller para validar la configuración.

    troncos

Configurar PBR mediante el controlador de nodos de Citrix

Puede configurar PBR mediante el controlador de nodos de Citrix para varios clústeres de Kubernetes. Cuando utiliza un solo Citrix ADC para equilibrar la carga de varios clústeres de Kubernetes con el controlador de nodos Citrix para redes, las rutas estáticas que agrega para reenviar paquetes a la dirección IP de la interfaz de túnel VXLAN pueden provocar conflictos de rutas. Para admitir PBR, el controlador de nodo Citrix debe trabajar en conjunto con el Citrix Ingress Controller para vincular el perfil de red al grupo de servicios.

Realice los siguientes pasos para configurar PBR mediante el controlador de nodos de Citrix:

  1. Al iniciar el controlador de nodos de Citrix, proporcione el CLUSTER_NAME como una variable de entorno. La especificación de esta variable indica que se trata de una implementación de varios clústeres y que el controlador de nodos de Citrix configura PBR en lugar de rutas estáticas.

    Ejemplo:

    - name: CLUSTER_NAME 
      value: "dev-cluster"
    
  2. Al implementar el Citrix Ingress Controller, proporcione el CLUSTER_NAME como una variable de entorno. Este valor debe ser el mismo que el valor proporcionado en el controlador de nodos de Citrix.

    Ejemplo:

    - name: CLUSTER_NAME  
      value: "dev-cluster "
    
  3. Especifique el argumento --enable-cnc-pbr como True en la sección de argumentos del archivo YAML de implementación Citrix Ingress Controller. Cuando especifica este argumento, el Citrix Ingress Controller sabe que el controlador de nodo de Citrix está configurando PBR en Citrix ADC.

    Ejemplo:

    args: 
     - --enable-cnc-pbr True          
    

Nota:

  • El valor proporcionado CLUSTER_NAME en los archivos de implementación del controlador de nodo Citrix y del controlador de entrada de Citrix debe coincidir cuando se implementan en el mismo clúster de Kubernetes.

  • CLUSTER_NAME se utiliza al crear la entidad de perfil de red y vincularla a grupos de servicios en Citrix ADC VPX o MPX.

Validar la configuración de PBR en un Citrix ADC después de implementar el controlador de nodos de Citrix

En este ejemplo de validación se usa un clúster de Kubernetes de dos nodos con el controlador de nodo Citrix y el controlador de entrada de Citrix implementados.

Puede comprobar que el controlador de nodos Citrix agrega las siguientes configuraciones al ADC:

  1. Se agrega un perfil de red, con el valor de srcIP configurado en la SNIP agregado por el controlador de nodos de Citrix al crear la red de túnel VXLAN entre los nodos de Citrix ADC y Kubernetes.

    Imagen

  2. El Citrix Ingress Controller vincula el perfil de red a los grupos de servicios que crea.

    Imagen

  3. Por último, el controlador de nodos Citrix agrega los PBR.

    Imagen

    Aquí:

    • La cantidad de PBR es igual a la cantidad de nodos de Kuberntes. En este caso, agrega dos PBR.
    • srcIP de PBR es el SNIP agregado por el controlador de nodos Citrix en la red de túnel. destIP es el intervalo de subredes superpuestas de CNI del nodo Kubernetes. NextHop es la dirección IP de la interfaz de túnel VXLAN del nodo de Kubernetes.

      Nota:

      El controlador de nodos de Citrix agrega PBR en lugar de rutas estáticas. El resto de la configuración de la tabla de puentes y VXLAN sigue siendo la misma. Para obtener más información, consulte la configuración del controlador de nodos de Citrix.

Soporte de redirección basado en directivas para varios clústeres de Kubernetes