Muchikamu chino, ndinoda kutaura pamusoro pezvinhu zviviri zveNGINX Ingress zvine chokuita nekuratidza mapeji ekukanganisa kwemunhu, pamwe chete nemiganhu iripo mavari uye nzira dzekushanda dzakavapoteredza.
1. Kuchinja default backend
By default, NGINX Ingress inoshandisa default backend, iyo inoita basa rinoenderana. Izvi zvinoreva kuti kana uchikumbira Ingress ichitsanangura muenzi asiri muIngress zviwanikwa, tinogashira peji rinotevera rine 404 mhinduro kodhi:
Nekudaro, kazhinji kazhinji vatengi vedu vanouya nechikumbiro chekuratidza peji yavo ine logo yekambani uye zvimwe zvinowanika panzvimbo peiyo standard 404. Kuti uite izvi, NGINX Ingress ine default-backend-service
. Isu tinopfuudza iyo fomati yekupinda senharo kune iyo sarudzo yezita rimwechete namespace/servicename
. Chiteshi chesevhisi chinofanira kunge chiri makumi masere.
Kuti uite izvi, unofanirwa kugadzira yako pod (deployment) uye sevhisi nechishandiso chako (
Heino mufananidzo mudiki:
~$ 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>
Saka ese madomasi asina kugadzirwa zvakajeka kuburikidza neYAML ne kind: Ingress
, inowira mune default-backend. Mune rondedzero iri pamusoro, iyi domain yakave sadsdasdas
.
2. Kubata zvikanganiso zveHTTP muchirongwa uchishandisa default backend
Imwe mamiriro zvikumbiro zvinopera muHTTP zvikanganiso (404, 500, 502...) kune application isingagadzirise mamiriro akadai (mapeji anoenderana akanaka haana kugadzirwa). Izvi zvinogona zvakare kuve nekuda kwechishuwo chevagadziri vekushandisa iwo mapeji ekukanganisa akafanana mune akawanda maapplication.
Kuti tishandise iyi kesi padivi reseva tinoda:
- Tevedza mirairo iri pamusoro kubva pandima nezve default backend;
- Wedzera kiyi kune nginx-ingress kumisikidza ConfigMap
custom-http-errors
, somuenzaniso, nehuwandu404,503
(zviri pachena inowirirana nemakodhi ekukanganisa anofukidzwa nemutemo mutsva).
Mhedzisiro inotarisirwa yawanikwa: kana chikumbiro chemutengi chiri kushanda uye chikagashira chikanganiso nekodhi yemhinduro 404 kana 503, chikumbiro chinozodzoserwa otomatiki kune itsva default backend...
Nekudaro, kana uchigadzira application ye default backend uye tsika-http-zvikanganiso, unofanirwa kufunga nezve chinhu chakakosha:
!!! 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.
Icho chokwadi ndechekuti kana chikumbiro chikafambiswazve, misoro ichange iine ruzivo runobatsira neiyo yapfuura kodhi yekupindura uye neruzivo rwekuwedzera (runyorwa rwavo rwakakwana rwuripo.
Izvi zvinoreva kuti iwe pachako unofanira chengetedza kodhi yemhinduro chaiyo.
Maapplication akasiyana ane akasiyana default backends
Kuti uone kuti mhinduro yacho haisi yepasi rose yeboka rose, asi inoshanda kune chaiwo maapplication, iwe unofanirwa kutanga watarisa iyo Ingress vhezheni. Kana zvichienderana 0.23 kana kupfuura, shandisa zvinyorwa zveIngress:
- Tinogona kushandura
default-backend
nokuti cheumwe neumwe Ingress'skushandisa annotations ; - Tinogona kushandura
custom-http-errors
nokuti cheumwe neumwe Ingress'skushandisa annotations .
Nekuda kweizvozvo, iyo Ingress resource ichaita senge ichi:
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: 80
Muchiitiko ichi, kukanganisa 404 uye 502 kuchadzoserwa kune yekukanganisa-mapeji sevhisi ine ese anodiwa misoro.
В shanduro dzekare dzeIngress dzainge dzisina chinhu ichi (
Ingress <0.23: swedera kune imwe
Iyi sarudzo iri nyore. Sechikumbiro chinoshumira mapeji ayo, tine HTML yenguva dzose, iyo isingazivi kutarisa misoro uye kudzorera mhinduro dzakakodzera. Chikumbiro chakadaro chinotenderedzwa neIngress kubva kuurl /error-pages
, uye mubhuku ws
ichava HTML yakadzorerwa.
Mufananidzo muYAML:
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: 80
Sevhisi yekutumirwa iyi inofanirwa kunge iri yerudzi rweClusterIP.
Panguva imwecheteyo, mukushandisa kwatinozogadzirisa kukanganisa, muIngress tinowedzera server-snippet kana dhizaini-snippet ine zvinotevera zvirimo:
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;
}
Ingress <0.23: nzira yechipiri
Sarudzo yeapplication inogona kugadzirisa misoro... Uye kazhinji iyi ndiyo nzira chaiyo, yakakweretwa kubva kutsika-http-zvikanganiso. Kuishandisa nemaoko (kukopa) kuchakubvumidza kuti usachinje marongero epasirese.
Matanho acho ndeaya anotevera. Isu tinosika
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;
}
Sezvauri kuona, pakukanganisa kwega kwega kwatinoda kugadzirisa, isu tinofanirwa kugadzira yedu pachedu nzvimbo, apo misoro yese inodiwa ichaiswa, se "yekuzvarwa" imwe.
PS
Zvimwe kubva kuK8s matipi & matipi akateedzana:
- «
Kuendesa zviwanikwa zvinoshanda musumbu kune Helm 2 manejimendi "; - «
Nezve node kugoverwa uye mitoro pawebhu application "; - «
Kuwana kune saiti dze dev "; - «
Kumhanyisa bootstrap kune yakakura dhatabhesi ".
Verenga zvakare pablog yedu:
- «
Dzokera kumamicroservices neIstio. Chikamu 1 "; - «
[Ine Mufananidzo] Nhungamiro kune network muKubernetes. Chikamu 3 ".
Source: www.habr.com