Ingress Controller de Citrix ADC

Configurar perfiles HTTP, TCP o SSL en Citrix ADC

Las configuraciones como HTTP, TCP o SSL para un dispositivo Citrix ADC se pueden especificar mediante entidades individuales como el perfil HTTP, el perfilTCP o el perfilSSL, respectivamente. El perfil es una colección de configuraciones que pertenecen a los protocolos individuales, por ejemplo, el perfil HTTP es una colección de configuraciones HTTP. Ofrece facilidad de configuración y flexibilidad. En lugar de configurar los ajustes en cada entidad, puede configurarlos en un perfil y vincular el perfil a todas las entidades a las que se aplica la configuración.

El Citrix Ingress Controller le permite configurar la configuración relacionada con HTTP, TCP o SSL en el Citrix ADC de entrada mediante perfiles.

Comprender la configuración de Citrix ADC en el entorno de Kubernetes

En un entorno de Kubernetes, el Citrix ADC de entrada utiliza el servidor virtual Content Switching (CS) como front-end para el tráfico externo. Es decir, es la entidad que recibe las solicitudes del cliente. Después de procesar la solicitud, el servidor virtual de CS pasa los datos de la solicitud a una entidad de equilibrio de carga (LB). El servidor virtual LB y el grupo de servicios asociado procesan los datos de la solicitud y, a continuación, los reenvían a la aplicación apropiada (microservicio).

Debe tener una separación front end configuration para las entidades que reciben el tráfico del cliente (resaltadas como Client Plane en el diagrama) y una back end configuration para las entidades que reenvían el tráfico desde Citrix ADC a los microservicios en Kubernetes (resaltadas como Server Plane en el diagrama).

Configuración de Citrix ADC

El Citrix Ingress Controller proporciona anotaciones inteligentes individuales para las configuraciones front-end y back-end que puede usar en función de sus requisitos.

Perfil HTTP

Un perfil HTTP es una colección de configuraciones HTTP. Se configura un perfil HTTP predeterminado (nshttp_default_profile) para establecer las configuraciones HTTP que se aplican de forma predeterminada, de forma global a todos los servicios y servidores virtuales.

El Citrix Ingress Controller proporciona las siguientes dos anotaciones inteligentes para el perfil HTTP. Puede usar estas anotaciones para definir la configuración de HTTP para Citrix ADC. Cuando implementa una entrada que incluye estas anotaciones, el Citrix Ingress Controller crea un perfil HTTP derivado del perfil HTTP predeterminado (nshttp_default_profile) configurado en Citrix ADC. A continuación, aplica los parámetros que ha proporcionado en las anotaciones al nuevo perfil HTTP y aplica el perfil a Citrix ADC.

Anotación inteligente Descripción Ejemplo
ingress.citrix.com/frontend-httpprofile Use esta anotación para crear el perfil HTTP front-end (plano del cliente) ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "websocket" : "enabled"}'
ingress.citrix.com/backend-httpprofile Use esta anotación para crear el perfil HTTP back-end (Plano del servidor). ingress.citrix.com/backend-httpprofile: '{"app-1": {"dropinvalreqs":"enabled", "websocket" : "enabled"}}'
  Nota: Asegúrese de habilitar manualmente los parámetros globales relacionados con HTTP en Citrix ADC. Por ejemplo, para usar HTTP2 en el back-end (plano del servidor), asegúrese de que puede habilitar el parámetro HTTP2Serverside global en Citrix ADC. Para obtener más información, consulte Configuración de HTTP2.  

Perfil TCP

Un perfil TCP es una colección de configuraciones TCP. Se configura un perfil TCP predeterminado (nstcp_default_profile) para establecer las configuraciones TCP que se aplican de forma predeterminada, de forma global a todos los servicios y servidores virtuales.

El Citrix Ingress Controller proporciona las siguientes dos anotaciones inteligentes para el perfil TCP. Puede usar estas anotaciones para definir la configuración de TCP para Citrix ADC. Cuando implementa una entrada que incluye estas anotaciones, el Citrix Ingress Controller crea un perfil TCP derivado del perfil TCP predeterminado (nstcp_default_profile) configurado en Citrix ADC. A continuación, aplica los parámetros que ha proporcionado en las anotaciones al nuevo perfil TCP y aplica el perfil a Citrix ADC.

Anotación inteligente Descripción Ejemplo
ingress.citrix.com/frontend-tcpprofile Use esta anotación para crear el perfil TCP front-end (plano de cliente) ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" : "enabled"}'
ingress.citrix.com/backend-tcpprofile Use esta anotación para crear el perfil TCP back-end (Plano del servidor) ingress.citrix.com/backend-tcpprofile: '{"citrix-svc":{"ws":"enabled", "sack" : "enabled"}}'

Perfil SSL

Un perfil SSL es una colección de configuraciones para las entidades SSL. Ofrece facilidad de configuración y flexibilidad. En lugar de configurar los ajustes en cada entidad, puede configurarlos en un perfil y vincular el perfil a todas las entidades a las que se aplica la configuración.

Requisitos previos

En Citrix ADC, de forma predeterminada, el perfil SSL no está habilitado en el Citrix ADC de entrada. Asegúrese de habilitar manualmente el perfil SSL en Citrix ADC. Habilitar el perfil SSL anula toda la configuración relacionada con SSL existente en Citrix ADC; para obtener información detallada sobre los perfiles SSL, consulte Perfiles SSL.

Los perfiles SSL se clasifican en dos categorías:

  • Perfiles front-end: contienen parámetros aplicables a la entidad front-end. Es decir, se aplican a la entidad que recibe solicitudes de un cliente.
  • Perfiles back-end: contienen parámetros aplicables a la entidad back-end. Es decir, se aplican a la entidad que envía solicitudes de clientes a un servidor.

Una vez que habilita los perfiles SSL en Citrix ADC, se aplica un perfil front-end predeterminado (ns_default_ssl_profile_frontend) al servidor virtual SSL y se aplica un perfil back-end predeterminado (ns_default_ssl_profile_backend) al servicio o grupo de servicios en Citrix ADC.

El Citrix Ingress Controller proporciona las siguientes dos anotaciones inteligentes para el perfil SSL. Puede usar estas anotaciones para personalizar el perfil front-end (ns_default_ssl_profile_frontend) y el perfil back-end (ns_default_ssl_profile_backend) predeterminados según sus requisitos:

Anotación inteligente Descripción Ejemplo
ingress.citrix.com/frontend-sslprofile Use esta anotación para crear el perfil SSL front-end (plano de cliente). El perfil SSL front-end solo es necesario si ha habilitado TLS en el plano del cliente. ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "tls12" : "enabled"}'
ingress.citrix.com/backend-sslprofile Use esta anotación para crear el perfil SSL de back-end (plano del servidor). El perfil de backend SSL solo es necesario si usa la anotación ingress.citrix.com/secure-backend para el back-end. ingress.citrix.com/backend-sslprofile: '{"citrix-svc":{"hsts":"enabled", "tls1" : "enabled"}}'

Importante: El perfil SSL no le permite configurar el certificado SSL.

Configuración del perfil front-end mediante anotaciones

Los perfiles front-end HTTP, TCP y SSL se adjuntan al servidor virtual de conmutación de contenido del lado del cliente o al servidor virtual SSL. Dado que puede haber múltiples entradas que usan el mismo frontend-ip y también usan el mismo servidor virtual de conmutación de contenido en el front-end, puede haber posibles conflictos que pueden surgir de la anotación de perfiles de front-end especificada en múltiples entradas que comparten la dirección IP del extremo frontal.

A continuación, se muestran las pautas para las anotaciones de perfiles front-end para HTTP, TCP y SSL.

  • Para todas las entradas con la misma dirección IP de front-end, se recomienda tener el mismo valor para que el perfil de front-end se especifique en todas las entradas.
  • Si hay varias entradas que comparten la dirección IP de front-end, también se puede crear una entrada separada para cada dirección IP de front-end con reglas vacías (conocidas como entrada de front-end) donde se puede especificar la anotación IP de front-end como se muestra en el siguiente ejemplo. No es necesario especificar la anotación del perfil front-end en cada definición de entrada.

    • Para crear una entrada front-end para un servidor virtual de tipo HTTP, consulte el siguiente ejemplo:

       #Sample ingress manifest for the front-end configuration for an HTTP virtual server
       #The values for the parameters are for demonstration purpose only.
      
              
       apiVersion: networking.k8s.io/v1
       kind: Ingress
       metadata:
         name: frontend-ingress
         annotations:
         # /* The CS virtual server is derived from the combination of
       insecure-port/secure-port, frontend-ip, and
       secure-service-type/insecure-service-type annotations. */
           ingress.citrix.com/insecure-port: "80"
           ingress.citrix.com/frontend-ip: "x.x.x.x"
           ingress.citrix.com/frontend-httpprofile:'{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
           ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" :
       "enabled"}'
       spec:
         rules:
          # Empty rule
         - host:
      
    • To create a front-end ingress for SSL type service, see the following example:

       #Sample ingress manifest for the front-end configuration for an SSL virtual server
       #The values for the parameters are for demonstration purpose only.
              
              
       apiVersion: networking.k8s.io/v1
       kind: Ingress
       metadata:
         name: frontend-ingress
         annotations:
         #The CS virtual server is derived from the combination of
         #insecure-port/secure-port, frontend-ip, and
         #secure-service-type/insecure-service-type annotations.
           ingress.citrix.com/insecure-port: "80"
           ingress.citrix.com/secure-port: "443" 
           ingress.citrix.com/frontend-ip: "x.x.x.x"
           ingress.citrix.com/frontend-sslprofile:
       '{"tls13":"enabled", "hsts" : "enabled"}'
           ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" :
       "enabled"}'
       spec:
         rules:
         - host:
           #Presense of tls is considered as a secure service
         tls:
         - hosts:
      
  • Si hay valores diferentes para las mismas anotaciones de perfil front-end en varias entradas, se usa el siguiente orden para vincular los perfiles al servidor virtual.

    • Si alguna definición de entrada tiene una anotación front-end con perfiles preconfigurados, está enlazada al servidor virtual.
    • Combine todos los (clave, valores) de diferentes entradas de la misma dirección IP de front-end y use el resultante (clave, valor) para la anotación inteligente de perfiles de front-end.
    • Si hay un conflicto para la misma clave debido a valores diferentes de entradas diferentes, se elige un valor aleatoriamente y se ignoran otros valores. Debe evitar tener valores contradictorios.
  • Si no se especifica ninguna anotación de perfiles de front-end en ninguna de las entradas que comparten la dirección IP de front-end, entonces los valores globales de ConfigMap que se usan FRONTEND_HTTP_PROFILE, FRONTEND_TCP_PROFILE o FRONTEND_SSL_PROFILE se usan para los perfiles de front-end HTTP, TCP y SSL, respectivamente.

Configuración del perfil front-end global mediante variables ConfigMap

La variable ConfigMap se usa para el perfil front-end si la anotación inteligente de los perfiles front-end no la anula en una o más entradas que comparten una dirección IP front-end. Si necesita habilitar o inhabilitar una función mediante cualquier perfil front-end para todas las entradas, puede usar las variables FRONTEND_HTTP_PROFILE, FRONTEND_TCP_PROFILE o FRONTEND_SSL_PROFILE para los perfiles HTTP, TCP y SSL, respectivamente. Por ejemplo, si quiere habilitar TLS 1.3 para todas las entradas SSL, puede usar FRONTEND_SSL_PROFILE para establecer este valor en lugar de usar la anotación inteligente en cada definición de entrada. Consulte la documentación de ConfigMap para saber cómo usar ConfigMap con el Citrix Ingress Controller.

Configuración mediante FRONTEND_HTTP_PROFILE

La variable FRONTEND_HTTP_PROFILE se utiliza para establecer las opciones HTTP para el servidor virtual front-end (plano cliente), a menos que la anotación ingress.citrix.com/frontend-httpprofile inteligente la anule en la definición de entrada.

Para usar un perfil existente en Citrix ADC o usar un perfil HTTP integrado.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_HTTP_PROFILE: |
    preconfigured: my_http_profile
<!--NeedCopy-->

En este ejemplo, my_http_profile es un perfil HTTP preexistente en Citrix ADC.

Como alternativa, puede establecer los parámetros del perfil como se especifica a continuación. Consulte la documentación de NITRO del perfil HTTP para ver todos los valores clave posibles.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_HTTP_PROFILE: |
    config:
      dropinvalreqs: 'ENABLED'
      websocket: 'ENABLED'
<!--NeedCopy-->

Configuración mediante FRONTEND_TCP_PROFILE

La variable FRONTEND_TCP_PROFILE se utiliza para establecer las opciones de TCP para el servidor virtual front-end (lado del cliente), a menos que la anotación ingress.citrix.com/frontend-tcpprofile inteligente la anule en la definición de entrada.

Para usar un perfil existente en Citrix ADC o usar un perfil TCP integrado:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_TCP_PROFILE: |
    preconfigured: my_tcp_profile
<!--NeedCopy-->

En este ejemplo, my_tcp_profile es un perfil TCP preexistente en Citrix ADC.

Como alternativa, puede configurar los parámetros del perfil de la siguiente manera. Consulte la documentación de NITRO del perfil TCP de Citrix ADC para obtener todos los valores clave posibles.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_TCP_PROFILE: |
    config:
      sack: 'ENABLED'
      nagle: 'ENABLED'

<!--NeedCopy-->

Configuración mediante FRONTEND_SSL_PROFILE

La variable FRONTEND_SSL_PROFILE se utiliza para establecer las opciones de SSL para el servidor virtual front-end (lado del cliente), a menos que la anotación ingress.citrix.com/frontend-sslprofile inteligente la anule en la definición de entrada.

Nota: Para que el perfil SSL funcione correctamente, debe habilitar el perfil predeterminado en Citrix ADC mediante el comando set ssl parameter -defaultProfile ENABLED. Asegúrese de que el Citrix Ingress Controller se reinicie después de habilitar el perfil predeterminado. El perfil predeterminado se habilita automáticamente cuando Citrix ADC CPX se utiliza como dispositivo de entrada. Para obtener más información sobre el perfil predeterminado de SSL, consulte la documentación del perfil SSL.

Para usar un perfil existente en Citrix ADC o usar un perfil SSL integrado,

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_SSL_PROFILE: |
    preconfigured: my_ssl_profile
<!--NeedCopy-->

En este ejemplo, my_ssl_profile está el perfil SSL preexistente en Citrix ADC.

Nota:

El perfil frontal predeterminado (ns_default_ssl_profile_frontend) no se admite con la variable FRONTEND_SSL_PROFILE.preconfigured.

Como alternativa, puede establecer los parámetros del perfil como se muestra en el siguiente ejemplo. Consulte la documentación de NITRO del perfil SSL para obtener información sobre todos los valores clave posibles.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_SSL_PROFILE: |
    config:
      tls13: 'ENABLED'
      hsts: 'ENABLED'
<!--NeedCopy-->

El siguiente ejemplo muestra la vinculación de grupos de cifrado SSL al perfil SSL. El orden es como se especifica en la lista con la prioridad más alta que se proporciona al primero de la lista y así sucesivamente. Puede usar cualquier cifrado SSL disponible en Citrix ADC o grupos de cifrado creados por el usuario en este campo. Para obtener información sobre la lista de cifrados disponibles en Citrix ADC, consulte Cifrados en Citrix ADC.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_SSL_PROFILE: |
    config:
      tls13: 'ENABLED'
      ciphers:
      - TLS1.3-AES256-GCM-SHA384
      - TLS1.3-CHACHA20-POLY1305-SHA256
<!--NeedCopy-->

Configuración back-end

Cualquier definición de entrada que incluya detalles del servicio spec:rules:host, entrada de spec:backend, etc., se considera configuración de back-end.

Manifiesto de ingreso de backend de muestra sin configuración TLS


