ProHoster > blog > Utawala > Vidokezo na mbinu za Kubernetes: kurasa za makosa maalum katika NGINX Ingress
Vidokezo na mbinu za Kubernetes: kurasa za makosa maalum katika NGINX Ingress
Katika makala hii, nataka kuzungumza juu ya vipengele viwili vya NGINX Ingress kuhusiana na kuonyesha kurasa za makosa ya kibinafsi, pamoja na mapungufu yaliyopo ndani yao na njia za kufanya kazi karibu nao.
1. Kubadilisha backend chaguo-msingi
Kwa chaguo-msingi, NGINX Ingress hutumia backend default, ambayo hufanya kazi sambamba. Hii ina maana kwamba tunapoomba Ingress inayobainisha mwenyeji ambaye hayuko katika nyenzo za Ingress, tunapokea ukurasa ufuatao wenye msimbo wa majibu 404:
Hata hivyo, mara nyingi zaidi wateja wetu huja na ombi la kuonyesha ukurasa wao ukiwa na nembo ya shirika na huduma zingine badala ya 404 ya kawaida. Ili kufanya hivyo, NGINX Ingress ina uwezo wa kujengwa fafanua upya default-backend-service. Tunapitisha ingizo la umbizo kama hoja kwa chaguo la jina moja namespace/servicename. Bandari ya huduma inapaswa kuwa 80.
Ili kufanya hivyo, unahitaji kuunda pod yako mwenyewe (kupeleka) na huduma na programu yako (mfano utekelezaji katika YAML kutoka kwa hazina ya ingress-nginx), ambayo itatolewa badala ya msingi wa msingi.
Hapa kuna kielelezo kidogo:
~$ 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>
Kwa hivyo vikoa vyote ambavyo havijaundwa kwa njia ya YAML na kind: Ingress, kuanguka katika default-backend. Katika orodha iliyo hapo juu, kikoa hiki kilikua sadsdasdas.
2. Kushughulikia hitilafu za HTTP katika programu kwa kutumia mazingira ya msingi ya msingi
Hali nyingine ni maombi yanayoisha kwa hitilafu za HTTP (404, 500, 502...) kwa programu ambayo haishughulikii hali kama hizo (kurasa zinazolingana hazijazalishwa). Hii inaweza pia kuwa kwa sababu ya hamu ya wasanidi kutumikia kurasa sawa za makosa katika programu nyingi.
Ili kutekeleza kesi hii kwa upande wa seva tunahitaji:
Fuata maagizo hapo juu kutoka kwa aya kuhusu mazingira ya asilia;
Ongeza kitufe kwenye usanidi wa nginx-ingress ConfigMap custom-http-errors, kwa mfano, na thamani 404,503 (ni wazi inalingana na nambari za makosa ambazo zimefunikwa na sheria mpya).
Matokeo yaliyotarajiwa yamepatikana: wakati ombi la mteja linapofanya kazi na kupokea hitilafu yenye msimbo wa majibu 404 au 503, ombi litaelekezwa upya kiotomatiki kwenye mandharinyuma mpya chaguomsingi...
Walakini, wakati wa kuunda programu ya urejeshaji wa chaguo-msingi na makosa maalum ya http, unahitaji kuzingatia kipengele muhimu:
!!! 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.
Ukweli ni kwamba wakati ombi linaelekezwa upya, vichwa vitakuwa na habari muhimu na msimbo wa majibu uliopita na maelezo ya ziada (orodha yao kamili inapatikana. hapa).
Hii ina maana kwamba wewe mwenyewe lazima tunza msimbo sahihi wa majibu. Hapa kuna mfano kutoka kwa nyaraka jinsi inavyofanya kazi.
Programu tofauti zina viambajengo tofauti vya chaguo-msingi
Ili kuhakikisha kuwa suluhisho sio la kimataifa kwa nguzo nzima, lakini inatumika tu kwa programu maalum, kwanza unahitaji kuangalia toleo la Ingress. Ikiwa inalingana 0.23 au zaidi, tumia maelezo ya asili ya Ingress:
Tunaweza kubatilisha default-backend kwa kila mmoja Ingress ya kwa kutumia maelezo;
Tunaweza kubatilisha custom-http-errors kwa kila mmoja Ingress ya kwa kutumia maelezo.
Kama matokeo, rasilimali ya Ingress itaonekana kama hii:
Katika kesi hii, makosa 404 na 502 yataelekezwa kwenye huduma ya kurasa za makosa na vichwa vyote muhimu.
Π matoleo ya awali ya Ingress hayakuwa na kipengele hiki (ahadi mbaya saa 0.23) Na ikiwa una programu 2 tofauti kabisa zinazoendesha kwenye nguzo yako na unataka kutaja huduma tofauti-msingi-backend na usindikaji wa misimbo tofauti ya makosa kwa kila mmoja wao, kwa hili itabidi utumie njia za kazi, ambazo tuna mbili.
Ingress <0.23: karibia moja
Chaguo hili ni rahisi zaidi. Kama programu ambayo hutumikia kurasa zake, tuna HTML ya kawaida, ambayo haijui jinsi ya kuangalia vichwa na kurudisha misimbo sahihi ya majibu. Programu kama hiyo inatolewa na Ingress kutoka url /error-pages, na katika orodha ws itakuwa HTML iliyorejeshwa.
Huduma ya uwekaji huu lazima iwe ya aina ya ClusterIP.
Wakati huo huo, katika programu ambapo tutashughulikia kosa, katika Ingress tunaongeza kijisehemu cha seva au kijisehemu cha usanidi na maudhui yafuatayo:
Chaguo kwa ajili ya programu ambayo inaweza kuchakata vichwa... Na kwa ujumla hii ni njia sahihi zaidi, iliyokopwa kutoka kwa makosa-ya-http ya desturi. Kuitumia kwa mikono (kunakili) itakuruhusu usibadilishe mipangilio ya ulimwengu.
Hatua ni kama ifuatavyo. Tunaunda kupelekwa sawa na programu ambayo inaweza kusikiliza vichwa vya habari muhimu na kujibu kwa usahihi. Ongeza kijisehemu cha seva kwenye programu ya Ingress na maudhui yafuatayo:
Kama unaweza kuona, kwa kila kosa ambalo tunataka kusindika, tunahitaji kutengeneza eneo letu, ambapo vichwa vyote muhimu vitaingizwa, kama vile "asili". kurasa-makosa-maalum. Kwa njia hii tunaweza kuunda kurasa tofauti za hitilafu zilizobinafsishwa hata kwa maeneo na seva mahususi.
PS
Nyingine kutoka kwa safu za vidokezo na hila za K8s: