Cette fiche pratique propose une procédure pas à pas de l’installation du Contrôleur d’Ingress (ou Ingress Controller en anglais ) Contour sur vos clusters de travail.
Cette fiche est donnée simplement à titre d’exemple, mais vous pouvez tout à fait utiliser le contrôleur d’ingress de votre choix. L’idée étant de donner un point de départ dans l’utilisation d’un contrôleur d’ingress.
Pour en savoir plus sur ce qu’est un contrôleur d’ingress vous pouvez vous reporter aux pages suivantes :
Cette fiche pratique vous est délivrée pour information uniquement, Contour n’est pas un composant obligatoire. Vous êtes totalement libre d’utiliser n’importe quel autre contrôleur d’ingress. Aucun support ne sera délivré sur Contour.
Prérequis
Avant de déployer Contour sur votre cluster de travail certains prérequis doivent être installés sur votre machine d’administration mais aussi sur votre cluster de travail.
Sur la machine d’administration
Installez les outils de package Tanzu dont la procédure est disponible sur la page ci-dessous :
Vérifiez que Contourr s’est installé correctement.
tanzu package installed list -A
\ Retrieving installed packages... NAME PACKAGE-NAME PACKAGE-VERSION STATUS NAMESPACE contour contour.tanzu.vmware.com 1.18.2+vmware.1-tkg.1 Reconcile succeeded packages
Exemple d’utilisation de votre contrôleur d’Ingress
Pour faire ce test, nous allons déployer deux PODS. Le premier POD affichera une page web avec le texte « apple » , l’autre POD afficher le teste « banana ».
En fonction de l’adresse de la page (url) utilisée pour accéder au service, le contrôleur d’ingress saura quel POD utiliser en fonction de la configuration en place.
Ceci ne requiert qu’une seule adresse IP externe, cette IP correspond à celle du service de type LoadBalancer nommé Envoy que nous avons déployé au moment de l’installation de Contour.
À noter !
Pour notre test, nous allons utiliser une zone DNS publique et gratuite qui permet de simplifier nos tests au niveau de la résolution DNS. Ceci est utilisé uniquement pour test et non recommandé en production ou il faudra utiliser un service DNS « classique ». nip.io retourne simplement l’IP qui est contenu dans le nom complet DNS que l’on cherche à résoudre. Plusieurs formats sont possibles, en voici un exemple :
banana.100.10.12.2.nip.ip va retourner l’IP : 100.100.12.2
apple.100.10.12.2.nip.ip va retourner l’IP : 100.100.12.2
Création des PODs
Créez les deux fichiers de définition des PODS ainsi que les deux services en utilisant les informations ci-contre.
apple.yaml
kind: Pod apiVersion: v1 metadata: name: apple-app labels: app: apple spec: containers: - name: apple-app image: hashicorp/http-echo args: - "-text=apple"
---
kind: Service apiVersion: v1 metadata: name: apple-service spec: selector: app: apple ports: - port: 5678 # Default port for image
Après quelques secondes, vérifiez que les PODS soient bien en STATUS RUNNING.
kubectl get pods banana kubectl get pods apple
IP du contrôleur d’Ingress
Récupérez l’adresse IP externe qui a été affectée au contrôleur d’ingress au moment du déploiement de Contour.
Pour ce faire, lancez la commande ci-contre et notez la valeur de la colonne EXTERNAL-IP.
À noter !
Si vous venez juste d’installer Contour, il est possible que l’adresse externe ne soit pas encore affectée, dans ce cas attendez encore quelques secondes.
kubectl get svc envoy -n tanzu-system-ingress NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE envoy LoadBalancer 100.65.98.108 100.101.191.4 80:30411/TCP,443:30934/TCP 4d3h
Créez un fichier nommé ingress.yaml avec le contenu fourni ci-contre.
remplacez [IP] par l’adresse ip externe récupérez dans l’étape précédente.
Vous pouvez également utiliser votre propre zone DNS à la place de nip.io. Dans ce cas, remplacez le nom complet avec celui de votre choix.
Ouvrez un navigateur web depuis une machine qui est en capacité de joindre l’adress ip externe de votre contrôleur ingress. Assurez-vous qu’aucun filtrage réseau n’empêche la communication.
Accédez aux adresses suivantes :
http://banana.[IP].nip.io (remplacez [IP] par l’adresse ip externe)
http://apple.[IP].nip.io (remplacez [IP] par l’adresse ip externe)
Test supplémentaire
Il est aussi possible d’utiliser un même nom DNS mais de rediriger le flux en fonction du chemin de la page demandée.
Par exemple :
http://myapp.[IP].nip.io/apple utilisera le POD apple
http://myapp.[IP].nip.io/banana utilisera le POD banana
Le fichier yaml ci-contre permet cette configuration.