Ingress Controller de Citrix ADC

Exponer servicios de tipo LoadBalancer

Descripción general de los servicios de tipo LoadBalancer

En un entorno de Kubernetes, un microservicio se implementa como un conjunto de pods que se crean y destruyen de forma dinámica. Dado que el conjunto de pods que hacen referencia a un microservicio cambia constantemente, Kubernetes proporciona una abstracción lógica conocida como servicio para exponer el microservicio que se ejecuta en un conjunto de pods. Un servicio define un conjunto lógico de pods, así como directivas para acceder a ellos.

Un servicio de tipo LoadBalancer es la forma más sencilla de exponer un microservicio dentro de un clúster de Kubernetes al mundo externo. Los servicios de tipo LoadBalancer se admiten de forma nativa en implementaciones de Kubernetes en nubes públicas como AWS, GCP o Azure. En las implementaciones en la nube, cuando creas un servicio de tipo LoadBalancer, se asigna un equilibrador de carga administrado en la nube al servicio. A continuación, el servicio se expone mediante el equilibrador de carga.

Solución Citrix para servicios de tipo LoadBalancer

Puede haber varias situaciones en las que quiera implementar su clúster de Kubernetes en un entorno físico o local en lugar de implementarlo en la nube pública. Cuando ejecuta sus aplicaciones en clústeres de Kubernetes bare metal, es mucho más fácil redirigir el tráfico TCP o UDP mediante un servicio de tipo LoadBalancer que con Ingress. Incluso para el tráfico HTTP, a veces es más conveniente que Ingress. Sin embargo, no hay una implementación de equilibrador de carga disponible de forma nativa para clústeres de Kubernetes bare metal. Citrix proporciona una forma de equilibrar la carga de dichos servicios mediante el Citrix Ingress Controller de Citrix y Citrix ADC.

En la solución Citrix para servicios de tipo LoadBalancer, el Citrix Ingress Controller implementado dentro del clúster de Kubernetes configura un Citrix ADC implementado fuera del clúster para equilibrar la carga del tráfico entrante. Con la solución Citrix, puede equilibrar la carga del tráfico entrante al clúster de Kubernetes, independientemente de si la implementación se realiza en una nube bare metal, local o pública. Dado que el Citrix Ingress Controller proporciona una administración de direcciones IP flexible que permite la multitenencia para los ADC de Citrix, puede usar un solo Citrix ADC para equilibrar la carga de varios servicios y realizar funciones de entrada. Por lo tanto, puede maximizar la utilización de los recursos del equilibrador de carga y reducir significativamente sus gastos operativos.

Servicios de tipo LoadBalancer VS Kubernetes Ingress

La siguiente tabla resume una comparación entre Kubernetes Ingress y los servicios de tipo LoadBalancer que le ayuda a elegir la opción correcta en función de sus requisitos:

Servicios de tipo LoadBalancer Ingreso
Una forma más sencilla y rápida de exponer un servicio. Solo necesita especificar el tipo de servicio como type=LoadBalancer en la definición del servicio. Ingress proporciona funciones avanzadas, pero la implementación requiere más pasos. Debe escribir un objeto Ingress además de la definición de servicio. Además, las posibilidades de cometer errores al definir el Ingress son mayores.
Necesita una dirección IP independiente para cada servicio. Proporciona una forma de exponer varios servicios mediante una sola dirección IP.
Reenvía al servicio todo tipo de tráfico que llega al puerto especificado, independientemente de que sea HTTP, TCP o UDP. No hay filtros ni opciones para realizar redirección avanzada. Potente y rico en funciones en comparación con los servicios de tipo LoadBalancer. La entrada proporciona varias opciones de redirección. Por ejemplo, al usar la entrada, puede realizar una redirección basada en rutas y subdominio a los servicios de back-end.

¿Cómo funciona la solución Citrix para servicios de tipo LoadBalancer en clústeres bare metal

De forma predeterminada, un servicio de tipo LoadBalancer simplemente expone NodePorts para el servicio en un clúster de Kubernetes completo. No configura equilibradores de carga externos.

Citrix ofrece una solución integral para servicios de tipo LoadBalancer en un clúster de Kubernetes básico al proporcionar administración de IP y configuración de equilibrador de carga externo. Con la solución Citrix, cuando LoadBalancer se crea un servicio de tipo en el clúster completo, el Citrix Ingress Controller configura Citrix ADC fuera del clúster de Kubernetes (nivel 1) con un servidor virtual de equilibrio de carga. El servidor virtual de equilibrio de carga se configura con una dirección IP asignada automáticamente por el controlador IPAM de Citrix o especificada manualmente en la definición del servicio mediante el campo spec.loadBalancerIP. Una vez que la dirección IP esté configurada para un servicio, puede usar la dirección IP configurada para acceder al servicio de forma externa.

