Contrôleur d'entrée Citrix ADC

Déployer le Citrix ingress controller en tant que plug-in de routeur OpenShift

Dans un cluster OpenShift, les clients externes ont besoin d’un moyen d’accéder aux services fournis par les espaces. OpenShift fournit deux ressources pour communiquer avec les services exécutés dans le cluster : les routes et l’ entrée.

Dans un cluster OpenShift, un itinéraire expose un service sur un nom de domaine donné ou associe un nom de domaine à un service. Les routeurs OpenShift acheminent les demandes externes vers des services au sein du cluster OpenShift conformément aux règles spécifiées dans les itinéraires. Lorsque vous utilisez le routeur OpenShift, vous devez également configurer le DNS externe pour vous assurer que le trafic arrive sur le routeur.

Le Citrix ingress controller peut être déployé en tant que plug-in de routeur dans le cluster OpenShift pour s’intégrer aux Citrix ADC déployés dans votre environnement. Le Citrix ingress controller vous permet d’utiliser les fonctionnalités avancées d’équilibrage de charge et de gestion du trafic de Citrix ADC avec votre cluster OpenShift.

Les itinéraires OpenShift peuvent être sécurisés ou non sécurisés. Les itinéraires sécurisés spécifient la terminaison TLS de l’itinéraire.

Le Citrix ingress controller prend en charge les itinéraires OpenShift suivants :

  • Routes non sécurisées : pour les itinéraires non sécurisés, le trafic HTTP n’est pas chiffré.

  • Terminaison Edge : Pour la terminaison Edge, TLS est terminé au niveau du routeur. Le trafic entre le routeur et les points de terminaison sur le réseau interne n’est pas chiffré.

  • Terminaison passthrough : Avec la terminaison de relais, le routeur n’est pas impliqué dans le déchargement TLS et le trafic crypté est envoyé directement à la destination.

  • Fin du rechiffrement : Lors de la fin du rechiffrement, le routeur met fin à la connexion TLS, mais établit ensuite une autre connexion TLS avec le point final.

Pour obtenir des informations détaillées sur les itinéraires, consultez la documentation OpenShift.

Vous pouvez soit déployer une appliance Citrix ADC MPX ou VPX en dehors du cluster OpenShift, soit déployer des Citrix ADC CPX en tant qu’espaces à l’intérieur du cluster. Le Citrix ingress controller intègre Citrix ADC au cluster OpenShift et configure automatiquement les Citrix ADC en fonction des règles spécifiées dans les itinéraires.

Selon la façon dont vous souhaitez utiliser Citrix ADC, il existe deux manières de déployer Citrix Ingress Controller en tant que plug-in de routeur dans le cluster OpenShift :

  • En tant que conteneur annexe aux côtés de Citrix ADC CPX dans le même espace : dans ce mode, le Citrix ingress controller configure le Citrix ADC CPX.

  • En tant qu’espace autonome dans le cluster OpenShift : dans ce mode, vous pouvez contrôler l’appliance Citrix ADC MPX ou VPX déployée en dehors du cluster.

Pour plus d’informations sur le déploiement du Citrix ingress controller pour contrôler l’entrée OpenShift, consultez le Citrix ingress controller pour Kubernetes.

Vous pouvez utiliser Citrix ADC pour l’équilibrage de charge du plan de contrôle OpenShift (nœuds maîtres). Citrix fournit une solution pour automatiser la configuration de Citrix ADC à l’aide de Terraform au lieu de configurer manuellement Citrix ADC. Pour plus d’informations, consultez Citrix ADC en tant qu’équilibreur de charge pour le plan de contrôle OpenShift.

Prise en charge du backend alternatif

Lesbackends alternatifs OpenShift sont désormais pris en charge par le Citrix ingress controller.

Citrix ADC est configuré en fonction des poids fournis dans la définition des itinéraires et le trafic est réparti entre les espaces de service en fonction de ces poids.

Voici un exemple de manifeste d’itinéraire avec un backend alternatif :

 kind: Route
 apiVersion: route.openshift.io/v1
 metadata:
   name: r1
   labels:
     name: apache
   annotations:
     ingress.citrix.com/frontend-ip: "<Frontend-ip>"
 spec:
   host: some.alternate-backends.com
   to:
     kind: Service
     name: apache-1
     weight: 30
   alternateBackends:
     - kind: Service
       name: apache-2
       weight: 20
     - kind: Service
       name: apache-3
       weight: 50
   port:
     targetPort: 80
   wildcardPolicy: None
<!--NeedCopy-->

