Contrôleur d'entrée Citrix ADC

Expose le service de type NodePort à l’aide d’Ingress

Dans un déploiement à un niveau, l’entrée Citrix ADC (VPX ou MPX) en dehors du cluster Kubernetes reçoit tout le trafic entrant vers les microservices déployés dans le cluster Kubernetes. Pour que le trafic entrant atteigne les microservices, vous devez établir une connectivité réseau entre l’instance Citrix ADC Ingress et les espaces.

Étant donné que les espaces s’exécutent sur un réseau de superposition, les adresses IP des espaces sont des adresses IP privées et l’instance Citrix ADC d’entrée ne peut pas atteindre les microservices exécutés dans les espaces. Pour rendre le service accessible depuis l’extérieur du cluster, vous pouvez créer le service de type NodePort. L’instance Citrix ADC équilibre la charge du trafic entrant vers les nœuds qui contiennent les espaces.

Pour créer le service de type NodePort, dans votre fichier de définition de service, spécifiez spec.type:NodePort et spécifiez éventuellement un port compris entre 30000 et 32767.

Exemple de déploiement

Supposons un scénario dans lequel vous utilisez un service basé sur NodePort, par exemple une apache application et souhaitez exposer l’application au trafic Nord-Sud à l’aide d’une entrée. Dans ce cas, vous devez créer le déploiement de l’application apache, définir le service de type NodePort et créer une définition d’entrée pour configurer Ingress Citrix ADC pour envoyer le trafic nord-sud au port de nœud de l’application apache.

Dans cet exemple, vous créez un déploiement nommé apacheet vous le déployez dans votre cluster Kubernetes.

  1. Créez un manifeste pour le déploiement nommé apache-deployment.yaml.

    # If using this on GKE
    # Make sure you have cluster-admin role for your account
    # kubectl create clusterrolebinding citrix-cluster-admin --clusterrole=cluster-admin --user=<username of your google account>
    #
    
    #For illustration a basic apache web server is used as a application
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
          name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 4
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    <!--NeedCopy-->
    

    Les conteneurs de ce déploiement écoutent sur le port 80.

  2. Créez le déploiement à l’aide de la commande suivante :

    kubectl create -f apache-deployment.yaml
    
  3. Vérifiez que quatre espaces sont en cours d’exécution à l’aide des éléments suivants :

    kubectl get pods
    
  4. Une fois que vous avez vérifié que les espaces sont opérationnels, créez un service de type NodePort. Voici un manifeste pour le service :

    #Expose the apache web server as a Service
    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      type: NodePort
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache
    <!--NeedCopy-->
    
  5. Copiez le manifeste dans un fichier nommé apache-service.yaml et créez le service à l’aide de la commande suivante :

    kubectl create -f apache-service.yaml
    

    L’exemple déploie et expose le serveur Web Apache en tant que service. Vous pouvez accéder au service en utilisant l’adresse <NodeIP>:<NodePort>.

  6. Après avoir déployé le service, créez une ressource Ingress pour configurer l’entrée Citrix ADC pour envoyer le trafic nord-sud au port de nœud de l’application apache. Ce qui suit est un manifeste pour la définition d’entrée nommée en tant que vpx-ingress.yaml.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        ingress.citrix.com/frontend-ip: xx.xxx.xxx.xx
      name: vpx-ingress
    spec:
      defaultBackend:
        service:
          name: apache
          port:
            number: 80
    <!--NeedCopy-->
    
  7. Déployez l’objet Ingress.

    kubectl create -f vpx-ingress.yaml
    
Expose le service de type NodePort à l’aide d’Ingress

Dans cet article