Administración de direcciones IP mediante el controlador IPAM

El controlador de IPAM es un contenedor proporcionado por Citrix para la administración de direcciones IP y se ejecuta en paralelo al Citrix Ingress Controller, un pod en el clúster de Kubernetes. Para los servicios de tipo LoadBalancer, puede usar el controlador de IPAM para asignar automáticamente direcciones IP a los servicios de un intervalo de direcciones IP especificado. Puede especificar este intervalo de IP en el archivo YAML al implementar el controlador de IPAM mediante YAML. El Citrix Ingress Controller configura la dirección IP asignada al servicio como una dirección IP virtual (VIP) en Citrix ADC MPX o VPX. Con esta dirección IP, puede acceder externamente al servicio.

El controlador de IPAM requiere la VIP CustomResourceDefinition (CRD) proporcionada por Citrix. La CRD de VIP contiene campos para el nombre del servicio, el espacio de nombres y la dirección IP. La CRD de VIP se utiliza para la comunicación interna entre el controlador de entrada de Citrix y el controlador de IPAM.

El siguiente diagrama muestra una implementación del equilibrador de carga de tipos de servicio en la que el controlador de IPAM se usa para asignar una dirección IP a un servicio.

Servicios de tipo LoadBalancer

Cuando se crea un nuevo servicio de tipo, Loadbalancer se producen los siguientes eventos:

  1. El Citrix Ingress Controller crea un objeto CRD de VIP para el servicio siempre que el campo loadBalancerIP del servicio esté vacío.
  2. El controlador de IPAM asigna una dirección IP para el objeto CRD de VIP.
  3. Una vez que el objeto VIP CRD se actualiza con la dirección IP, el Citrix Ingress Controller configura automáticamente Citrix ADC.

Nota:

Las definiciones de recursos personalizadas (CRD) que ofrece Citrix también admiten servicios de tipo LoadBalancer. Esto significa que puede especificar un servicio de tipo LoadBalancer como nombre de servicio cuando crea un objeto CRD y aplica la CRD al servicio.

La solución de controlador de IPAM está diseñada de tal manera que puede integrar fácilmente la solución con proveedores de DNS externos como Infoblox. Para obtener más información sobre ExternalDNS, consulte Interoperabilidad con ExternalDNS.

Exponer servicios de tipo LoadBalancer con direcciones IP asignadas por el controlador de IPAM

En este tema se proporciona información sobre cómo exponer servicios de tipo LoadBalancer con direcciones IP asignadas por el controlador de IPAM.

Para exponer un servicio de equilibrador de carga de tipo 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. Implemente el controlador de IPAM.
  4. Implemente una aplicación de ejemplo.
  5. Cree un servicio de tipo LoadBalancer para exponer la aplicación.
  6. Accede al servicio.

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.

    • 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.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cic-k8s-ingress-controller
      labels:
        app: cic-k8s-ingress-controller
    spec: 
      serviceAccountName: cic-k8s-role
      containers:
      - name: cic-k8s-ingress-controller
        image: "quay.io/citrix/citrix-k8s-ingress-controller:1.26.7"
        env:
        # Set Citrix ADC NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled) 
          - name: "NS_IP"
            value: "x.x.x.x"
            # Set the username
          - name: "NS_USER"
            valueFrom:
              secretKeyRef:
                name: nslogin
                key: username
            # Set user password
          - name: "NS_PASSWORD"
            valueFrom:
              secretKeyRef:
                name: nslogin
                key: password
            # Set log level
          - name: "EULA"
            value: "yes"
        args:
          - --ingress-classes
            citrix
          - --feature-node-watch
            false
          - --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. Descargue el archivo citrix-ipam-controller.yaml.

    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 los servicios de espacios de nombres específicos.

    Para obtener más información, consulte VIP_RANGE y VIP_NAMESPACES.

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

    kubectl create -f citrix-ipam-controller.yaml
    

Paso 4: Implementar una aplicación de ejemplo

Realice lo siguiente para implementar una apache aplicación en su clúster de Kubernetes.

Nota:

En este ejemplo, se usa una apache aplicación. Puede implementar una aplicación de muestra de su elección.

  1. Cree un archivo denominado apache-deployment.yaml con la siguiente configuración:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
       name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 8
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    
  2. Implemente la apache aplicación mediante el siguiente comando:

    kubectl create -f apache-deployment.yaml
    
  3. Comprueba si los pods se ejecutan con lo siguiente:

    kubectl get pods
    

    Salida:

    NAME                      READY   STATUS   RESTARTS   AGE
    apache-7db8f797c7-2x6jc   1/1     Running   0          8s
    apache-7db8f797c7-cdgmw   1/1     Running   0          8s
    apache-7db8f797c7-lh447   1/1     Running   0          8s
    apache-7db8f797c7-m7mhd   1/1     Running   0          8s
    apache-7db8f797c7-m9rn7   1/1     Running   0          8s
    apache-7db8f797c7-r9jgz   1/1     Running   0          8s
    apache-7db8f797c7-vwhc8   1/1     Running   0          8s
    apache-7db8f797c7-zslwv   1/1     Running   0          8s
    

Paso 5: Exponer la aplicación de ejemplo mediante un servicio de tipo LoadBalancer

Realice lo siguiente para crear un servicio (apache) de tipo LoadBalancer.

  1. Cree un archivo denominado apache-service.yaml con la siguiente configuración:

    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      type: LoadBalancer
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache
    
  2. Implemente el servicio mediante el siguiente comando:

    kubectl create -f apache-service.yaml
    

    Al crear el servicio, el controlador de IPAM asigna una dirección IP al servicio apache del intervalo de direcciones IP que había definido en la implementación del controlador de IPAM. La dirección IP asignada por el controlador de IPAM se proporciona en el campo status.loadBalancer.ingress: de la definición de servicio. El Citrix Ingress Controller configura la dirección IP asignada al servicio como una IP virtual (VIP) en Citrix ADC.

  3. Vea el servicio con el siguiente comando:

    kubectl get service apache --output yaml
    

    Salida:

    Salida del tipo de servicio LoadBalancer

Paso 6: Accede al servicio

Puede acceder al servicio apache mediante la dirección IP asignada por el controlador de IPAM al servicio. Puede encontrar la dirección IP en el campo status.loadBalancer.ingress: de la definición del servicio. Use el comando curl para acceder al servicio:

curl <IP_address>

La respuesta debe ser:

<html><body><h1>It works!</h1></body></html>

Exponer servicios de tipo LoadBalancer especificando una dirección IP

También puede exponer un servicio de tipo LoadBalancer manualmente especificando una dirección IP en la definición del servicio.

Para exponer un servicio de tipo LoadBalancer manualmente, puede especificar la dirección IP en el archivo YAML de definición de servicio de la siguiente manera.

spec:
  type: LoadBalancer
  loadBalancerIP: "<ip-address>"

Cuando crea un servicio de tipo LoadBalancer, el Citrix Ingress Controller configura la dirección IP que ha definido en el campo spec.loadBalancerIP como una dirección IP virtual (VIP) en Citrix ADC.

Ejemplo: Exponer una aplicación Apache mediante un servicio de tipo LoadBalancer especificando una dirección IP

Lleve a cabo lo siguiente:

  1. Cree un archivo denominado apache-deployment.yaml con la siguiente configuración:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 8
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    
  2. Implemente la apache aplicación mediante el siguiente comando:

    kubectl create -f apache-deployment.yaml
    
  3. Comprueba si los pods se ejecutan con lo siguiente:

    kubectl get pods
    

    Salida:

    NAME                      READY   STATUS   RESTARTS   AGE
    apache-7db8f797c7-2x6jc   1/1     Running   0          8s
    apache-7db8f797c7-cdgmw   1/1     Running   0          8s
    apache-7db8f797c7-lh447   1/1     Running   0          8s
    apache-7db8f797c7-m7mhd   1/1     Running   0          8s
    apache-7db8f797c7-m9rn7   1/1     Running   0          8s
    apache-7db8f797c7-r9jgz   1/1     Running   0          8s
    apache-7db8f797c7-vwhc8   1/1     Running   0          8s
    apache-7db8f797c7-zslwv   1/1     Running   0          8s
    
  4. Cree un servicio (apache) de tipo LoadBalancer. Cree un nombre de archivo apache-service.yaml con la siguiente configuración:

    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      loadBalancerIP: "10.217.212.16"
      type: LoadBalancer
      ports:
        - name: http
          port: 80
          targetPort: http
      selector:
        app: apache
    
  5. Implemente el servicio mediante el siguiente comando:

    kubectl create -f apache-service.yaml
    

    Al crear el servicio (apache), el Citrix Ingress Controller 192.217.212.16 se configura como una dirección IP virtual (VIP) en Citrix ADC VPX.

  6. Acceda al servicio apache mediante la dirección IP (192.217.212.16) que había asignado al servicio. Use el comando curl para acceder al servicio:

    curl 192.217.212.16
    

    La respuesta debe ser:

    <html><body><h1>It works!</h1></body></html>
    

Caso de uso de ejemplo: exponer microservicios mediante servicios de tipo LoadBalancer en una implementación de doble nivel de Citrix ADC

En este ejemplo se muestra cómo exponer los microservicios implementados en Kubernetes a clientes fuera del clúster mediante servicios de tipo LoadBalancer en una implementación de doble nivel de Citrix ADC.

Puede implementar Citrix ADC VPX, MPX o CPX como equilibrador de carga en el nivel 1 para administrar el tráfico de alta escala de norte a sur a los microservicios. En el nivel 2, puede implementar Citrix ADC CPX como un enrutador de microservicios L7 inteligente para el tráfico norte-sur y este-oeste. En este ejemplo, se utiliza un Citrix ADC VPX (servicio de tipo LoadBalancer) en el nivel 1 y un Citrix ADC CPX (entrada) en el nivel 2.

El siguiente diagrama describe la implementación de microservicios en este ejemplo. La implementación contiene tres servicios que se resaltan en colores azul, rojo y verde, respectivamente. La implementación contiene 12 pods que se ejecutan en dos nodos de trabajo. Estas implementaciones se clasifican de forma lógica mediante espacios de nombres de Kubernetes.

Implementación de microservicios de muestra

Requisitos previos

Asegúrese de lo siguiente:

Implementar microservicios mediante el servicio de Kubernetes de tipo solución LoadBalancer

  1. Clone el repositorio de GitHub en su nodo maestro con el siguiente comando:

    git clone https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices.git
    
  2. Mediante la consola CLI del nodo maestro, cree espacios de nombres con el siguiente comando:

    kubectl create -f namespace.yaml
    

    Compruebe si los espacios de nombres se crean en su clúster de Kubernetes con el siguiente comando:

    kubectl get namespaces
    

    El resultado del comando debe ser:

    Namespace

  3. En el panel de Kubernetes, implementa el rbac.yaml en el espacio de nombres predeterminado con el siguiente comando:

    kubectl create -f rbac.yaml 
    
  4. Implemente el controlador VIP CRD e IPAM para asignar automáticamente direcciones IP a los servicios de Kubernetes. Utilice el siguiente comando:

    kubectl create -f vip.yaml
    kubectl create -f ipam_deploy.yaml
    
  5. Implemente Citrix ADC CPX for hotdrinkcolddrink, y guestbook microservicios mediante los siguientes comandos:

    kubectl create -f cpx.yaml -n tier-2-adc
    kubectl create -f hotdrink-secret.yaml -n tier-2-adc
    
  6. Implemente tres tipos de microservicios de hotdrink bebidas con los siguientes comandos:

    kubectl create -f team_hotdrink.yaml -n team-hotdrink
    kubectl create -f hotdrink-secret.yaml -n team-hotdrink
    
  7. Implemente el microservicio de colddrink bebidas con los siguientes comandos:

    kubectl create -f team_colddrink.yaml -n team-colddrink
    kubectl create -f colddrink-secret.yaml -n team-colddrink
    
  8. Implemente el guestbook microservicio mediante los siguientes comandos:

    kubectl create -f team_guestbook.yaml -n team-guestbook
    
  9. Inicie sesión en Citrix ADC de nivel 1 para comprobar que la configuración no se envía desde el Citrix Ingress Controller antes de automatizar el Citrix ADC de nivel 1.

  10. Implemente el Citrix Ingress Controller de Citrix para insertar automáticamente la configuración de Citrix ADC CPX en Citrix ADC de nivel 1. En cic_vpx.yaml, cambie el valor de la variable de entorno NS_IP con la IP NS de su Citrix ADC VPX. Para obtener más información sobre la implementación del Citrix Ingress Controller, consulte Implementar el Citrix Ingress Controller mediante YAML.

    Después de actualizar el archivo cic_vpx.yaml, implemente el archivo con el siguiente comando:

    kubectl create -f cic_vpx.yaml -n tier-2-adc
    
  11. Compruebe si el controlador de IPAM ha asignado direcciones IP a los servicios de Citrix ADC CPX mediante el siguiente comando:

    kubectl obtiene svc -n tier-2-adc

  12. Agregue las siguientes entradas DNS en los archivos host de su máquina local para acceder a los microservicios a través de Internet:

     <frontend-ip from ingress_vpx.yaml> hotdrink.beverages.com
     <frontend-ip from ingress_vpx.yaml> colddrink.beverages.com
     <frontend-ip from ingress_vpx.yaml> guestbook.beverages.com
    

Ahora puede acceder a los microservicios mediante la siguiente URL: https://hotdrink.beverages.com

Servicios de café y té

Variables de entorno: controlador IPAM

En esta sección se proporciona información sobre las variables de entorno en el controlador de IPAM.

VIP_RANGE

La variable de entorno VIP_RANGE le permite definir el intervalo de direcciones IP. Puede definir un intervalo de direcciones IP o un intervalo de direcciones IP asociado a un nombre único.

Intervalo de direcciones IP

Puede definir el intervalo de direcciones IP desde una subred o varias subredes. Además, puede usar el - carácter para definir el intervalo de direcciones IP. El controlador de IPAM asigna la dirección IP de este intervalo de direcciones IP al servicio.

Los siguientes ejemplos demuestran las diversas formas en que puede definir el intervalo de direcciones IP en la variable de entorno VIP_RANGE:

To define the IP address range from a subnet:

    - name: "VIP_RANGE"
      value: '["10.xxx.xxx.18/31"]'

To define the IP address range from multiple subnets, ensure that the values are valid CIDRs for the subnets:

    - name: "VIP_RANGE"
      value: '["10.217.212.18/31",  "10.217.212.20/31", "10.217.212.16/30", "10.217.212.0/24"]'

Also, you can use dash (`-`) to define the IP address range:

    - name: "VIP_RANGE"
      value: '["10.217.212.18 - 10.217.212.21",  “10.217.212.27 - 10.217.212.31",  “10.217.213.24 - 10.217.213.32" ]'

Intervalo de direcciones IP asociado a un nombre único

Puede asignar un nombre único al intervalo de direcciones IP y definir el intervalo en la variable de entorno VIP_RANGE. Esta forma de asignar el intervalo de direcciones IP le permite diferenciar entre los intervalos de direcciones IP. Al crear los servicios de tipo, LoadBalancer puede usar la anotación service.citrix.com/ipam-range en la definición del servicio para especificar el intervalo de direcciones IP que se utilizará para la asignación de direcciones IP.

Por ejemplo, hay tres dominios, a saber Dev, Test, y Prod que tienen cargas de trabajo dedicadas para administrar. Si cada equipo quiere un intervalo diferente de direcciones IP para equilibrar la carga del tráfico de microservicios, puede asignar nombres únicos a los intervalos de direcciones IP. A continuación, puede definir los nombres en la anotación service.citrix.com/ipam-range en su definición de servicio. El servicio definido con service.citrix.com/ipam-range = 'Dev' se asigna una dirección IP del intervalo de direcciones IP asociado a Dev.

Los siguientes ejemplos demuestran las diversas formas en que puede definir el intervalo de direcciones IP asociado a un nombre único en la variable de entorno VIP_RANGE:

    - name: "VIP_RANGE"
      value: '[{"Prod": ["10.1.2.0/24"]}, {"Test": ["10.1.3.0/24"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'

Además, puede usar el - carácter para definir el intervalo de direcciones IP:

    - name: "VIP_RANGE"
      value: '[{"Prod": ["10.1.2.0 - 10.1.2.255"]}, {"Test": ["10.1.3.0 - 10.1.3.255"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'

A continuación se muestra una definición de servicio de ejemplo para demostrar el uso de la anotación service.citrix.com/ipam-range. En este ejemplo, la anotación se utiliza para asignar una dirección IP del intervalo de direcciones IP asociado con un nombre único Dev al servicio.

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.citrix.com/ipam-range: "Dev"
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      type: LoadBalancer
      selector:
        name: apache
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache

VIP_NAMESPACES

La variable de entorno VIP_NAMESPACES le permite definir el controlador de IPAM para que funcione solo para un conjunto de espacios de nombres. El controlador de IPAM asigna direcciones IP solo a los servicios creados a partir de los espacios de nombres especificados en la variable de entorno.

El siguiente ejemplo demuestra cómo se pueden especificar espacios de nombres en la variable de entorno VIP_NAMESPACES:

    - name: "VIP_NAMESPACES"
      value: 'default kube-system'

El controlador de IPAM asigna direcciones IP a los servicios creados a partir de kube-system espacios de nombres default y.

Nota:

Si no usa la variable de entorno VIP_NAMESPACES o no establece un valor, el controlador de IPAM asigna direcciones IP a los servicios creados desde todos los espacios de nombres.