ProHoster > Blog > Administrazioa > Kubernetes-en aholkuak eta trikimailuak: errore-orri pertsonalizatuak NGINX Ingress-en
Kubernetes-en aholkuak eta trikimailuak: errore-orri pertsonalizatuak NGINX Ingress-en
Artikulu honetan, errore-orri pertsonalizatuak bistaratzearekin lotutako NGINX Ingress-en bi ezaugarriei buruz hitz egin nahi dut, baita horietan dauden mugei eta horien inguruan lan egiteko moduei buruz ere.
1. Backend lehenetsia aldatzea
Lehenespenez, NGINX Ingress-ek backend lehenetsia erabiltzen du, dagokion funtzioa betetzen duena. Horrek esan nahi du Ingress baliabideetan ez dagoen ostalari bat zehazten duen Ingress bat eskatzean, hurrengo orrialdea jasotzen dugula 404 erantzun-kode batekin:
Hala ere, gero eta maizago etortzen dira gure bezeroak 404 estandarraren ordez logo korporatiboa eta beste erosotasun batzuk dituen orria erakusteko eskaerarekin. Horretarako, NGINX Ingress-ek barne-gaitasuna birdefinitu default-backend-service. Formatu sarrera argumentu gisa pasatzen diogu izen bereko aukerari namespace/servicename. Zerbitzuaren portuak 80 izan behar du.
Horretarako, zure pod (hedapena) eta zerbitzu propioa sortu behar duzu zure aplikazioarekin (adibidea YAML-n inplementatzea ingress-nginx biltegitik), backend lehenetsiaren ordez emango dena.
Hona hemen ilustrazio txiki bat:
~$ curl -i -XGET http://sadsdasdas.kube-cloud.my/
HTTP/1.1 404 Not Found
Date: Mon, 11 Mar 2019 05:38:15 GMT
Content-Type: */*
Transfer-Encoding: chunked
Connection: keep-alive
<span>The page you're looking for could not be found.</span>
Beraz, YAML bidez esplizituki sortzen ez diren domeinu guztiak kind: Ingress, default-backend-ean erori. Goiko zerrendan, domeinu hau bihurtu zen sadsdasdas.
2. Aplikazioan HTTP erroreak kudeatzea backend lehenetsia erabiliz
Beste egoera bat HTTP erroreetan amaitzen diren eskaerak dira (404, 500, 502...) horrelako egoerak prozesatzen ez dituen aplikazio bati (dagozkion orrialde ederrak ez dira sortzen). Garatzaileek hainbat aplikaziotan errore-orri berberak hornitzeko nahia izateagatik ere gerta daiteke.
Kasu hau zerbitzariaren aldean ezartzeko:
Jarraitu backend lehenetsiari buruzko paragrafoko goiko argibideak;
Gehitu gako bat nginx-ingress ConfigMap konfigurazioari custom-http-errors, adibidez, balioarekin 404,503 (Arau berriak jasotzen dituen errore-kodeei dagokie, jakina).
Espero den emaitza lortu da: bezeroaren aplikazioa exekutatzen ari denean eta 404 edo 503 erantzun-kode batekin errore bat jasotzen duenean, eskaera automatikoki birbideratuko da backend lehenetsi berrira...
Hala ere, backend lehenetsietarako eta pertsonalizatutako http-erroreetarako aplikazio bat garatzean, ezaugarri garrantzitsu bat hartu behar duzu kontuan:
!!! Important The custom backend is expected to return the correct HTTP status code instead of 200. NGINX does not change the response from the custom default backend.
Izan ere, eskaera bat birbideratzen denean, goiburuek informazio erabilgarria izango dute aurreko erantzun-kodearekin eta informazio osagarriarekin (beren zerrenda osoa eskuragarri dago Hemen).
Horrek esan nahi du zuk zeuk behar duzula zaindu erantzun-kode zuzena. Hona hemen adibide bat dokumentaziotik nola funtzionatzen duen.
Aplikazio ezberdinek backend lehenetsi desberdinak dituzte
Irtenbidea kluster osorako globala ez dela ziurtatzeko, baina aplikazio zehatzei soilik aplikatzen zaiela, lehenik Ingress bertsioa egiaztatu behar duzu. Etortzen bada 0.23 edo handiagoa, erabili jatorrizko Ingress oharrak:
Gainditu dezakegu default-backend egiteko bakoitzeko Sarrerarena oharrak erabiliz;
Gainditu dezakegu custom-http-errors egiteko bakoitzeko Sarrerarena oharrak erabiliz.
Ondorioz, Ingress baliabideak itxura hau izango du:
Kasu honetan, 404 eta 502 erroreak errore-orrien zerbitzura birbideratuko dira beharrezko goiburu guztiekin.
В Ingress-en aurreko bertsioek ez zuten ezaugarri hori (zorigaiztoko konpromisoa 0.23an). Eta zure klusterrean 2 aplikazio guztiz desberdinak exekutatzen badituzu eta haietako bakoitzarentzako errore-kode desberdinen eta errore-kode desberdinen prozesamendu lehenetsi bat zehaztu nahi baduzu, horretarako konponbideak erabili beharko dituzu, horietako bi ditugu.
Sarrera < 0.23: hurbildu bat
Aukera hau sinpleagoa da. Bere orrialdeak zerbitzatzen dituen aplikazio gisa, HTML arrunta dugu, goiburuak begiratu eta erantzun-kode zuzenak itzultzen ez dakiena. Aplikazio hori Ingress-ekin zabaltzen da url-etik /error-pages, eta katalogoan ws itzuliko HTMLa izango da.
Goiburuak prozesatu ditzakeen aplikazio baterako aukera bat... Eta orokorrean hau modu zuzenagoa da, custom-http-errors-etatik mailegatua. Eskuz erabiltzeak (kopiatzeak) ezarpen orokorrak ez aldatzeko aukera emango du.
Urratsak hauek dira. Guk sortzen dugu hedapen bera beharrezko tituluak entzun eta zuzen erantzuteko gai den aplikazio batekin. Gehitu zerbitzari-zati bat Ingress aplikaziora eduki hau duena:
Ikusten duzunez, prozesatu nahi dugun errore bakoitzeko, geure kokapena egin behar dugu, non beharrezko goiburu guztiak txertatuko diren, “natiboan” bezala. Ohiko-error-orriak. Horrela, errore-orri pertsonalizatu desberdinak sor ditzakegu kokapen eta zerbitzari indibidualetarako ere.