Desplegar NetScaler Ingress Controller para NetScaler con particiones de administración

Last published : Oct 02, 2026
NetScaler Ingress Controller se utiliza para configurar automáticamente uno o varios NetScaler basándose en la configuración del recurso Ingress. El dispositivo NetScaler de entrada (MPX o VPX) se puede dividir en entidades lógicas llamadas particiones de administración, donde cada partición se puede configurar y utilizar como un dispositivo NetScaler independiente. Para obtener más información, consulte Partición de administración. NetScaler Ingress Controller también se puede implementar para configurar NetScaler con particiones de administración.
Para NetScaler con particiones de administración, debe implementar una única instancia de NetScaler Ingress Controller para cada partición. Además, la partición debe estar asociada a un usuario de partición específico de la instancia de NetScaler Ingress Controller.
Nota:
NetScaler Metrics Exporter admite la exportación de métricas desde las particiones de administración de NetScaler.

Requisitos previos

Asegúrese de que:
  • Las particiones de administración están configuradas en el dispositivo NetScaler. Para obtener instrucciones, consulte Configurar particiones de administración.
  • Cree un usuario de partición específicamente para NetScaler Ingress Controller. NetScaler Ingress Controller configura el NetScaler utilizando esta cuenta de usuario de partición. Asegúrese de no asociar este usuario de partición a otras particiones en el dispositivo NetScaler.
    Nota:
    Para los casos de uso relacionados con SSL en la partición de administración, asegúrese de utilizar NetScaler versión 12.0–56.8 y posteriores.

Para desplegar NetScaler Ingress Controller para NetScaler con particiones de administración

  1. Descargue el archivo citrix-k8s-ingress-controller.yaml utilizando el siguiente comando:
    wget  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml
  2. Edite el archivo citrix-k8s-ingress-controller.yaml e introduzca los valores para las siguientes variables de entorno:
    Variable de entorno Obligatorio u Opcional Descripción
    NS_IP Obligatorio La dirección IP del dispositivo NetScaler. Para obtener más detalles, consulte Requisitos previos.
    NS_USER y NS_PASSWORD Obligatorio El nombre de usuario y la contraseña del usuario de la partición que ha creado para el NetScaler Ingress Controller. Para obtener más detalles, consulte Requisitos previos.
    NS_VIP Obligatorio NetScaler Ingress Controller utiliza la dirección IP proporcionada en esta variable de entorno para configurar una dirección IP virtual para el NetScaler que recibe el tráfico de Ingress. Nota: NS_VIP actúa como un mecanismo de reserva cuando la anotación frontend-ip no se proporciona en Ingress YAML. Solo compatible con Ingress.
    NS_SNIPS Opcional Especifica las direcciones SNIP en el dispositivo NetScaler o las direcciones SNIP en una partición de administración específica en el dispositivo NetScaler.
    NS_ENABLE_MONITORING Obligatorio Establezca el valor Yes para supervisar NetScaler. Nota: Asegúrese de deshabilitar la supervisión de NetScaler para NetScaler con particiones de administración. Establezca el valor en No.
    EULA Obligatorio El Acuerdo de licencia de usuario final. Especifique el valor como Yes.
    Kubernetes_url Opcional La URL del kube-apiserver que NetScaler Ingress Controller utiliza para registrar los eventos. Si no se especifica el valor, NetScaler Ingress Controller utiliza la dirección IP interna del kube-apiserver.
    LOGLEVEL Opcional Los niveles de registro para controlar los registros generados por NetScaler Ingress Controller. Por defecto, el valor se establece en DEBUG. Los valores admitidos son: CRITICAL, ERROR, WARNING, INFO y DEBUG. Para obtener más información, consulte Niveles de registro
    NS_PROTOCOL y NS_PORT Opcional Define el protocolo y el puerto que debe utilizar NetScaler Ingress Controller para comunicarse con NetScaler. Por defecto, NetScaler Ingress Controller utiliza HTTPS en el puerto 443. También puede utilizar HTTP en el puerto 80.
    ingress-classes Opcional Si se utilizan varios equilibradores de carga de entrada para equilibrar diferentes recursos de entrada. Puede usar esta variable de entorno para especificar el NetScaler Ingress Controller para configurar NetScaler asociado a una clase de entrada específica. Para obtener información sobre las clases de entrada, consulte Compatibilidad con clases de entrada
  3. Una vez que actualice las variables de entorno, guarde el archivo YAML e impleméntelo con el siguiente comando:
    kubectl create -f citrix-k8s-ingress-controller.yaml
  4. verificar si NetScaler Ingress Controller se implementa correctamente mediante el siguiente comando:
    kubectl get pods --all-namespaces

