Entrée est l'un des concepts importants de Kubernetes, qui permet aux utilisateurs externes d'accéder à une application conteneurisée à l'aide de FQDN (nom de domaine complet). Bien qu'Ingress ne soit pas activé et installé par défaut dans le cluster Kubernetes. Nous devons activer ce concept de base en utilisant des contrôleurs d'entrée tiers comme Nginx, Traefik, HAProxy et Istio, etc.
Dans ce didacticiel, nous allons montrer comment configurer et utiliser le contrôleur NGINX Ingress dans le cluster Kubernetes.
Comme sur l'image ci-dessus, les utilisateurs externes accèdent aux applications à l'aide du contrôleur d'entrée NGINX via FQDN et le contrôleur d'entrée interne achemine la demande vers le service, puis le service achemine la demande vers les points de terminaison ou les pods principaux.
Activer le contrôleur d'entrée NGINX dans Minikube
Minikube est un cluster Kubernetes à un seul nœud, nous pouvons facilement activer le contrôleur d'entrée nginx dans minikube en exécutant "minikube addons ” commande.
Exécutez la commande ci-dessous pour vérifier l'état du contrôleur d'entrée,
# minikube addons list
Exécutez la commande minikube suivante pour activer le contrôleur d'entrée,
[[email protected] ~]# minikube addons enable ingress * The 'ingress' addon is enabled [[email protected] ~]#
Si nous réexécutons la commande "minikube addons list", cette fois nous devons voir que le statut d'entrée est activé.
Exécutez la commande kubectl suivante pour vérifier si le pod du contrôleur d'entrée est en cours d'exécution ou non.
[[email protected] ~]# kubectl get pods --all-namespaces | grep -i nginx-controller kube-system ingress-nginx-controller-7bb4c67d67-gkjj5 1/1 Running 0 20m [[email protected] ~]#
La sortie ci-dessus confirme que nginx-controller a été activé et a démarré son pod avec succès sous l'espace de noms kube-system.
Configurer le contrôleur d'entrée dans le cluster Kubernetes (Baremetal)
Remarque : Je suppose que le cluster Kubernetes est opérationnel.
Connectez-vous au nœud maître ou au plan de contrôle et exécutez la commande kubectl suivante pour installer ingress.
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml
Sortie,
Vérifiez l'état Ingress, exécutez sous les commandes kubectl
[[email protected] ~]$ kubectl get pods -n ingress-nginx NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-4phb2 0/1 Completed 0 8m53s ingress-nginx-admission-patch-m9t8z 0/1 Completed 2 8m53s ingress-nginx-controller-f9d6fc8d8-r92jd 1/1 Running 0 8m53s [[email protected] ~]$ $ kubectl get all -n ingress-nginx
Parfait, la sortie ci-dessus confirme que le contrôleur Ingress a été installé avec succès.
Tester le contrôleur d'entrée
Pour tester le contrôleur Ingress, ajoutez d'abord les entrées suivantes dans haproxy . Mon pod de contrôleur d'entrée s'exécute sur worker-node2, c'est pourquoi j'ai mentionné worker-node2 avec NodePort.
Enregistrez et fermez le fichier, puis redémarrez le service haproxy.
Créez un déploiement basé sur nginx avec le nom "myapp"
$ kubectl create deployment myapp --image=nginx deployment.apps/myapp created $
Créez un service en exposant le déploiement avec le type ‘NodePort’
$ kubectl expose deployment myapp --name=myapp --type=NodePort --port=80 service/myapp exposed $
Vérifiez l'état du déploiement et du service, exécutez
$ kubectl get deployments myapp $ kubectl get svc myapp
sortie,
Créer une ressource Ingress pour myapp
Créez le fichier demo-ingress.yaml avec le contenu suivant. Lorsque nous appliquons ce fichier, il créera une ressource d'entrée qui permettra à l'application d'être accessible depuis l'extérieur du cluster kubernetes via le nom d'hôte. Donc, dans ce cas, le nom d'hôte de l'application est 'myapp.example.com'
$ vi demo-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-demo spec: ingressClassName: nginx rules: - host: "myapp.example.com" http: paths: - pathType: Prefix path: / backend: service: name: myapp port: number: 80
enregistrez et fermez le fichier.
Exécutez sous la commande kubectl pour créer la ressource d'entrée ci-dessus,
$ kubectl create -f demo-ingress.yaml ingress.networking.k8s.io/ingress-demo created $
Exécutez ce qui suit pour vérifier l'état de la ressource d'entrée créée ci-dessus
$ kubectl get ingress ingress-demo $kubectl describe ingress ingress-demo
Parfait, la sortie ci-dessus confirme que les ressources d'entrée ont été créées avec succès.
Avant d'accéder à ces URL depuis l'extérieur du cluster, assurez-vous d'ajouter l'entrée suivante dans le fichier hosts de votre système à partir duquel vous avez l'intention d'y accéder.
192.168.1.240 myapp.example.com
Essayez maintenant d'accéder à l'URL à partir du navigateur Web, tapez
http://monapplication.exemple.com
Génial, ci-dessus confirme que nous avons déployé et configuré avec succès le contrôleur d'entrée nginx dans Kubernetes. Veuillez partager vos précieux commentaires et commentaires.