Pour cet itinéraire, 30 % du trafic est envoyé au service apache-1 et 20 % est envoyé au service apache2 et 50 % au service apache-3 sur la base des poids fournis dans le manifeste d’itinéraire

Composants Citrix pris en charge sur OpenShift

Composants Citrix Versions
Citrix ingress controller Dernière
Citrix ADC VPX 12.1 50.x et versions ultérieures
Citrix ADC CPX 13.0–36.28

Remarque :

Les CRD fournis pour le Citrix ingress controller ne sont pas pris en charge pour les itinéraires OpenShift. Vous pouvez utiliser l’entrée OpenShift pour utiliser des CRD.

Déployer Citrix ADC CPX en tant que routeur au sein du cluster OpenShift

Dans ce déploiement, vous pouvez utiliser l’instance Citrix ADC CPX pour équilibrer la charge du trafic nord-sud vers les microservices de votre cluster OpenShift. Le Citrix ingress controller est déployé en tant que side-car à côté du conteneur Citrix ADC CPX dans le même espace à l’aide du fichier cpx_cic_side_car.yaml .

Avant de commencer : lorsque vous déployez Citrix ADC CPX en tant que routeur, des conflits de ports peuvent survenir avec le routeur par défaut dans OpenShift. Vous devez supprimer le routeur par défaut dans OpenShift avant de déployer Citrix ADC CPX en tant que routeur. Pour supprimer le routeur par défaut dans OpenShift, effectuez les opérations suivantes :

  1. Sauvegardez la configuration du routeur par défaut à l’aide de la commande suivante.

    oc get -o yaml dc/router clusterrolebinding/router-router-role serviceaccount/router > default-router-backup.yaml
    
  2. Supprimez le routeur par défaut à l’aide de la commande suivante.

    oc delete -f default-router-backup.yaml
    

Effectuez les étapes suivantes pour déployer Citrix ADC CPX en tant que routeur avec le Citrix ingress controller en tant que sidecar.

  1. Téléchargez le fichier cpx_cic_side_car.yaml à l’aide de la commande suivante :

    wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/openshift/manifest/cpx_cic_side_car.yaml
    
  2. Ajoutez le compte de service aux contraintes de contexte de sécurité privilégiées (SCC) d’OpenShift.

    oc adm policy add-scc-to-user privileged system:serviceaccount:default:citrix
    
  3. Déployez le Citrix ingress controller à l’aide de la commande suivante :

    oc create -f cpx_cic_side_car.yaml
    
  4. Vérifiez si le Citrix ingress controller est déployé correctement à l’aide de la commande suivante :

    oc get pods --all-namespaces
    

Déployer Citrix ADC MPX/VPX en tant que routeur en dehors du cluster OpenShift

Dans ce déploiement, le Citrix ingress controller qui s’exécute en tant qu’espace autonome vous permet de contrôler l’appliance Citrix ADC MPX ou VPX à partir du cluster OpenShift. Vous pouvez utiliser le fichier cic.yaml pour ce déploiement.

Remarque : Le Citrix ADC MPX ou VPX peut être déployé en mode autonome, haute disponibilitéou en cluster .

Conditions préalables

  • Déterminez l’adresse IP dont le Citrix ingress controller a besoin pour communiquer avec l’appliance Citrix ADC. L’adresse IP peut être l’une des suivantes en fonction du type de déploiement Citrix ADC :
    • NSIP (pour les appliances autonomes) : adresse IP de gestion d’une appliance Citrix ADC autonome. Pour de plus amples informations, consultez Adressage IP dans Citrix ADC.
    • SNIP (pour les appliances en mode Haute disponibilité) : adresse IP du sous-réseau. Pour de plus amples informations, consultez Adressage IP dans Citrix ADC.
    • CLIP (pour les dispositifs en mode cluster) : adresse IP de gestion de cluster (CLIP) pour un déploiement Citrix ADC en cluster. Pour plus d’informations, consultez Adressage IP pour un cluster.
  • Le nom d’utilisateur et le mot de passe de l’appliance Citrix ADC VPX ou MPX utilisée comme périphérique d’entrée. Si vous n’utilisez pas les informations d’identification par défaut, l’appliance Citrix ADC doit disposer d’un compte d’utilisateur système avec certains privilèges afin que le Citrix ingress controller puisse configurer l’appliance Citrix ADC MPX ou VPX. Pour créer un compte d’utilisateur système sur Citrix ADC, reportez-vous à la section Créer un compte d’utilisateur système pour le Citrix ingress controller dans Citrix ADC.

    Vous pouvez directement transmettre le nom d’utilisateur et le mot de passe en tant que variables d’environnement au Citrix ingress controller ou utiliser des secrets OpenShift (recommandé). Si vous souhaitez utiliser des secrets OpenShift, créez un secret pour le nom d’utilisateur et le mot de passe à l’aide de la commande suivante :

     oc create secret generic nslogin --from-literal=username='cic' --from-literal=password='mypassword'
    

Créez un compte d’utilisateur système pour le Citrix ingress controller dans Citrix ADC

Le Citrix ingress controller configure une appliance Citrix ADC (MPX ou VPX) à l’aide d’un compte d’utilisateur système de l’appliance Citrix ADC. Le compte d’utilisateur système doit disposer des autorisations nécessaires pour configurer les tâches suivantes sur Citrix ADC :

  • Ajouter, supprimer ou afficher un serveur virtuel de commutation de contenu (CS)
  • Configurer les stratégies et les actions du CS
  • Configurer le serveur virtuel d’équilibrage de charge (LB)
  • Configurer les groupes de services
  • Configurer les clés de certificat SSL
  • Configurer des itinéraires
  • Configurer les moniteurs utilisateur
  • Ajouter un fichier système (pour télécharger des clés de test SSL depuis OpenShift)
  • Configurer l’adresse IP virtuelle (VIP)
  • Vérifiez l’état de l’appliance Citrix ADC
  • Configurer les actions et les stratégies SSL
  • Configurer le vServer SSL
  • Configurer les actions et les stratégies du répondeur

Pour créer le compte d’utilisateur système, effectuez les opérations suivantes :

  1. Ouvrez une session sur l’appliance Citrix ADC en procédant comme suit :

    1. Utilisez un client SSH, tel que PuTTY, pour ouvrir une connexion SSH à l’appliance Citrix ADC.

    2. Connectez-vous à l’appliance à l’aide des informations d’identification de l’administrateur.

  2. Créez le compte d’utilisateur système à l’aide de la commande suivante :

    add system user <username> <password>
    

    Par exemple :

    add system user cic mypassword
    
  3. Créez une stratégie pour fournir les autorisations requises au compte d’utilisateur du système. Utilisez la commande suivante :

    add cmdpolicy cic-policy ALLOW '^(\?!shell)(\?!sftp)(\?!scp)(\?!batch)(\?!source)(\?!.*superuser)(\?!.*nsroot)(\?!install)(\?!show\s+system\s+(user|cmdPolicy|file))(\?!(set|add|rm|create|export|kill)\s+system)(\?!(unbind|bind)\s+system\s+(user|group))(\?!diff\s+ns\s+config)(\?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)^(\?!shell)(\?!sftp)(\?!scp)(\?!batch)(\?!source)(\?!.*superuser)(\?!.*nsroot)(\?!install)(\?!show\s+system\s+(user|cmdPolicy|file))(\?!(set|add|rm|create|export|kill)\s+system)(\?!(unbind|bind)\s+system\s+(user|group))(\?!diff\s+ns\s+config)(\?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)'
    

    Remarque : Le compte d’utilisateur système aurait des privilèges basés sur la stratégie de commande que vous définissez.

    La stratégie de commande mentionnée à l’étape 3 est similaire à la stratégie de commande sysAdmin intégrée avec une autre autorisation de téléchargement de fichiers.

    Dans la spécification de stratégie de commande fournie, les caractères spéciaux qui doivent être échappés sont déjà omis pour faciliter le copier-coller dans la ligne de commande Citrix ADC.

    Pour configurer la stratégie de commande à partir de l’assistant de configuration Citrix ADC (GUI), utilisez la spécification de stratégie de commande suivante.

    ^(?!shell)(?!sftp)(?!scp)(?!batch)(?!source)(?!.*superuser)(?!.*nsroot)(?!install)(?!show\s+system\s+(user|cmdPolicy|file))(?!(set|add|rm|create|export|kill)\s+system)(?!(unbind|bind)\s+system\s+(user|group))(?!diff\s+ns\s+config)(?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)^(?!shell)(?!sftp)(?!scp)(?!batch)(?!source)(?!.*superuser)(?!.*nsroot)(?!install)(?!show\s+system\s+(user|cmdPolicy|file))(?!(set|add|rm|create|export|kill)\s+system)(?!(unbind|bind)\s+system\s+(user|group))(?!diff\s+ns\s+config)(?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)
    
  4. Liez la stratégie au compte d’utilisateur système à l’aide de la commande suivante :

    bind system user cic cic-policy 0
    

