Ingress Controller de Citrix ADC

Administración de direcciones IP mediante el controlador de Citrix IPAM para recursos de entrada

El controlador de IPAM es una aplicación proporcionada por Citrix para la administración de direcciones IP y se ejecuta en paralelo al Citrix Ingress Controller en el clúster de Kubernetes. Ya se admite la asignación automática de direcciones IP a servicios de tipo LoadBalancer desde un intervalo de direcciones IP especificado mediante el controlador IPAM. Ahora, también puede asignar direcciones IP a los recursos de Ingress desde un intervalo específico mediante el controlador IPAM.

Puede especificar intervalos de direcciones IP en el archivo YAML al implementar el controlador IPAM mediante YAML. El Citrix Ingress Controller configura la dirección IP asignada al recurso Ingress como una dirección IP virtual (VIP) en Citrix ADC MPX o VPX.

El controlador de IPAM requiere la VIP CustomResourceDefinition (CRD) proporcionada por Citrix. La CRD de VIP se utiliza para la comunicación interna entre el controlador de entrada de Citrix y el controlador de IPAM.

Asignar la dirección IP para el recurso de entrada mediante el controlador de IPAM

En este tema se proporciona información sobre cómo usar el controlador de IPAM para asignar direcciones IP a los recursos de Ingress.

Para configurar un recurso de Ingress con una dirección IP del controlador de IPAM, lleve a cabo los siguientes pasos:

  1. Implementar la CRD de VIP
  2. Implementar el Citrix Ingress Controller
  3. Implementar el controlador de IPAM
  4. Implementar la aplicación y el recurso Ingress

Paso 1: Implementar la CRD de VIP

Realice el siguiente paso para implementar la CRD de VIP de Citrix, que permite la comunicación entre el controlador de entrada de Citrix y el controlador de IPAM.

kubectl create -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/crd/vip/vip.yaml

Para obtener más información sobre la CRD de VIP, consulte VIP CustomResourceDefinition.

Paso 2: implementar el Citrix Ingress Controller

Realice los siguientes pasos para implementar el Citrix Ingress Controller con el argumento Controlador de IPAM.

  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:

    • Especifique los valores de las variables de entorno según sus requisitos. Para obtener más información sobre cómo especificar las variables de entorno, consulte Implementar Citrix Ingress Controller. En este caso, no necesita especificar NS_VIP.

    • Especifique el controlador de IPAM como argumento mediante lo siguiente:

      args: - –ipam citrix-ipam-controller

    A continuación se muestra un fragmento de un archivo YAML de Citrix Ingress Controller de ejemplo con el argumento del controlador IPAM:

    Nota:

    Este YAML es solo para fines de demostración y no para la versión completa. Siempre use la última versión de YAML y modifíquela según sus requisitos. Para obtener la versión más reciente, consulte el archivo citrix-k8s-ingress-controller.yaml.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cic-k8s-ingress-controller
    spec:
          serviceAccountName: cic-k8s-role
          containers:
          - name: cic-k8s-ingress-controller
            image: "quay.io/citrix/citrix-k8s-ingress-controller:1.27.15"
            env:
              - name: "NS_IP"
                value: "x.x.x.x"
              - name: "NS_USER"
                valueFrom:
                secretKeyRef:
                  name: nslogin
                  key: username
              - name: "NS_PASSWORD"
                valueFrom:
                secretKeyRef:
                  name: nslogin
                  key: password
              - name: "EULA"
                value: "yes"
              - name: POD_NAME
                valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
              - name: POD_NAMESPACE
                valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            args:
              - --ipam citrix-ipam-controller
            imagePullPolicy: Always
    
  3. Implemente el Citrix Ingress Controller mediante el archivo YAML modificado con el siguiente comando:

    kubectl create -f citrix-k8s-ingress-controller.yaml
    

    Para obtener más información sobre cómo implementar el Citrix Ingress Controller, consulte Implementar Citrix Ingress Controller.

Paso 3: Implementar el controlador de IPAM

Realice los siguientes pasos para implementar el controlador de IPAM.

  1. Cree un archivo denominado citrix-ipam-controller.yaml con la siguiente configuración:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: citrix-ipam-controller
      namespace: kube-system
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: citrix-ipam-controller
      template:
        metadata:
          labels:
            app: citrix-ipam-controller
        spec:
          serviceAccountName: citrix-ipam-controller
          containers:
          - name: citrix-ipam-controller
            image: quay.io/citrix/citrix-ipam-controller:1.0.3
            env:
            # This IPAM controller takes envirnment variable VIP_RANGE. IPs in this range are used to assign values for IP range
            - name: "VIP_RANGE"
              value: '[["10.217.6.115-10.217.6.117"], {"one-ip": ["5.5.5.5"]}, {"two-ip": ["6.6.6.6", "7.7.7.7"]}]'
            # The IPAM controller can also be configured with name spaces for which it would work through the environment variable
            # VIP_NAMESPACES, This expects a set of namespaces passed as space separated string
            imagePullPolicy: Always
    

    El manifiesto contiene dos variables de entorno VIP_RANGE y VIP_NAMESPACES. Puede especificar el intervalo de direcciones IP redirigibles adecuado con un CIDR válido en VIP_RANGE. Si es necesario, también puede especificar un conjunto de espacios de nombres en VIP_NAMESPACES para que el controlador de IPAM asigne direcciones solo para servicios o recursos de Ingress de espacios de nombres específicos.

  2. Implemente el controlador de IPAM mediante el siguiente comando:

    kubectl crea -f citrix-ipam-controller.yaml

Paso 4: Implementar los recursos de Ingress

Realice los siguientes pasos para implementar una aplicación de ejemplo y un recurso de Ingress.

  1. Implemente la aplicación Guestbook mediante el siguiente comando:

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/guestbook/guestbook-all-in-one.yaml
    
  2. Cree el archivo YAML de entrada del libro de visitas con la definición de recursos de entrada para enviar tráfico al front-end de la aplicación de libro de visitas.

    A continuación se muestra un ejemplo de YAML:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook-ingress
      annotations:
    annotations:
      ingress.citrix.com/ipam-range: "two-ip"
      #ingress.citrix.com/frontend-ip: "5.5.5.5"
      kubernetes.io/ingress.class: "cic-vpx"
    spec:
      rules:
      - host:  www.guestbook.com
        http:
          paths:
          - path: /
            backend:
              serviceName: frontend
              servicePort: 80
    
  3. Implemente el recurso Ingress.

    kubectl create -f guestbook-ingress.yaml
    

Múltiples asignaciones de direcciones IP

Para los recursos de entrada, se puede asignar una dirección IP varias veces, ya que un solo csvserver puede gestionar varios recursos de entrada. Si el intervalo de IP especificado tiene solo una dirección IP, se asigna varias veces. Sin embargo, si el intervalo de IP con nombre consta de varias direcciones IP, solo una de ellas se asigna constantemente.

Para facilitar las asignaciones múltiples, el controlador de IPAM realiza un seguimiento de las direcciones IP asignadas. El controlador de IPAM coloca una dirección IP en el grupo gratuito solo cuando se liberan todas las asignaciones de esa dirección IP por parte de los recursos de Ingress.

Asignaciones por diferentes recursos

Ambos servicios de tipo LoadBalancer y Ingress pueden usar el controlador de IPAM para asignaciones de IP al mismo tiempo. Si un tipo de recurso asigna una dirección IP, no está disponible para un recurso de otro tipo. Sin embargo, varios recursos de entrada pueden usar la misma dirección IP.

Administración de direcciones IP mediante el controlador de Citrix IPAM para recursos de entrada