Caso de uso: Cómo entregar de forma segura aplicaciones basadas en microservicios multiinquilino mediante NetScaler Console en particiones

Puede aislar el tráfico de entrada entre diferentes aplicaciones basadas en microservicios con la partición de NetScaler Consolein mediante NetScaler Ingress Controller. La partición de NetScaler Consolein permite la multitenencia a nivel de software en una única instancia de NetScaler. Cada partición tiene su propio plano de control y plano de red.
Puede implementar una instancia de NetScaler Ingress Controller en cada espacio de nombres de un clúster.
Por ejemplo, imagine que tiene dos espacios de nombres en un clúster de Kubernetes y desea aislar estos espacios de nombres entre sí bajo dos administradores diferentes. Puede usar la función de partición de administrador para separar estos dos espacios de nombres. Cree el espacio de nombres 1 y el espacio de nombres 2 e implemente NetScaler Ingress Controller por separado en ambos espacios de nombres.
Las instancias de NetScaler Ingress Controller proporcionan instrucciones de configuración a las particiones de NetScaler respectivas mediante la cuenta de usuario del sistema especificada en el manifiesto YAML.
NetScaler gestionando la carga de trabajo del clúster de Kubernetes mediante particiones de administrador
En este ejemplo, las aplicaciones de ejemplo apache y guestbook se implementan en dos espacios de nombres diferentes (espacio de nombres 1 y espacio de nombres 2, respectivamente) en un clúster de Kubernetes. Ambos equipos de aplicaciones, apache y guestbook, quieren administrar su carga de trabajo de forma independiente y no quieren compartir recursos. La partición de NetScaler Consolein ayuda a lograr la multitenencia y, en este ejemplo, se utilizan dos particiones (default, partition1) para administrar la carga de trabajo de ambas aplicaciones por separado.
Se aplican los siguientes requisitos previos:
  • Asegúrese de haber configurado las particiones de administrador en el dispositivo NetScaler. Para obtener instrucciones, consulte Configurar particiones de administrador.
  • Asegúrese de crear una cuenta de usuario de partición específicamente para NetScaler Ingress Controller. NetScaler Ingress Controller configura el NetScaler utilizando esta cuenta de usuario de partición. Asegúrese de no asociar este usuario de partición a otras particiones en el dispositivo NetScaler.

Ejemplo

El siguiente escenario de ejemplo muestra cómo implementar diferentes aplicaciones dentro de diferentes espacios de nombres en un clúster de Kubernetes y cómo la solicitud puede aislarse de ADC utilizando la partición de administración.
En este ejemplo, se implementan dos aplicaciones de ejemplo en dos espacios de nombres diferentes en un clúster de Kubernetes. En este ejemplo, se utiliza una partición predeterminada en NetScaler para la aplicación apache y la partición de administración p1 para la aplicación guestbook.

Crear espacios de nombres

Cree dos espacios de nombres ns1 y ns2 utilizando los siguientes comandos:
kubectl create namespace ns1
kubectl create namespace ns2

Configuraciones en el espacio de nombres ns1

  1. Implemente la aplicación apache en ns1.
    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns1

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: apache-ns1
      name: apache-ns1
      namespace: ns1
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: apache-ns1
      template:
        metadata:
          labels:
            app: apache-ns1
        spec:
          containers:
          - image: httpd
            name: httpd
    ---

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      labels:
        app: apache-ns1
      name: apache-ns1
      namespace: ns1
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: apache-ns1
  2. Implemente NetScaler Ingress Controller en ns1.
    Puede utilizar el archivo YAML para implementar NetScaler Ingress Controller o utilizar el gráfico de Helm.
    Asegúrese de utilizar las credenciales de usuario que están vinculadas a la partición predeterminada.
    helm install cic-def-part-ns1 citrix/citrix-ingress-controller --set nsIP=<nsIP of ADC>,license.accept=yes,adcCredentialSecret=nslogin,ingressClass[0]=citrix-def-part-ns1 --namespace ns1
  3. Implemente el recurso Ingress.
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-apache-ns1
      namespace: ns1
      annotations:
        ingress.citrix.com/frontend-ip: "< ADC VIP IP >"
    spec:
      ingressClassName: "citrix-def-part-ns1"
      rules:
      - host: apache-ns1.com
        http:
          paths:
          - backend:
              service:
                name: apache-ns1
                port:
                  number: 80
            pathType: Prefix
            path: /index.html
  4. NetScaler Ingress Controller en ns1 configura las entidades ADC en la partición predeterminada.

