ProHoster > Blog > Administrasi > Tip & trik Kubernetes: halaman kasalahan khusus dina NGINX Ingress
Tip & trik Kubernetes: halaman kasalahan khusus dina NGINX Ingress
Dina tulisan ieu, kuring hoyong ngobrol ngeunaan dua fitur NGINX Ingress anu aya hubunganana sareng nampilkeun halaman kasalahan anu dipersonalisasi, ogé watesan anu aya dina éta sareng cara pikeun ngerjakeunana.
1. Ngarobah backend standar
Sacara standar, NGINX Ingress nganggo backend standar, anu ngalaksanakeun fungsi anu saluyu. Ieu ngandung harti yén nalika nyuhunkeun Ingress nangtukeun host anu henteu aya dina sumber daya Ingress, kami nampi halaman di handap ieu kalayan kode réspon 404:
Tapi, beuki sering klien kami datang sareng pamundut pikeun nunjukkeun halamanna kalayan logo perusahaan sareng fasilitas sanés tibatan standar 404. Jang ngalampahkeun ieu, NGINX Ingress boga kamampuhan diwangun-di ngartikeun deui default-backend-service. Urang lulus entri format salaku argumen kana pilihan tina nami nu sami namespace/servicename. Port jasa kedahna 80.
Jang ngalampahkeun ieu, anjeun kudu nyieun pod anjeun sorangan (deployment) jeung jasa jeung aplikasi Anjeun (conto palaksanaan di YAML ti Repository ingress-nginx), anu bakal dipasihkeun tibatan backend standar.
Ieu ilustrasi leutik:
~$ 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>
Jadi sakabeh domain nu teu eksplisit dijieun via YAML kalawan kind: Ingress, digolongkeun kana standar-backend. Dina daptar di luhur, domain ieu janten sadsdasdas.
2. Nanganan kasalahan HTTP dina aplikasi ngagunakeun backend standar
kaayaan sejen requests tungtung kasalahan HTTP (404, 500, 502...) kana aplikasi nu teu ngolah kaayaan kitu (kaca geulis pakait teu dihasilkeun). Ieu ogé tiasa disababkeun ku kahayang pamekar pikeun ngalayanan halaman kasalahan anu sami dina sababaraha aplikasi.
Pikeun ngalaksanakeun hal ieu di sisi server kami peryogi:
Turutan parentah di luhur tina paragraf ngeunaan backend standar;
Tambahkeun konci kana konfigurasi nginx-ingress ConfigMap custom-http-errors, contona, kalawan nilai 404,503 (écés pakait jeung Konci kasalahan nu katutupan ku aturan anyar).
Hasil anu dipiharep parantos kahontal: nalika aplikasi klien dijalankeun sareng nampi kasalahan sareng kode réspon 404 atanapi 503, pamundutna bakal otomatis dialihkeun ka backend standar anyar...
Nanging, nalika ngembangkeun aplikasi pikeun backend standar sareng custom-http-kasalahan, anjeun kedah tumut kana fitur anu penting:
!!! 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.
Kanyataanna nyaéta nalika pamundut dialihkeun, lulugu bakal ngandung inpormasi anu mangpaat sareng kode réspon saméméhna sareng inpormasi tambahan (daptar lengkepna sayogi. di dieu).
Ieu ngandung harti yén anjeun sorangan kudu ngurus kode respon bener. Ieu conto ti dokuméntasi kumaha gawéna.
Aplikasi béda gaduh backends standar béda
Pikeun mastikeun yén solusi henteu global pikeun sakabéh klaster, tapi ngan lumaku pikeun aplikasi husus, Anjeun mimitina kudu pariksa versi Ingress. Lamun cocog 0.23 atawa saluhureuna, nganggo anotasi Ingress asli:
Urang bisa override default-backend keur masing-masing Ingress urang ngagunakeun anotasi;
Urang bisa override custom-http-errors keur masing-masing Ingress urang ngagunakeun anotasi.
Hasilna, sumberdaya Ingress bakal katingali sapertos kieu:
Dina hal ieu, kasalahan 404 sareng 502 bakal dialihkeun kana jasa halaman-halaman sareng sadaya header anu diperyogikeun.
В versi saméméhna tina Ingress teu boga fitur ieu (fateful komitmen dina 0.23). Sareng upami anjeun gaduh 2 aplikasi anu béda-béda anu ngajalankeun dina kluster anjeun sareng anjeun badé netepkeun jasa standar-backend-layanan sareng ngolah kode kasalahan anu béda pikeun masing-masing, pikeun ieu anjeun kedah nganggo workarounds, dimana urang gaduh dua.
Ingress <0.23: ngadeukeutan hiji
pilihan ieu leuwih basajan. Salaku aplikasi anu ngalayanan halamanna, urang gaduh HTML biasa, anu henteu terang kumaha ningali header sareng ngabalikeun kode réspon anu leres. Aplikasi sapertos kitu digulung nganggo Ingress tina url /error-pages, sareng dina katalog ws bakal HTML balik.
Ladenan pikeun panyebaran ieu kedah tina jinis ClusterIP.
Dina waktos anu sami, dina aplikasi dimana kami bakal ngolah kasalahan, dina Ingress kami nambihan snippet-server atanapi snippet-configuration kalayan eusi ieu:
Hiji pilihan pikeun aplikasi nu bisa ngolah headers ... Sarta sacara umum ieu cara leuwih bener, injeuman tina custom-http-kasalahan. Nganggo sacara manual (nyalin) bakal ngamungkinkeun anjeun henteu ngarobih setélan global.
Léngkah-léngkahna kieu. Urang nyieun deployment sarua kalayan aplikasi anu tiasa ngadangukeun judul anu diperyogikeun sareng ngabales leres. Tambahkeun snippet-server kana aplikasi Ingress kalayan eusi ieu:
Sakumaha anjeun tiasa tingali, pikeun tiap kasalahan anu urang hoyong diolah, urang kedah ngadamel lokasi urang sorangan, dimana sadaya header anu diperyogikeun bakal diselapkeun, sapertos dina "asli". custom-kasalahan-kaca. Ku cara ieu urang tiasa nyiptakeun halaman kasalahan pribadi anu béda bahkan pikeun lokasi sareng server individu.