
Ma kēia ʻatikala, makemake wau e kamaʻilio e pili ana i ʻelua mau hiʻohiʻona o NGINX Ingress e pili ana i ka hōʻike ʻana i nā ʻaoʻao hewa pilikino, a me nā palena i loko o lākou a me nā ala e hana ai a puni lākou.
1. Ke hoʻololi nei i ka hope hope
Ma ka maʻamau, hoʻohana ʻo NGINX Ingress i ka backend paʻamau, e hana ana i ka hana like. ʻO ia ke ʻano o ka noi ʻana i kahi Ingress e kuhikuhi ana i kahi host ʻaʻole i loko o nā kumuwaiwai Ingress, loaʻa iā mākou ka ʻaoʻao aʻe me kahi code pane 404:
![]()
Eia nō naʻe, ʻoi aku ka nui o kā mākou mea kūʻai aku e hele mai me kahi noi e hōʻike i kā lākou ʻaoʻao me kahi hōʻailona hui a me nā pono ʻē aʻe ma kahi o ka 404 maʻamau. No ka hana ʻana i kēia, loaʻa iā NGINX Ingress wehewehe hou default-backend-service. Hāʻawi mākou i ke komo ʻana ma ke ʻano he hoʻopaʻapaʻa i ke koho o ka inoa like namespace/servicename. He 80 ka awa o ka lawelawe.
No ka hana ʻana i kēia, pono ʻoe e hana i kāu pod (deployment) a me ka lawelawe me kāu noi ( mai ka waihona waihona ingress-nginx), e hāʻawi ʻia ma kahi o ka backend paʻamau.
Eia kahi kiʻi liʻiliʻi:
~$ 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> No laila nā kāʻei kapu a pau ʻaʻole i hana ʻia ma o YAML me kind: Ingress, hāʻule i ka default-backend. Ma ka papa inoa ma luna, ua lilo kēia kahua sadsdasdas.
2. Ka mālama ʻana i nā hewa HTTP i ka noi me ka hoʻohana ʻana i ka hope paʻamau
ʻO kahi kūlana ʻē aʻe nā noi e hoʻopau ana i nā hewa HTTP (404, 500, 502...) i kahi noi ʻaʻole e hoʻokō i kēlā mau kūlana (ʻaʻole i hana ʻia nā ʻaoʻao nani e pili ana). Ma muli paha o ka makemake o nā mea hoʻomohala e lawelawe i nā ʻaoʻao hewa like i nā noi he nui.
No ka hoʻokō ʻana i kēia hihia ma ka ʻaoʻao kikowaena pono mākou:
- E hahai i nā ʻōlelo aʻoaʻo ma luna mai ka paukū e pili ana i ka hope hope;
- Hoʻohui i kahi kī i ka nginx-ingress configuration ConfigMap
custom-http-errors, no ka laʻana, me ka waiwai404,503(ʻike maopopo i nā code hewa i uhi ʻia e ke kānāwai hou).
Ua hoʻokō ʻia ka hopena i manaʻo ʻia: ke holo nei ka mea kūʻai aku a loaʻa kahi hewa me ka helu pane 404 a i ʻole 503, e hoʻihoʻi hou ʻia ka noi i ka backend paʻamau hou...
Eia nō naʻe, i ka hoʻomohala ʻana i kahi noi no ka backend paʻamau a me ka custom-http-hewa, pono ʻoe e noʻonoʻo i kahi hiʻohiʻona nui:
!!! 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.ʻO ka mea ʻoiaʻiʻo ke hoʻohuli hou ʻia kahi noi, e loaʻa i nā poʻomanaʻo nā ʻike kūpono me ka helu pane mua a me nā ʻike hou aku (loaʻa kā lākou papa inoa piha. ).
ʻO ia hoʻi, pono ʻoe iā ʻoe iho e mālama i ke code pane pololei. mai ka palapala pehea e hana ai.
Loaʻa i nā polokalamu ʻokoʻa nā ʻaoʻao hope ʻokoʻa
No ka hōʻoia ʻana ʻaʻole honua ka hopena no ka hui holoʻokoʻa, akā pili wale i nā noi kikoʻī, pono ʻoe e nānā i ka mana Ingress. Inā pili 0.23 a ʻoi aku paha, e hoʻohana i nā ʻōlelo hōʻike maoli Ingress:
- Hiki iā mākou ke hoʻopau
default-backendno ka mea, pakahi ʻO Ingress ; - Hiki iā mākou ke hoʻopau
custom-http-errorsno ka mea, pakahi ʻO Ingress .
ʻO ka hopena, e like ke ʻano o ka waiwai Ingress e like me kēia:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ .Chart.Name }}-app2
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/custom-http-errors: "404,502"
nginx.ingress.kubernetes.io/default-backend: error-pages
spec:
tls:
- hosts:
- app2.example.com
secretName: wildcard-tls
rules:
- host: app2.example.com
http:
paths:
- path: /
backend:
serviceName: {{ .Chart.Name }}-app2
servicePort: 80I kēia hihia, e hoʻihoʻi ʻia nā hewa 404 a me 502 i ka lawelawe ʻaoʻao hewa me nā poʻomanaʻo āpau.
В ʻAʻole i loaʻa kēia hiʻohiʻona i nā mana mua o Ingress (). A inā loaʻa iā ʻoe 2 mau noi like ʻole e holo ana i kāu hui a makemake ʻoe e kuhikuhi i kahi lawelawe default-backend-service a me ka hoʻoili ʻana i nā code hewa like ʻole no kēlā me kēia o lākou, no kēia mea pono ʻoe e hoʻohana i nā workarounds, ʻelua mākou.
Komo <0.23: hoʻokokoke i hoʻokahi
ʻOi aku ka maʻalahi o kēia koho. Ma ke ʻano he noi e lawelawe ana i kāna mau ʻaoʻao, loaʻa iā mākou ka HTML maʻamau, ʻaʻole ʻike i ka nānā ʻana i nā poʻo a hoʻihoʻi i nā code pane pololei. Hoʻopili ʻia kēlā palapala noi me Ingress mai ka url /error-pages, a ma ka papa helu ws ʻo ia ka HTML i hoʻihoʻi ʻia.
Hōʻike kiʻi ma YAML:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ .Chart.Name }}-app2
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/server-snippet: |
proxy_intercept_errors on;
error_page 500 501 502 503 504 @error_pages;
location @error_pages {
rewrite ^ /error-pages/other/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}
spec:
tls:
- hosts:
- app2.example.com
secretName: wildcard-tls
rules:
- host: app2.example.com
http:
paths:
- path: /
backend:
serviceName: {{ .Chart.Name }}-app2
servicePort: 80Pono ka lawelawe no kēia hoʻolaha ʻana ma ke ʻano ClusterIP.
I ka manawa like, i ka noi kahi e hoʻoponopono ai mākou i ka hewa, ma Ingress mākou e hoʻohui i kahi kikowaena-snippet a i ʻole hoʻonohonoho-snippet me kēia ʻike:
nginx.ingress.kubernetes.io /server-snippet: |
proxy_intercept_errors on;
error_page 500 501 502 503 504 @error_pages;
location @error_pages {
rewrite ^ /error-pages/ws/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}Komo <0.23: hoʻokokoke lua
ʻO kahi koho no kahi noi e hiki ke hoʻoponopono i nā poʻomanaʻo ... A ma ka laulā he ala pololei kēia, i ʻaiʻē ʻia mai nā custom-http-errors. ʻO ka hoʻohana ʻana iā ia me ka lima (kopi) e ʻae iā ʻoe ʻaʻole e hoʻololi i nā hoʻonohonoho honua.
Penei na anuu. Hana mākou me kahi noi hiki ke hoʻolohe i nā poʻomanaʻo pono a pane pololei. Hoʻohui i kahi kikowaena-snippet i ka noi Ingress me kēia ʻike:
nginx.ingress.kubernetes.io /server-snippet: |
proxy_intercept_errors off;
error_page 404 = @custom_404;
error_page 503 = @custom_503;
location @custom_404 {
internal;
proxy_intercept_errors off;
proxy_set_header X-Code 404;
proxy_set_header X-Format $http_accept;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Namespace $namespace;
proxy_set_header X-Ingress-Name $ingress_name;
proxy_set_header X-Service-Name $service_name;
proxy_set_header X-Service-Port $service_port;
proxy_set_header Host $best_http_host;
rewrite ^ /error-pages/ws/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}
location @custom_503 {
internal;
proxy_intercept_errors off;
proxy_set_header X-Code 503;
proxy_set_header X-Format $http_accept;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header X-Namespace $namespace;
proxy_set_header X-Ingress-Name $ingress_name;
proxy_set_header X-Service-Name $service_name;
proxy_set_header X-Service-Port $service_port;
proxy_set_header Host $best_http_host;
rewrite ^ /error-pages/ws/index.html break;
proxy_pass http://error-pages.prod.svc.cluster.local;
}E like me kāu e ʻike ai, no kēlā me kēia hewa a mākou e makemake ai e hoʻoponopono, pono mākou e hana i ko mākou wahi ponoʻī, kahi e hoʻokomo ʻia ai nā poʻomanaʻo pono a pau, e like me ka "maoli". . Ma kēia ala hiki iā mākou ke hana i nā ʻaoʻao hewa pilikino like ʻole no nā wahi a me nā kikowaena.
PS
Nā mea ʻē aʻe mai nā ʻōlelo aʻoaʻo a me nā hoʻopunipuni K8s:
- «";
- «";
- «";
- «".
E heluhelu pū ma kā mākou blog:
- «";
- «".
Source: www.habr.com
