Contrôleur d'entrée Citrix ADC

Configurez les profils HTTP, TCP ou SSL sur Citrix ADC

Les configurations telles que HTTP, TCP ou SSL pour une appliance Citrix ADC peuvent être spécifiées à l’aide d’entités individuelles telles que le profil HTTP, le profil TCPou le profil SSL respectivement. Le profil est un ensemble de paramètres relatifs aux protocoles individuels, par exemple, le profil HTTP est un ensemble de paramètres HTTP. Il offre une facilité de configuration et une flexibilité. Au lieu de configurer les paramètres de chaque entité, vous pouvez les configurer dans un profil et lier le profil à toutes les entités auxquelles les paramètres s’appliquent.

Le Citrix ingress controller vous permet de configurer la configuration associée HTTP, TCP ou SSL sur l’entrée Citrix ADC à l’aide de profils.

Comprendre la configuration Citrix ADC dans un environnement Kubernetes

Dans un environnement Kubernetes, le Citrix ADC Ingress utilise le serveur virtuel de commutation de contenu (CS) comme frontal pour le trafic externe. C’est-à-dire que c’est l’entité qui reçoit les demandes du client. Après avoir traité la demande, le serveur virtuel CS transmet les données de demande à une entité d’ équilibrage de charge (LB) . Le serveur virtuel LB et le groupe de services associé traitent les données de demande, puis les transfèrent à l’application appropriée (microservice).

Vous devez disposer d’un élément distinct front end configuration pour les entités qui reçoivent le trafic du client (mis en surbrillance comme Client Plane dans le diagramme) et d’un back end configuration pour les entités qui transfèrent le trafic de Citrix ADC vers les microservices de Kubernetes (mis en surbrillance comme Server Plane dans le diagramme).

Configuration de Citrix ADC

Le Citrix ingress controller fournit des annotations intelligentes individuelles pour les configurations frontales et dorsales que vous pouvez utiliser en fonction de vos besoins.

profil HTTP

Un profil HTTP est un ensemble de paramètres HTTP. Un profil HTTP par défaut (nshttp_default_profile) est configuré pour définir les configurations HTTP qui sont appliquées par défaut, globalement à tous les services et serveurs virtuels.

Le Citrix ingress controller fournit les deux annotations intelligentes suivantes pour le profil HTTP. Vous pouvez utiliser ces annotations pour définir les paramètres HTTP pour Citrix ADC. Lorsque vous déployez une entrée qui inclut ces annotations, le Citrix ingress controller crée un profil HTTP dérivé du profil HTTP par défaut (nshttp_default_profile) configuré sur Citrix ADC. Ensuite, il applique les paramètres que vous avez fournis dans les annotations au nouveau profil HTTP et applique le profil à Citrix ADC.

Annotation intelligente Description Échantillon
ingress.citrix.com/frontend-httpprofile Utilisez cette annotation pour créer le profil HTTP frontal (plan client) ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "websocket" : "enabled"}'
ingress.citrix.com/backend-httpprofile Utilisez cette annotation pour créer le profil HTTP principal (plan serveur). ingress.citrix.com/backend-httpprofile: '{"app-1": {"dropinvalreqs":"enabled", "websocket" : "enabled"}}'
  Remarque : Assurez-vous d’activer manuellement les paramètres globaux liés à HTTP sur Citrix ADC. Par exemple, pour utiliser HTTP2 en arrière-plan (plan serveur), assurez-vous que vous pouvez activer le paramètre HTTP2Serverside global dans Citrix ADC. Pour plus d’informations, consultez la section Configuration de HTTP2.  

profil TCP

Un profil TCP est un ensemble de paramètres TCP. Un profil TCP par défaut (nstcp_default_profile) est configuré pour définir les configurations TCP appliquées par défaut, globalement à tous les services et serveurs virtuels.

Le Citrix ingress controller fournit les deux annotations intelligentes suivantes pour le profil TCP. Vous pouvez utiliser ces annotations pour définir les paramètres TCP pour Citrix ADC. Lorsque vous déployez une entrée qui inclut ces annotations, le Citrix ingress controller crée un profil TCP dérivé du profil TCP par défaut (nstcp_default_profile) configuré sur Citrix ADC. Ensuite, il applique les paramètres que vous avez fournis dans les annotations au nouveau profil TCP et applique le profil à Citrix ADC.

Annotation intelligente Description Échantillon
ingress.citrix.com/frontend-tcpprofile Utilisez cette annotation pour créer le profil TCP frontal (plan client) ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" : "enabled"}'
ingress.citrix.com/backend-tcpprofile Utilisez cette annotation pour créer le profil TCP principal (plan serveur) ingress.citrix.com/backend-tcpprofile: '{"citrix-svc":{"ws":"enabled", "sack" : "enabled"}}'

