GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il controller di ingresso NGINX in Kubernetes

Ingresso è uno dei concetti importanti in Kubernetes, che consente agli utenti esterni di accedere all'applicazione containerizzata utilizzando FQDN (nome di dominio completo). Sebbene Ingress non sia abilitato e installato per impostazione predefinita nel cluster Kubernetes. Dobbiamo abilitare questo concetto fondamentale utilizzando controller di ingresso di terze parti come Nginx, Traefik, HAProxy e Istio ecc.

In questo tutorial dimostreremo come configurare e utilizzare il controller di ingresso NGINX in Kubernetes Cluster.

Come nell'immagine sopra, gli utenti esterni accedono alle applicazioni utilizzando il controller di ingresso NGINX tramite FQDN e il controller di ingresso interno instrada la richiesta al servizio, quindi il servizio instrada la richiesta ai punti di back-end o ai pod.

Abilita il controller di ingresso NGINX in Minikube

Minikube è un cluster Kubernetes a nodo singolo, possiamo facilmente abilitare il controller di ingresso nginx in minikube eseguendo "minikube addons comando ".

Esegui il comando seguente per verificare lo stato del controller di ingresso,

# minikube addons list

Esegui il seguente comando minikube per abilitare il controller di ingresso,

[[email protected] ~]# minikube addons enable ingress
* The 'ingress' addon is enabled
[[email protected] ~]#

Se eseguiamo nuovamente il comando "minikube addons list", questa volta dobbiamo vedere che lo stato di ingresso è abilitato.

Esegui il seguente comando kubectl per verificare se il pod del controller di ingresso è in esecuzione o meno.

[[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] ~]#

L'output sopra conferma che nginx-controller è stato abilitato e avviato correttamente il suo pod nello spazio dei nomi kube-system.

Installazione del controller di ingresso nel cluster Kubernetes (baremetal)

Nota: Presumo che il cluster Kubernetes sia attivo e funzionante.

Accedi al nodo master o al piano di controllo ed esegui il seguente comando kubectl per installare ingress.

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml

Uscita,

Verifica lo stato Ingress, esegui sotto i comandi 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

Perfetto, l'output sopra conferma che il controller Ingress è stato installato correttamente.

Test del controller di ingresso

Per testare il controller Ingress, aggiungi prima le seguenti voci in haproxy . Il mio pod del controller di ingresso è in esecuzione su worker-node2, ecco perché ho menzionato worker-node2 insieme a NodePort.

Salva e chiudi il file, quindi riavvia il servizio haproxy.

Crea una distribuzione basata su nginx con il nome "myapp"

$ kubectl create deployment myapp --image=nginx
deployment.apps/myapp created
$

Crea un servizio esponendo la distribuzione con il tipo "NodePort"

$ kubectl expose deployment myapp --name=myapp --type=NodePort --port=80
service/myapp exposed
$

Verifica lo stato di distribuzione e servizio, esegui

$ kubectl get deployments myapp
$ kubectl get svc myapp

uscita,

Crea risorsa Ingress per myapp

Crea il file demo-ingress.yaml con il seguente contenuto. Quando applichiamo questo file, creerà una risorsa di ingresso che consentirà all'applicazione di accedere dall'esterno del cluster kubernetes tramite il nome host. Quindi, in questo caso, il nome host dell'applicazione è "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

salva e chiudi il file.

Esegui sotto il comando kubectl per creare una risorsa di ingresso sopra,

$ kubectl create -f demo-ingress.yaml
ingress.networking.k8s.io/ingress-demo created
$

Esegui di seguito per verificare lo stato della risorsa di ingresso creata sopra

$ kubectl get ingress ingress-demo 
$kubectl describe ingress ingress-demo

Perfetto, l'output sopra conferma che le risorse di ingresso sono state create correttamente.

Prima di accedere a questi URL dall'esterno del cluster, assicurati di aggiungere la seguente voce nel file hosts del tuo sistema da dove intendevi accedervi.

192.168.1.240                myapp.example.com

Ora prova ad accedere all'URL dal browser web, digita

http://myapp.example.com

Ottimo, quanto sopra conferma che abbiamo distribuito e configurato correttamente il controller di ingresso nginx in Kubernetes. Condividi i tuoi preziosi feedback e commenti.


Linux
  1. Come generare un certificato autofirmato per Kubernetes

  2. Come configurare il cluster Kubernetes(k8s) in HA con Kubeadm

  3. Come configurare il cluster Kubernetes su Google Cloud Platform (GCP)

  4. Come configurare NGINX ad alta disponibilità con KeepAlived in Linux

  5. Come configurare Samba come controller di dominio primario in Linux

Come configurare Nginx come proxy inverso per Apache su Ubuntu 18.04 VPS

Come configurare la cache Nginx su un server LAMP

Come configurare la cache Nginx sul server LEMP

Come configurare Mantis Bug Tracker su Debian 10

Come configurare un server NGINX RTMP per lo streaming

Come configurare Logstash su Linux con ElasticSearch, Redis, Nginx