Déployer le Citrix ingress controller en tant qu’espace dans un cluster OpenShift

Effectuez les étapes suivantes pour déployer le Citrix ingress controller en tant qu’espace :

  1. Téléchargez le fichier cic.yaml à l’aide de la commande suivante :

    wget https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/openshift/manifest/cic.yaml
    
  2. Modifiez le fichier cic.yaml et entrez les valeurs des variables environnementales suivantes :

    Variable d’environnement Obligatoire ou facultatif Description
    NS_IP Obligatoire L’adresse IP de l’appliance Citrix ADC. Pour plus de détails, consultez la section Prérequis.
    NS_USER et NS_PASSWORD Obligatoire Le nom d’utilisateur et le mot de passe de l’appliance Citrix ADC VPX ou MPX utilisée comme périphérique d’entrée. Pour plus de détails, consultez la section Prérequis.
    CONTRAT DE LICENCE Obligatoire Le contrat de licence de l’utilisateur final. Spécifiez la valeur comme Yes.
    NS_VIP Facultatif Le Citrix ingress controller utilise l’adresse IP fournie dans cette variable d’environnement pour configurer une adresse IP virtuelle pour Citrix ADC qui reçoit le trafic entrant. Remarque : NS_VIP agit en tant que solution de secours lorsque l’annotation frontend-ip n’est pas fournie dans le yaml Ingress ou Route. Non pris en charge pour le service Type LoadBalancer.
  3. Ajoutez le compte de service aux contraintes de contexte de sécurité privilégiées (SCC) d’OpenShift.

    oc adm policy add-scc-to-user privileged system:serviceaccount:default:citrix
    
  4. Enregistrez le fichier cic.yaml modifié et déployez-le à l’aide de la commande suivante :

     oc create -f cic.yaml
    
  5. Vérifiez si le Citrix ingress controller est déployé correctement à l’aide de la commande suivante :

    oc create get pods --all-namespaces
    
  6. Configurez des itinéraires statiques sur Citrix ADC VPX ou MPX pour atteindre les espaces à l’intérieur du cluster OpenShift.

    1. Utilisez la commande suivante pour obtenir les informations sur les noms d’hôtes, les adresses IP des hôtes et les sous-réseaux pour la configuration d’itinéraires statiques.

      oc get hostsubnet
      
    2. Ouvrez une session sur l’instance Citrix ADC.

    3. Ajoutez la route sur l’instance Citrix ADC à l’aide de la commande suivante.

      add route <pod_network> <netmask> <gateway>
      
    <B>Example:</b>
    
          oc get hostsubnet
          
          NAME            HOST           HOST IP        SUBNET
          os.example.com  os.example.com 192.168.122.46 192.1.1.0/24
    
     From the output of the `oc get hostsubnet` command:
    
          <pod_network> = 192.1.1.0
          Value for subnet = 192.1.1.0/x where x = 24 that means <netmask>= 255.255.255.0
          <gateway> = 192.168.122.46
    
     The required static route to add on Citrix ADC is as follows:
    
          add route 10.1.1.0 255.255.255.0 192.168.122.46
    

Exemple : Déployer le Citrix ingress controller en tant que plug-in de routeur dans un cluster OpenShift

Dans cet exemple, le Citrix ingress controller est déployé en tant que plug-in de routeur dans le cluster OpenShift pour équilibrer la charge d’une application.

  1. Déployez un exemple d’application (apache.yaml) dans votre cluster OpenShift et exposez-le en tant que service dans votre cluster à l’aide de la commande suivante.

    oc create -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/openshift/manifest/apache.yaml
    

    Remarque : Lorsque vous déployez un espace Apache normal dans OpenShift, il peut échouer car l’espace Apache s’exécute toujours en tant que pod racine. OpenShift a des contrôles de sécurité stricts qui bloquent l’exécution d’un espace en tant que root ou la liaison au port 80. Pour contourner le problème, vous pouvez ajouter le compte de service par défaut de l’espace au contexte de sécurité privilégié d’OpenShift à l’aide des commandes suivantes :

        oc adm policy add-scc-to-user privileged system:serviceaccount:default:default
        oc adm policy add-scc-to-group anyuid system:authenticated
    

    Le contenu du fichier apache.yaml est indiqué comme suit.

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        name: apache-only-http
      name: apache-only-http
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: apache-only-http
      template:
        metadata:
          labels:
            app: apache-only-http
        spec:
          containers:
          - image: raghulc/apache-multiport-http:1.0.0
            imagePullPolicy: IfNotPresent
            name: apache-only-http
            ports:
            - containerPort: 80
              protocol: TCP
            - containerPort: 5080
              protocol: TCP
            - containerPort: 5081
              protocol: TCP
            - containerPort: 5082
              protocol: TCP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        name: apache-only-ssl
      name: apache-only-ssl
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: apache-only-ssl
      template:
        metadata:
          labels:
            app: apache-only-ssl
        spec:
          containers:
          - image: raghulc/apache-multiport-ssl:1.0.0
            imagePullPolicy: IfNotPresent
            name: apache-only-ssl
            ports:
            - containerPort: 443
              protocol: TCP
            - containerPort: 5443
              protocol: TCP
            - containerPort: 5444
              protocol: TCP
            - containerPort: 5445
              protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-apache-multi-http
    spec:
      ports:
      - name: apache-http-6080
        port: 6080
        targetPort: 5080
      - name: apache-http-6081
        port: 6081
        targetPort: 5081
      - name: apache-http-6082
        port: 6082
        targetPort: 5082
      selector:
        app: apache-only-http
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-apache-multi-ssl
    spec:
      ports:
      - name: apache-ssl-6443
        port: 6443
        targetPort: 5443
      - name: apache-ssl-6444
        port: 6444
        targetPort: 5444
      - name: apache-ssl-6445
        port: 6445
        targetPort: 5445
      selector:
        app: apache-only-ssl
    ---
    
  2. Déployez le Citrix ingress controller pour Citrix ADC VPX en tant qu’espace autonome dans le cluster OpenShift en suivant les étapes décrites dans Déployer le Citrix ingress controller en tant qu’espace.

    oc create -f cic.yaml
    

    Remarque : Pour déployer le Citrix ingress controller avec Citrix ADC CPX dans le cluster OpenShift, effectuez les étapes décrites dans Déployer le Citrix ingress controller en tant que sidecar avec Citrix ADC CPX.

  3. Créez un itinéraire OpenShift pour exposer l’application.

    • Pour créer un itinéraire OpenShift non sécurisé (unsecured-route.yaml), utilisez la commande suivante :

       oc create -f unsecured-route.yaml
      
    • Pour créer un itinéraire OpenShift sécurisé avec terminaison Edge (secured-edge-route.yaml), utilisez la commande suivante.

       oc create -f secured-route-edge.yaml
      
    • Pour créer un itinéraire OpenShift sécurisé avec une terminaison passthrough (secured-passthrough-route.yaml), utilisez la commande suivante.

       oc create -f secured-passthrough-route.yaml
      
    • Pour créer un itinéraire OpenShift sécurisé avec arrêt du rechiffrement (secured-reencrypt-route.yaml), utilisez la commande suivante.

       oc create -f secured-reencrypt-route.yaml
      

    Pour voir le contenu des fichiers YAML des itinéraires OpenShift dans cet exemple, reportez-vous à la section Fichiers YAML pour les itinéraires.

    Remarque :

    Pour un itinéraire OpenShift sécurisé avec terminaison relais, vous devez inclure le certificat par défaut.

  4. Accédez à l’application à l’aide de la commande suivante.

      curl http://<VIP of Citrix ADC VPX>/ -H 'Host: < host-name-as-per-the-host-configuration-in-route >'
      <!--NeedCopy-->
    

fichiers YAML pour les routes

Cette section contient des fichiers YAML pour les itinéraires non sécurisés et sécurisés spécifiés dans l’exemple.

Remarque : Les clés utilisées dans cet exemple ne sont utilisées qu’à des fins de test. Vous devez créer vos propres clés pour le déploiement réel.

Le contenu du fichier unsecured-route.yaml est indiqué comme suit :

apiVersion: v1
kind: Route
metadata:
  name: unsecured-route
spec:
  host: unsecured-route.openshift.citrix-cic.com
  path: "/"
  to:
    kind: Service
    name: svc-apache-multi-http
<!--NeedCopy-->

Pour plus d’informations sur le contenu du fichier secured-edge-route.yaml, reportez-vous à la section Secured-Edge-Route .

Le contenu du fichier secured-passthrough-route est indiqué comme suit :

apiVersion: v1
kind: Route
metadata:
  name: secured-passthrough-route
spec:
  host: secured-passthrough-route.openshift.citrix-cic.com
  to:
    kind: Service
    name: svc-apache-multi-ssl
  tls:
    termination: passthrough
<!--NeedCopy-->

Reportez-vous à la section route sécurisée de rechiffrement pour le contenu du fichier secured-reencrypt-route.yaml.