GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer le contrôleur d'entrée NGINX dans Kubernetes

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.


Linux
  1. Comment générer un certificat auto-signé pour Kubernetes

  2. Comment configurer le cluster Kubernetes (k8s) en HA avec Kubeadm

  3. Comment configurer le cluster Kubernetes sur Google Cloud Platform (GCP)

  4. Comment configurer NGINX hautement disponible avec KeepAlived sous Linux

  5. Comment configurer Samba en tant que contrôleur de domaine principal sous Linux

Comment configurer Nginx en tant que proxy inverse pour Apache sur Ubuntu 18.04 VPS

Comment configurer le cache Nginx sur un serveur LAMP

Comment configurer le cache Nginx sur le serveur LEMP

Comment configurer Mantis Bug Tracker sur Debian 10

Comment configurer un serveur NGINX RTMP pour le streaming

Comment configurer Logstash sur Linux avec ElasticSearch, Redis, Nginx