Ingress je jedním z důležitých konceptů v Kubernetes, který umožňuje externím uživatelům přistupovat ke kontejnerizovaným aplikacím pomocí FQDN (plně kvalifikovaný název domény). Ačkoli Ingress není ve výchozím nastavení povolen a nainstalován v clusteru Kubernetes. Tento základní koncept musíme umožnit pomocí kontrolérů vstupu třetích stran, jako jsou Nginx, Traefik, HAProxy a Istio atd.
V tomto tutoriálu si ukážeme, jak nastavit a používat NGINX Ingress controller v Kubernetes Cluster.
Jak je uvedeno na obrázku výše, externí uživatelé přistupují k aplikacím pomocí NGINX Ingress Controller přes FQDN a interní Ingress Controller směruje požadavek do služby a poté služba směruje požadavek na koncové body backend nebo pod.
Povolte NGINX Ingress Controller v Minikube
Minikube je klastr Kubernetes s jedním uzlem, můžeme snadno povolit řadič vstupu nginx v minikube spuštěním „doplňků minikube “.
Spuštěním níže uvedeného příkazu ověřte stav řadiče vstupu,
# seznam doplňků minikube
Spusťte následující příkaz minikube, abyste povolili řadič vstupu,
[[email protected] ~]# doplňky minikube umožňují vstup* Doplněk 'ingress' je povolen[[email protected] ~]#
Pokud znovu spustíme příkaz „minikube addons list“, tentokrát musíme vidět, že stav vstupu je povolen.
Spusťte následující příkaz kubectl, abyste ověřili, zda modul vstupního řadiče běží nebo ne.
[[email protected] ~]# kubectl get pods --all-namespaces | grep -i nginx-controllerkube-system ingress-nginx-controller-7bb4c67d67-gkjj5 1/1 Běh 0 20 m[[e-mail chráněno] ~ #Výše uvedený výstup potvrzuje, že nginx-controller byl povolen a úspěšně spustil svůj modul pod jmenným prostorem systému kube.
Nastavení Ingress Controller v Kubernetes Cluster (Baremetal)
Poznámka: Předpokládám, že cluster Kubernetes je v provozu.
Přihlaste se k hlavnímu uzlu nebo řídicí rovině a spusťte následující příkaz kubectl pro instalaci ingress.
Použít $ kubectl -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yamlVýstup,
Ověřte stav Ingress, spusťte příkazy kubectl
[[email protected] ~]$ kubectl get pods -n ingress-nginxNAME PŘIPRAVENO STAV RESTARTUJE AGEingress-nginx-admission-create-4phb2 0/1 Dokončeno 0 8m53singress-nginx-admission-patch-m9t8z 2/1 Dokončeno 8m53singress-nginx-controller-f9d6fc8d8-r92jd 1/1 Běží 0 8m53s[[e-mail chráněno] ~]$$ kubectl získat vše -n ingress-nginx
Perfektní, výše uvedený výstup potvrzuje, že Ingress controller byl úspěšně nainstalován.
Test Ingress Controller
Chcete-li otestovat řadič Ingress, nejprve přidejte následující položky do haproxy. Můj ingress controller pod běží na worker-node2, proto jsem zmínil worker-node2 spolu s NodePort.
Uložte a zavřete soubor a restartujte službu haproxy.
Vytvořte nasazení založené na nginx s názvem ‚myapp‘
$ kubectl create deployment myapp --image=nginxdeployment.apps/myapp created$Vytvořte službu vystavením nasazení typu ‚NodePort‘
$ kubectl expose deployment myapp --name=myapp --type=NodePort --port=80service/myapp exposure$Ověřte stav nasazení a služby, spusťte
$ kubectl získat nasazení myapp$ kubectl získat svc myappvýstup,
Vytvořte zdroj Ingress pro myapp
Vytvořte soubor demo-ingress.yaml s následujícím obsahem. Když použijeme tento soubor, vytvoří se vstupní prostředek, který umožní aplikaci přistupovat z vnějšku clusteru kubernetes prostřednictvím názvu hostitele. V tomto případě je tedy název hostitele aplikace ‘myapp.example.com’
$ vi demo-ingress.yamlapiVersion:networking.k8s.io/v1kind:Ingressmetadata:name:ingress-demospec:ingressClassName:pravidla nginx:- hostitel:"myapp.example.com" http:cesty:- pathType:Prefix path:/ backend:service:name:myapp port:number:80uložte a zavřete soubor.
Provedením příkazu pod kubectl vytvořte výše vstupní zdroj
$ kubectl create -f demo-ingress.yamlingress.networking.k8s.io/ingress-demo created$Spusťte následující a ověřte stav výše vytvořeného vstupního zdroje
$ kubectl získat ingress ingress-demo $kubectl popsat ingress ingress-demo
Perfektní, výše uvedený výstup potvrzuje, že vstupní zdroje byly úspěšně vytvořeny.
Před přístupem k těmto adresám URL z vnějšku clusteru se prosím ujistěte, že jste přidali následující položku do souboru hostitelů vašeho systému, odkud jste k nim zamýšleli přistupovat.
192.168.1.240 myapp.example.comNyní zkuste získat přístup k URL z webového prohlížeče, zadejte
http://myapp.example.com
Skvělé, výše potvrzuje, že jsme úspěšně nasadili a nastavili nginx ingress controller v Kubernetes. Podělte se prosím o svou cennou zpětnou vazbu a komentáře.
Jak zpevnit a zabezpečit webový server NGINX v Linuxu Jak používat šablonu Jinja2 v Ansible PlaybookLinux