ProHoster > Blog > Stjórnsýsla > Kubernetes ráð og brellur: sérsniðnar villusíður í NGINX Ingress
Kubernetes ráð og brellur: sérsniðnar villusíður í NGINX Ingress
Í þessari grein vil ég tala um tvo eiginleika NGINX Ingress sem tengjast því að sýna persónulegar villusíður, svo og takmarkanir sem eru á þeim og leiðir til að vinna í kringum þær.
1. Breyting á sjálfgefna bakenda
Sjálfgefið er að NGINX Ingress notar sjálfgefna bakenda, sem framkvæmir samsvarandi aðgerð. Þetta þýðir að þegar við biðjum um Ingress sem tilgreinir hýsil sem er ekki í Ingress tilföngunum, fáum við eftirfarandi síðu með 404 svarkóða:
Hins vegar koma sífellt oftar viðskiptavinir okkar með beiðni um að sýna síðuna sína með fyrirtækismerki og öðrum þægindum í stað venjulegs 404. Til að gera þetta hefur NGINX Ingress innbyggður hæfileiki endurskilgreina default-backend-service. Við sendum sniðfærsluna sem rök fyrir valkostinn með sama nafni namespace/servicename. Höfn þjónustunnar ætti að vera 80.
Til að gera þetta þarftu að búa til þinn eigin pod (dreifing) og þjónustu með forritinu þínu (dæmi um innleiðingu í YAML frá ingress-nginx geymslunni), sem verður gefið í stað sjálfgefna bakendans.
Hér er lítil mynd:
~$ 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>
Svo öll lén sem eru ekki beinlínis búin til í gegnum YAML með kind: Ingress, falla í sjálfgefið bakenda. Í skráningunni hér að ofan varð þetta lén sadsdasdas.
2. Meðhöndlun HTTP villur í forritinu með því að nota sjálfgefna bakendann
Önnur staða er beiðnir sem enda á HTTP villum (404, 500, 502...) í forrit sem vinnur ekki úr slíkum aðstæðum (viðsvarandi fallegar síður eru ekki búnar til). Þetta getur líka stafað af löngun þróunaraðila til að þjóna sömu villusíðum í mörgum forritum.
Til að útfæra þetta mál á netþjónahliðinni þurfum við:
Fylgdu leiðbeiningunum hér að ofan úr málsgreininni um sjálfgefna bakenda;
Bættu lykli við nginx-ingress stillingar ConfigMap custom-http-errors, til dæmis með gildinu 404,503 (svarar augljóslega til villukóðanna sem falla undir nýju regluna).
Áætluð niðurstaða hefur náðst: þegar biðlaraforritið er í gangi og fær villu með svarkóða 404 eða 503, verður beiðninni sjálfkrafa vísað á nýja sjálfgefna bakenda...
Hins vegar, þegar þú þróar forrit fyrir sjálfgefna bakenda og sérsniðnar http-villur, þarftu að taka tillit til mikilvægs eiginleika:
!!! 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.
Staðreyndin er sú að þegar beiðni er vísað áfram munu hausarnir innihalda gagnlegar upplýsingar með fyrri svarkóða og viðbótarupplýsingum (heill listi þeirra er tiltækur hér).
Þetta þýðir að þú verður sjálfur sjá um réttan svarkóða. Hér er dæmi úr skjölunum hvernig það virkar.
Mismunandi forrit eru með mismunandi sjálfgefna bakenda
Til að tryggja að lausnin sé ekki alþjóðleg fyrir allan klasann, heldur eigi hún aðeins við tiltekin forrit, þarftu fyrst að athuga Ingress útgáfuna. Ef það passar 0.23 eða hærri, notaðu innfæddu Ingress athugasemdirnar:
Í þessu tilviki verður villum 404 og 502 vísað á villusíðuþjónustuna með öllum nauðsynlegum hausum.
В fyrri útgáfur af Ingress voru ekki með þennan eiginleika (örlagavaldur á 0.23). Og ef þú ert með 2 gjörólík forrit í gangi í þyrpingunni þinni og þú vilt tilgreina aðra sjálfgefna bakendaþjónustu og vinnslu mismunandi villukóða fyrir hvert þeirra, til þess verður þú að nota lausnir, þar af höfum við tvær.
Inngangur < 0.23: nálgast eitt
Þessi valkostur er einfaldari. Sem forrit sem þjónar síðum sínum höfum við venjulegan HTML, sem veit ekki hvernig á að líta á hausana og skila réttum svarkóðum. Slíkt forrit er sett út með Ingress frá slóðinni /error-pages, og í vörulistanum ws verður skilað HTML.
Valkostur fyrir forrit sem getur unnið úr hausum... Og almennt er þetta réttari leið, fengin að láni frá sérsniðnum-http-villum. Með því að nota það handvirkt (afrita) geturðu ekki breytt alþjóðlegum stillingum.
Skrefin eru sem hér segir. Við sköpum sama dreifing með forriti sem getur hlustað á nauðsynlegar fyrirsagnir og svarað rétt. Bættu netþjónsbúti við Ingress forritið með eftirfarandi efni:
Eins og þú sérð, fyrir hverja villu sem við viljum vinna úr, þurfum við að búa til okkar eigin staðsetningu, þar sem allir nauðsynlegir hausar verða settir inn, eins og í „innfæddum“. sérsniðnar villusíður. Þannig getum við búið til mismunandi sérsniðnar villusíður, jafnvel fyrir einstaka staði og netþjóna.