Configuraciones en el espacio de nombres ns2

  1. Implemente la aplicación guestbook en ns2.
    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns2
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-master
      namespace: ns2
      labels:
        app: redis
        tier: backend
        role: master
    spec:
      ports:
      - port: 6379
        targetPort: 6379
      selector:
        app: redis
        tier: backend
        role: master
    ---
    apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
    kind: Deployment
    metadata:
      name: redis-master
      namespace: ns2
    spec:
      selector:
        matchLabels:
          app: redis
          role: master
          tier: backend
      replicas: 1
      template:
        metadata:
          labels:
            app: redis
            role: master
            tier: backend
        spec:
          containers:
          - name: master
            image: k8s.gcr.io/redis:e2e  # or just image: redis
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 6379
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-slave
      namespace: ns2
      labels:
        app: redis
        tier: backend
        role: slave
    spec:
      ports:
      - port: 6379
      selector:
        app: redis
        tier: backend
        role: slave
    ---
    apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
    kind: Deployment
    metadata:
      name: redis-slave
      namespace: ns2
    spec:
      selector:
        matchLabels:
          app: redis
          role: slave
          tier: backend
      replicas: 2
      template:
        metadata:
          labels:
            app: redis
            role: slave
            tier: backend
        spec:
          containers:
          - name: slave
            image: gcr.io/google_samples/gb-redisslave:v1
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            env:
            - name: GET_HOSTS_FROM
              value: dns
              # If your cluster config does not include a dns service, then to
              # instead access an environment variable to find the master
              # service's host, comment out the 'value: dns' line above, and
              # uncomment the line below:
              # value: env
            ports:
            - containerPort: 6379
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: frontend
      namespace: ns2
      labels:
        app: guestbook
        tier: frontend
    spec:
      # if your cluster supports it, uncomment the following to automatically create
      # an external load-balanced IP for the frontend service.
      # type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: guestbook
        tier: frontend
    ---
    apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
    kind: Deployment
    metadata:
      name: frontend
      namespace: ns2
    spec:
      selector:
        matchLabels:
          app: guestbook
          tier: frontend
      replicas: 3
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: gcr.io/google-samples/gb-frontend:v4
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            env:
            - name: GET_HOSTS_FROM
              value: dns
              # If your cluster config does not include a dns service, then to
              # instead access environment variables to find service host
              # info, comment out the 'value: dns' line above, and uncomment the
              # line below:
              # value: env
            ports:
            - containerPort: 80
  2. Implemente NetScaler Ingress Controller en el espacio de nombres ns2.
    Asegúrese de utilizar las credenciales de usuario que están vinculadas a la partición p1.
    helm install cic-adm-part-p1 citrix/citrix-ingress-controller --set nsIP=&lt;nsIP of ADC>,nsSNIPS='[&lt;SNIPs in partition p1>]',license.accept=yes,adcCredentialSecret=admin-part-user-p1,ingressClass[0]=citrix-adm-part-ns2 --namespace ns2
  3. Desplegar ingress para la aplicación guestbook.
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
      ingress.citrix.com/frontend-ip: "&lt;VIP in partition 1>"
      name: guestbook-ingress
      namespace: ns2
    spec:
      ingressClassName: citrix-adm-part-ns2
      rules:
      - host: www.guestbook.com
        http:
          paths:
          - backend:
              service:
                name: frontend
                port:
                  number: 80
            path: /
            pathType: Prefix
  4. NetScaler Ingress Controller en ns2 configura las entidades ADC en la partición p1.