Profil SSL

Un profil SSL est un ensemble de paramètres pour les entités SSL. Il offre une facilité de configuration et une flexibilité. Au lieu de configurer les paramètres de chaque entité, vous pouvez les configurer dans un profil et lier le profil à toutes les entités auxquelles les paramètres s’appliquent.

Conditions préalables

Sur Citrix ADC, par défaut, le profil SSL n’est pas activé sur l’entrée Citrix ADC. Assurez-vous d’activer manuellement le profil SSL sur Citrix ADC. L’activation du profil SSL remplace tous les paramètres associés SSL existants sur Citrix ADC. Pour plus d’informations sur les profils SSL, reportez-vous à la section Profils SSL.

Les profils SSL sont classés en deux catégories :

  • Profils frontaux : contenant les paramètres applicables à l’entité frontale. En d’autres termes, ils s’appliquent à l’entité qui reçoit les demandes d’un client.
  • Profils back-end : contenant les paramètres applicables à l’entité back-end. En d’autres termes, ils s’appliquent à l’entité qui envoie les demandes des clients à un serveur.

Une fois que vous avez activé les profils SSL sur Citrix ADC, un profil frontal par défaut (ns_default_ssl_profile_frontend) est appliqué au serveur virtuel SSL et un profil principal par défaut (ns_default_ssl_profile_backend) est appliqué au service ou au groupe de services sur Citrix ADC.

Le Citrix ingress controller fournit les deux annotations intelligentes suivantes pour le profil SSL. Vous pouvez utiliser ces annotations pour personnaliser le profil frontal par défaut (ns_default_ssl_profile_frontend) et le profil dorsal (ns_default_ssl_profile_backend) en fonction de vos besoins :

Annotation intelligente Description Échantillon
ingress.citrix.com/frontend-sslprofile Utilisez cette annotation pour créer le profil SSL frontal (plan client). Le profil SSL frontal n’est requis que si vous avez activé le protocole TLS sur le plan client. ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "tls12" : "enabled"}'
ingress.citrix.com/backend-sslprofile Utilisez cette annotation pour créer le profil SSL principal (plan serveur). Le profil principal SSL n’est requis que si vous utilisez l’annotation ingress.citrix.com/secure-backend pour le backend. ingress.citrix.com/backend-sslprofile: '{"citrix-svc":{"hsts":"enabled", "tls1" : "enabled"}}'

Important : Le profil SSL ne vous permet pas de configurer le certificat SSL.

Configuration du profil frontal à l’aide d’annotations

Les profils frontaux HTTP, TCP et SSL sont attachés au serveur virtuel de commutation de contenu côté client ou au serveur virtuel SSL. Étant donné qu’il peut y avoir plusieurs entrées qui utilisent le même frontend-ip serveur virtuel de commutation de contenu dans le serveur frontal, il peut y avoir des conflits pouvant résulter de l’annotation des profils frontaux spécifiée dans plusieurs entrées partageant l’adresse IP frontale.

Voici les instructions relatives aux annotations de profils frontaux pour HTTP, TCP et SSL.

  • Pour toutes les entrées ayant la même adresse IP frontale, il est recommandé d’avoir la même valeur pour que le profil frontal soit spécifié dans toutes les entrées.
  • S’il existe plusieurs entrées qui partagent l’adresse IP frontale, il est également possible de créer une entrée distincte pour chaque adresse IP frontale avec des règles vides (appelées entrée frontale) où l’on peut spécifier l’annotation IP frontale comme indiqué dans l’exemple suivant. Il n’est pas nécessaire de spécifier l’annotation du profil frontal dans chaque définition d’entrée.

    • Pour créer une entrée frontale pour un serveur virtuel de type HTTP, consultez l’exemple suivant :

       #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:
      
  • S’il existe différentes valeurs pour les mêmes annotations de profil frontal dans plusieurs entrées, l’ordre suivant est utilisé pour lier les profils au serveur virtuel.

    • Si une définition d’entrée possède une annotation frontale avec des profils préconfigurés, celle-ci est liée au serveur virtuel.
    • Fusionnez toutes les (clé, valeurs) des différentes entrées de la même adresse IP frontale et utilisez le résultat (clé, valeur) pour l’annotation intelligente des profils frontaux.
    • En cas de conflit pour la même clé en raison de valeurs différentes provenant de différentes entrées, une valeur est choisie aléatoirement et les autres valeurs sont ignorées. Vous devez éviter d’avoir des valeurs contradictoires.
  • Si aucune annotation de profil frontal n’est spécifiée dans les entrées qui partagent l’adresse IP frontale, les valeurs globales de la ConfigMap qui est FRONTEND_HTTP_PROFILE, FRONTEND_TCP_PROFILE ou FRONTEND_SSL_PROFILE est utilisée pour les profils frontaux HTTP, TCP et SSL respectivement.

