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é apache
et vous le déployez dans votre cluster Kubernetes.
-
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.
-
Créez le déploiement à l’aide de la commande suivante :
kubectl create -f apache-deployment.yaml
-
Vérifiez que quatre espaces sont en cours d’exécution à l’aide des éléments suivants :
kubectl get pods
-
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-->
-
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>
. -
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 quevpx-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-->
-
Déployez l’objet Ingress.
kubectl create -f vpx-ingress.yaml