#The values for the parameters are for demonstration purpose only.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
  # /* The CS virtual server is derived from the combination of insecure-port/secure-port, frontend-ip, and secure-service-type/insecure-service-type annotations. */
    ingress.citrix.com/backend-httpprofile: '{"apache":{"markhttp09inval": "disabled"}}'
    ingress.citrix.com/backend-tcpprofile: '{"apache":{"sack":"enabled"}}'
    ingress.citrix.com/frontend-ip: 'VIP_IP'
    ingress.citrix.com/insecure-port: "80"
  name: apache-ingress
spec:
  rules:
  - host: www.apachetest.com
    http:
      paths:
      - backend:
          service:
            name: apache
            port:
              number: 80
        path: /
        pathType: Prefix
<!--NeedCopy-->

Manifiesto de ingreso de backend de muestra con configuración TLS


#The values for the parameters are for demonstration purpose only.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
  # /* The CS virtual server is derived from the combination of insecure-port/secure-port, frontend-ip, and secure-service-type/insecure-service-type annotations. */
    ingress.citrix.com/backend-httpprofile: '{"hotdrink":{"markhttp09inval": "disabled"}}'
    ingress.citrix.com/backend-sslprofile: '{"hotdrink":{"snienable": "enabled"}}'
    ingress.citrix.com/backend-tcpprofile: '{"hotdrink":{"sack":"enabled"}}'
    ingress.citrix.com/frontend-ip: 'VIP_IP'
    ingress.citrix.com/secure-backend: '{"hotdrink":"true"}'
    ingress.citrix.com/secure-port: "443"
  name: hotdrink-ingress
spec:
  rules:
  - host: hotdrinks.beverages.com
    http:
      paths:
      - backend:
          service:
            name: hotdrink
            port:
              number: 443
        path: /
        pathType: Prefix
  tls:
  - secretName: hotdrink.secret
<!--NeedCopy-->

Usar perfiles definidos por el usuario integrados o existentes en el Citrix ADC de entrada

Puede utilizar las anotaciones inteligentes individuales para configurar los perfiles integrados o los perfiles definidos por el usuario existentes en el Citrix ADC de entrada para las configuraciones front-end y back-end según sus requisitos. Para obtener más información sobre los perfiles integrados, consulte Perfiles TCPintegrados y Perfiles HTTP integrados.

Para la configuración front-end, puede proporcionar el nombre de los perfiles integrados o existentes definidos por el usuario en el Citrix ADC de entrada. A continuación se muestra un ejemplo de anotación de entrada:

ingress.citrix.com/frontend-httpprofile: "http_preconf_profile1"

Donde, ‘http_preconf_profile1’ es el perfil que existe en Ingress Citrix ADC.

Para la configuración de back-end, debe proporcionar el nombre del perfil integrado o existente en el Citrix ADC de entrada y el nombre del servicio de back-end. A continuación se muestra un ejemplo de anotación de entrada:

ingress.citrix.com/backend-httpprofile: '{"citrix-svc": "http_preconf_profile1"}'

Donde, ‘http_preconf_profile1’ es el perfil que existe en Ingress Citrix ADC y citrix-svc es el nombre del servicio back-end.

Perfil HTTP de ejemplo

ingress.citrix.com/frontend-httpprofile: "http_preconf_profile"
ingress.citrix.com/backend-httpprofile: '{"citrix-svc": "http_preconf_profile"}'

Perfil TCP de ejemplo

ingress.citrix.com/frontend-tcpprofile: "tcp_preconf_profile"
ingress.citrix.com/backend-tcpprofile: '{"citrix-svc":"tcp_preconf_profile"}'

Perfil SSL de ejemplo

ingress.citrix.com/frontend-sslprofile: "ssl_preconf_profile"
ingress.citrix.com/backend-sslprofile: '{"citrix-svc":"ssl_preconf_profile"}'

Ejemplo para aplicar perfiles HTTP, SSL y TCP

En este ejemplo se muestra cómo aplicar perfiles HTTP, SSL o TCP.

Para crear perfiles SSL, TCP y HTTP y enlazarlos al recurso Ingress definido, lleve a cabo los siguientes pasos:

  1. Defina el recurso de entrada front-end con los perfiles requeridos. En este recurso Ingress, el back-end y el TLS no están definidos.

    Se proporciona un ejemplo de YAML (ingress1.yaml) de la siguiente manera:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress-vpx1
        annotations:
          kubernetes.io/ingress.class: "vpx"
          ingress.citrix.com/insecure-termination: "allow"
          ingress.citrix.com/frontend-ip: "10.221.36.190"
          ingress.citrix.com/frontend-tcpprofile: '{"ws":"disabled", "sack" : "disabled"}'
          ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
          ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "tls13" : "enabled"}'
      spec:
        tls:
        - hosts:
        rules:
        - host:
      <!--NeedCopy-->
    
  2. Implemente el recurso de entrada front-end.

    kubectl create -f ingress1.yaml

  3. Defina el recurso de entrada secundario con la misma dirección IP de front-end y TLS y el back-end definido que crea la definición del recurso de equilibrio de carga.

    Se proporciona un ejemplo de YAML (ingress2.yaml) de la siguiente manera:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress-vpx2
        annotations:
        kubernetes.io/ingress.class: "vpx"
        ingress.citrix.com/insecure-termination: "allow"
        ingress.citrix.com/frontend-ip: "10.221.36.190"
      spec:
        tls:
        - secretName: <hotdrink-secret>
        rules:
        - host:  hotdrink.beverages.com
          http:
            paths:
            - path:
              backend:
                serviceName: frontend-hotdrinks
                servicePort: 80
      <!--NeedCopy-->
    
  4. Implemente el recurso de entrada de back-end.

     kubectl create -f ingress2.yaml
    
  5. Una vez que se aplican las YAML, se crean las entidades, los perfiles y los recursos de entrada correspondientes y se vinculan al recurso de entrada.

    # show cs vserver <k8s150-10.221.36.190_443_ssl>
        
      k8s150-10.221.36.190_443_ssl (10.221.36.190:443) - SSL Type: CONTENT 
      State: UP
      Last state change was at Thu Apr 22 20:14:44 2021
      Time since last state change: 0 days, 00:10:56.850
      Client Idle Timeout: 180 sec
      Down state flush: ENABLED
      Disable Primary Vserver On Down : DISABLED
      Comment: uid=QEYQI2LDW5WR4A6P3NSZ37XICKOJKV4HPEM2H4PSK4HWA3JQWCLQ====
      TCP profile name: k8s150-10.221.36.190_443_ssl
      HTTP profile name: k8s150-10.221.36.190_443_ssl
      Appflow logging: ENABLED
      State Update: DISABLED
      Default:   Content Precedence: RULE
      Vserver IP and Port insertion: OFF 
      L2Conn: OFF Case Sensitivity: ON
      Authentication: OFF
      401 Based Authentication: OFF
      Push: DISABLED Push VServer: 
      Push Label Rule: none
      Persistence: NONE
      Listen Policy: NONE
      IcmpResponse: PASSIVE
      RHIstate:  PASSIVE
      Traffic Domain: 0
    
      1)  Content-Switching Policy: k8s150-ingress-vpx1_tier-2-adc_443_k8s150-frontend-hotdrinks_tier-2-adc_80_svc    Priority: 200000004   Hits: 0
      Done
    

Ejemplo: agregar un certificado SNI a un servidor virtual SSL

En este ejemplo se muestra cómo agregar un único certificado SNI.

Nota:

Para que el perfil SSL funcione correctamente, debe habilitar el perfil predeterminado en Citrix ADC mediante el comando set ssl parameter -defaultProfile ENABLED. Asegúrese de que el Citrix Ingress Controller se reinicie después de habilitar el perfil predeterminado. Para obtener más información sobre el perfil predeterminado de SSL, consulte la documentación.

  1. Defina el recurso de entrada front-end con los perfiles requeridos. En este recurso Ingress, el back-end y el TLS no están definidos.

    Se proporciona un ejemplo de YAML (ingress1.yaml) de la siguiente manera:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-vpx1
      annotations:
       kubernetes.io/ingress.class: "vpx"
       ingress.citrix.com/insecure-termination: "allow"
       ingress.citrix.com/frontend-ip: "10.221.36.190"
       ingress.citrix.com/frontend-tcpprofile: '{"ws":"disabled", "sack" : "disabled"}'
       ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
       ingress.citrix.com/frontend-sslprofile: '{"snienable": "enabled", "hsts":"enabled", "tls13" : "enabled"}'
    spec:
      tls:
      - hosts:
      rules:
      - host:
    
    <!--NeedCopy-->
    
  2. Implemente el recurso de entrada front-end.

    kubectl create -f ingress1.yaml
    
  3. Defina el recurso de entrada secundario con la misma dirección IP front-end que define los certificados back-end y SNI. Si se especifican hosts, la clave de certificado especificada como nombre secreto se agrega como certificado SNI.

    Se proporciona un ejemplo de YAML (ingress2.yaml) de la siguiente manera:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-vpx2  
      annotations:
       kubernetes.io/ingress.class: "vpx"
       ingress.citrix.com/insecure-termination: "allow"
       ingress.citrix.com/frontend-ip: "10.221.36.190"
    spec:
      tls:
      - hosts:
          - hotdrink.beverages.com
        secretName: hotdrink-secret
      rules:
      - host: hotdrink.beverages.com
        http:
          paths:
          - path: /
            backend:
              serviceName: web
              servicePort: 80
    <!--NeedCopy-->
    
  4. Implemente el recurso de entrada secundario.

     kubectl create -f ingress2.yaml
    

    Si es necesario vincular varios certificados SNI a la VIP front-end, a continuación se muestra un archivo YAML de ejemplo.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-vpx-frontend
      annotations:
      kubernetes.io/ingress.class: "vpx"
      ingress.citrix.com/insecure-termination: "allow"
      ingress.citrix.com/frontend-ip: "10.221.36.190"
    spec:
      tls:
      - hosts:
          - hotdrink.beverages.com
        secretName: hotdrink-secret
      - hosts:
          - frontend.agiledevelopers.com
        secretName: <frontend-secret>
      rules:
      - host: hotdrink.beverages.com
        http:
          paths:
          - path: /
            backend:
              serviceName: web
              servicePort: 80
      - host: frontend.agiledevelopers.com
        http:
          paths:
          - path: /
            backend:
              serviceName: frontend-developers
              servicePort: 80
    

Ejemplo: grupo de cifrado SSL vinculante

En este ejemplo se muestra cómo enlazar un grupo de cifrado SSL.

Nota:

Para que el perfil SSL funcione correctamente, debe habilitar el perfil predeterminado en Citrix ADC mediante el comando set ssl parameter -defaultProfile ENABLED. Asegúrese de que el Citrix Ingress Controller se reinicie después de habilitar el perfil predeterminado.

Establezca el perfil SSL predeterminado en Citrix ADC mediante el comando set ssl parameter -defaultProfile ENABLED antes de implementar el Citrix Ingress Controller. Si ya implementó el Citrix Ingress Controller, vuelva a implementarlo. Para obtener más información sobre el perfil predeterminado de SSL, consulte la documentación.

Para obtener información sobre los cifrados compatibles en los dispositivos Citrix ADC, consulte Cifrados disponibles en los dispositivos Citrix ADC.

Para obtener información sobre cómo proteger el cifrado, consulte proteger el cifrado.

Se proporciona un ejemplo de YAML (cat frontend_ingress.yaml) de la siguiente manera:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-vpx
  annotations:
   kubernetes.io/ingress.class: "citrix"
   ingress.citrix.com/insecure-termination: "allow"
   ingress.citrix.com/frontend-ip: "10.221.36.190"
   ingress.citrix.com/frontend-tcpprofile: '{"ws":"disabled", "sack" : "disabled"}'
   ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
   ingress.citrix.com/frontend-sslprofile: '{"snienable": "enabled", "hsts":"enabled", "tls13" : "enabled", "ciphers" : [{"ciphername": "test", "cipherpriority" :"1"}]}'
spec:
  tls:
  - hosts:
  rules:
   - host:
<!--NeedCopy-->