Configuration du profil frontal global à l’aide de variables ConfigMap

La variable ConfigMap est utilisée pour le profil frontal si elle n’est pas remplacée par l’annotation intelligente des profils frontaux dans une ou plusieurs entrées partageant une adresse IP frontale. Si vous devez activer ou désactiver une fonctionnalité à l’aide d’un profil frontal quelconque pour toutes les entrées, vous pouvez utiliser les variables FRONTEND_HTTP_PROFILEFRONTEND_TCP_PROFILE, ou FRONTEND_SSL_PROFILE pour les profils HTTP, TCP et SSL respectivement. Par exemple, si vous souhaitez activer TLS 1.3 pour toutes les entrées SSL, vous pouvez utiliser FRONTEND_SSL_PROFILE pour définir cette valeur au lieu d’utiliser l’annotation intelligente dans chaque définition d’entrée. Consultez la documentation ConfigMap pour savoir comment utiliser ConfigMap avec le Citrix ingress controller.

Configuration à l’aide de FRONTEND_HTTP_PROFILE

La FRONTEND_HTTP_PROFILE variable est utilisée pour définir les options HTTP pour le serveur virtuel frontal (plan client), sauf si elle est remplacée par l’annotation ingress.citrix.com/frontend-httpprofile intelligente dans la définition d’entrée.

Pour utiliser un profil existant sur Citrix ADC ou utiliser un profil HTTP intégré.

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

Dans cet exemple, my_http_profile est un profil HTTP préexistant dans Citrix ADC.

Vous pouvez également définir les paramètres de profil comme indiqué ci-dessous. Consultez la documentation du profil HTTP NITRO pour connaître toutes les valeurs clés possibles.

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

Configuration à l’aide de FRONTEND_TCP_PROFILE

La FRONTEND_TCP_PROFILE variable est utilisée pour définir les options TCP pour le serveur virtuel frontal (côté client), sauf si elle est remplacée par l’annotation ingress.citrix.com/frontend-tcpprofile intelligente dans la définition d’entrée.

Pour utiliser un profil existant sur Citrix ADC ou utiliser un profil TCP intégré :

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

Dans cet exemple, my_tcp_profile est un profil TCP préexistant dans Citrix ADC.

Vous pouvez également définir les paramètres de profil comme suit. Consultez la documentation NITRO du profil TCP Citrix ADC pour connaître toutes les valeurs clés possibles.

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

<!--NeedCopy-->

Configuration à l’aide de FRONTEND_SSL_PROFILE

La FRONTEND_SSL_PROFILE variable est utilisée pour définir les options SSL pour le serveur virtuel frontal (côté client), sauf si elle est remplacée par l’annotation ingress.citrix.com/frontend-sslprofile intelligente dans la définition d’entrée.

Remarque : Pour que le profil SSL fonctionne correctement, vous devez activer le profil par défaut dans Citrix ADC à l’aide de la commande set ssl parameter -defaultProfile ENABLED. Assurez-vous que le Citrix ingress controller est redémarré après avoir activé le profil par défaut. Le profil par défaut est automatiquement activé lorsque Citrix ADC CPX est utilisé en tant que périphérique d’entrée. Pour plus d’informations sur le profil par défaut SSL, consultez la documentation du profil SSL.

Pour utiliser un profil existant sur Citrix ADC ou utiliser un profil SSL intégré,

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

Dans cet exemple, my_ssl_profile est le profil SSL préexistant dans Citrix ADC.

Remarque :

Le profil frontal par défaut (ns_default_ssl_profile_frontend) n’est pas pris en charge à l’aide de la FRONTEND_SSL_PROFILE.preconfigured variable.

Vous pouvez également définir les paramètres de profil comme indiqué dans l’exemple suivant. Consultez la documentation du profil SSL NITRO pour plus d’informations sur toutes les valeurs clés possibles.

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

L’exemple suivant montre la liaison de groupes de chiffrement SSL au profil SSL. L’ordre est tel que spécifié dans la liste avec la priorité la plus élevée est fournie au premier de la liste et ainsi de suite. Vous pouvez utiliser tous les chiffrements SSL disponibles dans Citrix ADC ou les groupes de chiffrement créés par l’utilisateur dans ce champ. Pour plus d’informations sur la liste des chiffrements disponibles dans Citrix ADC, consultez Chiffrements dans 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-->

Configuration dorsale

Toute définition d’entrée qui inclut des détails de service, une spec:backend entrée, etc. est considérée comme une configuration principale. spec:rules:host

Exemple de manifeste d’entrée du backend sans configuration 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-->

Exemple de manifeste d’entrée du serveur principal avec configuration 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-->

