-
Accueil
-
Fiches Pratiques
-
-
-
-
-
-
- NSX-T : Comment configurer une solution IPSEC [EN]
- NSX-T : configuration de DNAT [EN]
- NSX-T : configuration de SNAT [EN]
- NSX-T : Création de T1 [EN]
- NSX-T : Créer et configurer un segment overlay Geneve
- NSX-T: Configurer un Pare-Feu de Passerelle/"Gateway Firewall"
- NSX-T: Configurer un Pare-Feu Distribué
- NSX-T: Créer un VPN Ipsec
- Sauvegarde : Conception globale de l'offre VCOD [EN]
- Sauvegarde : Créer une sauvegarde VCOD [EN]
- Sauvegarde : Guide de l'utilisateur pour l'offre VCOD [EN]
- Sauvegarde : Installation de l'agent Netbackup pour Linux [EN]
- Sauvegarde : Installation de l'agent Netbackup pour Windows [EN]
- Sauvegarde : Mode Agent B&R via NSS Pour l`offre IAAS [EN]
- VCenter : Réinitialiser le mot de passe de cloudadmin [EN]
- VCenter : Snapshot de VM
- VCenter : Storage Vmotion d'une VM
- VCenter: Cloner une VM
- VCenter: Créer une nouvelle VM
- VCenter: Upgrader les Vmware tools sur une VM
- Show all articles (5) Collapse Articles
-
-
Liste des Services (NGP)
- Accès internet
- API
- Appliance de QoS
- Bare Metal Serveur
- BVPN
- Certifications
- Cluster Dédié
- Cross Connect
- DRaaS avec VCDA
- Dual Site
- HA Dual Room
- Kubernetes
- Licences
- LoadBalancer As A Service
- Outillage
- Politiques de Sauvegarde
- Réplication de VM
- Réseau
- Sécurité
- Stockage Bloc
- Stockage Objet
- Stockage Réseau
- Support & Coaching
- VCenter à la demande
- Show all articles (9) Collapse Articles
-
Q&R
Installer le contrôleur d’Ingress Nginx
Introduction
Cette fiche pratique propose une procédure pas à pas de l’installation du Contrôleur d’Ingress (ou Ingress Controller en anglais ) Nginx 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 :
Kubernetes : Ingress Controller
KaaS Standard : Exposition des services
À noter !
Cette fiche pratique vous est délivrée pour information uniquement, Nginx 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 Nginx.
Prérequis
Avant de déployer Nginx sur le cluster de travail, certains prérequis doivent être installés soit sur la station de travail de l’administrateur.
Sur la machine d’administration
Installez l’outil Helm, en utilisant cette page :
Sur le cluster
Configurez le vipSubnet à utiliser
La configuration de ce vipSubnet permet de choisir sur quel réseau externe votre contrôleur d’ingress va être exposé.
Merci de suivre les étapes listés sur la page suivante : ICI
- Ajoutez le repository Nginx Helm
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Installez Nginx en tant qu’Ingress Controller
À noter !
Nous recommandons de désactiver l’utilisation de l’option controller.service.appProtocol afin d’utiliser un équilibreur de charge L4 de base plutôt qu’un équilibreur de charge L7 dans vCloud Director. En procédant ainsi, le trafic sera redirigé vers votre contrôleur d’ingress, vous permettant de gérer les certificats à l’aide de votre contrôleur d’ingress, par exemple.
helm install --set controller.service.appProtocol=false ingress-nginx ingress-nginx/ingress-nginx
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é ingress-nginx-controller
qui a été déployé au moment de l’installation de Nginx.
À 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
Lancez les deux commandes ci-contre afin de créer les deux PODS et les deux services.
apple app
cat <<EOF | kubectl create -f -
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
EOF
banana app
cat <<EOF | kubectl create -f -
kind: Pod
apiVersion: v1
metadata:
name: banana-app
labels:
app: banana
spec:
containers:
- name: banana-app
image: hashicorp/http-echo
args:
- "-text=banana"
---
kind: Service
apiVersion: v1
metadata:
name: banana-service
spec:
selector:
app: banana
ports:
- port: 5678 # Default port for image
EOF
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 Nginx.
Pour ce faire, lancez la commande ci-contre et notez la valeur de la colonne EXTERNAL-IP.
À noter !
Si vous venez juste d’installer Nginx, il est possible que l’adresse externe ne soit pas encore affectée, dans ce cas attendez encore quelques secondes. Si cela ne fonctionne pas, vérifiez que vous disposez de Services Virtuels disponibles au niveau de la configuration du Load Balancer sur voter Passerelle Edge.
kubectl get svc ingress-nginx-controller
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 100.65.85.121 10.x.y.z 80:30536/TCP,443:32691/TCP 14m
Lancez la commande 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.
cat <<EOF | kubectl create -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: apple-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: apple.[ip].nip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
port:
number: 5678
name: apple-service
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: banana-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: banana.[ip].nip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
port:
number: 5678
name: banana-service
EOF
Vérifiez le status de l’objet
kubectl get ingress
Testez l’accès à la page web.
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.
cat <<EOF | kubectl create -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: apple-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: apple.[ip].nip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
port:
number: 5678
name: apple-service
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: banana-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: banana.[ip].nip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
port:
number: 5678
name: banana-service
EOF