Utilisation de profils définis par l’utilisateur intégrés ou existants sur le Citrix ADC Ingress

Vous pouvez utiliser les annotations intelligentes individuelles pour configurer les profils intégrés ou les profils définis par l’utilisateur existants sur Ingress Citrix ADC pour les configurations front-end et back-end en fonction de vos besoins. Pour plus d’informations sur les profils intégrés, consultez Profils TCPintégrés et Profils HTTP intégrés.

Pour la configuration frontale, vous pouvez fournir le nom des profils définis par l’utilisateur intégrés ou existants sur le Citrix ADC Ingress. Voici un exemple d’annotation d’entrée :

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

Où, ‘http_preconf_profile1’ est le profil qui existe sur le Citrix ADC Ingress.

Pour la configuration principale, vous devez fournir le nom du profil intégré ou existant sur l’entrée Citrix ADC et le nom du service principal. Voici un exemple d’annotation d’entrée :

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

Où, ‘http_preconf_profile1’ est le profil qui existe sur le Citrix ADC Ingress et citrix-svc est le nom du service principal.

Exemple de profil HTTP

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

Exemple de profil TCP

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

Exemple de profil SSL

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

Exemple d’application de profils HTTP, SSL et TCP

Cet exemple montre comment appliquer des profils HTTP, SSL ou TCP.

Pour créer des profils SSL, TCP et HTTP et les lier à la ressource Ingress définie, effectuez les opérations suivantes :

  1. Définissez la ressource d’entrée frontale avec les profils requis. Dans cette ressource Ingress, le back-end et le TLS ne sont pas définis.

    Un exemple de YAML (ingress1.yaml) est fourni comme suit :

      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. Déployez la ressource d’entrée frontale.

    kubectl crée -f ingress1.yaml

  3. Définissez la ressource d’entrée secondaire avec la même adresse IP frontale et le même protocole TLS et le serveur principal défini qui crée la définition de ressource d’équilibrage de charge.

    Un exemple de YAML (ingress2.yaml) est fourni comme suit :

      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. Déployez la ressource d’entrée principale.

     kubectl create -f ingress2.yaml
    
  5. Une fois les YAML appliqués, les entités, les profils et les ressources d’entrée correspondants sont créés et liés à la ressource d’entrée.

    # 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
    

Exemple : Ajout d’un certificat SNI à un serveur virtuel SSL

Cet exemple montre comment ajouter un seul certificat SNI.

Remarque :

Pour que le profil SSL fonctionne correctement, vous devez activer le profil par défaut dans Citrix ADC à l’aide de la commande set ssl parameter -defaultProfile ENABLED. Assurez-vous que le Citrix ingress controller est redémarré après avoir activé le profil par défaut. Pour plus d’informations sur le profil par défaut SSL, consultez la documentation.

  1. Définissez la ressource d’entrée frontale avec les profils requis. Dans cette ressource Ingress, le back-end et le TLS ne sont pas définis.

    Un exemple de YAML (ingress1.yaml) est fourni comme suit :

    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. Déployez la ressource d’entrée frontale.

    kubectl create -f ingress1.yaml
    
  3. Définissez la ressource d’entrée secondaire avec la même adresse IP frontale définissant les certificats back-end et SNI. Si des hôtes sont spécifiés, la clé de certificat spécifiée comme nom secret est ajoutée en tant que certificat SNI.

    Un exemple de YAML (ingress2.yaml) est fourni comme suit :

    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. Déployez la ressource d’entrée secondaire.

     kubectl create -f ingress2.yaml
    

    Si plusieurs certificats SNI doivent être liés au VIP frontal, voici un exemple de fichier YAML.

    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
    

Exemple : groupe de chiffrement SSL de liaison

Cet exemple montre comment lier un groupe de chiffrement SSL.

Remarque :

Pour que le profil SSL fonctionne correctement, vous devez activer le profil par défaut dans Citrix ADC à l’aide de la commande set ssl parameter -defaultProfile ENABLED. Assurez-vous que le Citrix ingress controller est redémarré après avoir activé le profil par défaut.

Définissez le profil SSL par défaut sur Citrix ADC à l’aide de la commande set ssl parameter -defaultProfile ENABLED avant de déployer le Citrix ingress controller. Si vous avez déjà déployé le Citrix ingress controller, redéployez-le. Pour plus d’informations sur le profil par défaut SSL, consultez la documentation.

Pour plus d’informations sur les chiffrements pris en charge sur les appliances Citrix ADC, consultez la section Chiffrements disponibles sur les dispositifs Citrix ADC.

Pour plus d’informations sur la sécurisation du chiffrement, consultez Sécurisation du chiffrement.

Un exemple de YAML (cat frontend_ingress.yaml) est fourni comme suit :

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