
á€áá±áŹááșážáá«ážááœááșá áá»áœááșáŻááșáááș ááŻááčáááŻááșáá±ážááźážááá·áșááŒáŻááŻááșááŹážáá±áŹ áĄááŸáŹážá
áŹáá»ááșááŸáŹáá»áŹážáááŻááŒáááŒááșážáááŻááșáᏠNGINX Ingress ááĄááșáčáá«áááșááŸá
áșááŻááŸáá·áș áááșážáááŻá·ááœááșááŸááá±áŹ ááá·áșáááșáá»ááșáá»áŹážááŸáá·áș áááșážáááŻá·áááșáááșážáá»ááșááœááș ááŻááșáá±áŹááșáááá·áșáááșážáááșážáá»áŹážááᯠááŒá±áŹááŒáááŻáá«áááșá
1. ááŻá¶áá±áá±áŹááșáá¶áááŻááŒá±áŹááșážááŒááșážá
áá°áááșážáĄáŹážááŒáá·áșá NGINX Ingress áááș áááșáááŻááșááŹááŻááșáá±áŹááșáá»ááșááᯠááŻááșáá±áŹááșáá±ážááá·áș default backend áááŻáĄááŻá¶ážááŒáŻáááșá áááŻáááŻáááșááŸáŹ Ingress áĄáááșážáĄááŒá áșáá»áŹážááœááșáááŻááșáá±áŹ host áááŻáááșááŸááșááŒááșáž Ingress áááŻáá±áŹááșážáááŻáá±áŹáĄáá«á 404 ááŻá¶á·ááŒááșááŸáŻááŻááșááŸáá·áșáĄáá°áĄá±áŹááșáá«á áŹáá»ááșááŸáŹáááŻáá»áœááșáŻááșáááŻá·áááșáá¶áááŸááááș-
![]()
áááŻá·áá±áŹáșá áá»áœááșáŻááșáááŻá·ááá±áŹááșáááșáá»áŹážáááș á
á¶ 404 áĄá
áŹáž áá±áŹáșáááŻááááșáááŻáááŻááŸáá·áș áĄááŒáŹážááŹááŹáĄáááșááŒá±ááŸáŻáá»áŹážááŒáá·áș áááșážáááŻá·áá
áŹáá»ááșááŸáŹáááŻááŒááááș áá±áŹááșážáááŻááŸáŻ áááŻáá»áŹážááŹáááșá áá«áááŻááŻááșáááŻá· NGINX Ingress ááŸáŹ ááŸááááșá ááŒááșáááșáááșááŸááșáá«á default-backend-service. áá»áœááșáŻááșáááŻá·áááș áá°ááźáá±áŹáĄáááșá ááœá±ážáá»ááșááŸáŻáááŻá· áĄááŒááșážáĄááŻá¶áá
áșááŻáĄááŒá
áș áá±áŹáșáááșááá·áșááœááșážááŸáŻááᯠáá±ážáááŻá·áá«áááșá namespace/servicename. áááșáá±áŹááșááŸáŻá port áááș 80 ááŒá
áșááá·áșáááșá
ááźáááŻááŻááșáááŻá·á ááá·áșáá»áŸá±áŹááșááœáŸáŹááČá· ááá·áșáááŻááșáááŻááș pod (ááŒáá·áșáá»ááșááŸáŻ) ááČá· áááșáá±áŹááșááŸáŻááᯠáááșááźážáááŻá· áááŻáĄááșáá«áááș ( ingress-nginx repository ááŸ) default backend áĄá áŹáž áá±ážáá«áááșá
áá«á ááŻá¶á„áááŹáá±ážáá áșááŻáá«á
~$ 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> áááŻá·ááŒá±áŹáá·áș YAML ááŸáááá·áș áĄáá°ážááááș áááșááźážáááŹážáá±áŹ áááŻááááșážáá»áŹážáĄáŹážááŻá¶áž kind: Ingress, default-backend ááČáááŻá·áá»ááœáŹážáááșá áĄáááșáá±áŹáșááŒáá«á
áŹáááșážááœááșá á€áááŻááááșážááŒá
áșááŹáááșá sadsdasdas.
2. áá°áááșážáá±áŹááșáá¶ááᯠáĄááŻá¶ážááŒáŻá áĄáááźáá±ážááŸááșážááŸá HTTP áĄááŸáŹážáá»áŹážááᯠáááŻááșááœááșááŒááșážá
áĄááŒáŹážáĄááŒá±áĄáá±ááŸáŹ HTTP áĄááŸáŹážáĄááœááșážáá»áŹáž (404á 500á 502...) ááœááș áĄááŻá¶ážáááșááŹážáá±áŹ áá±áŹááșážáááŻááŸáŻáá»áŹážáááș áááŻáááŻá·áá±áŹáĄááŒá±áĄáá±áá»áŹážááᯠáááŻááșáá±áŹááșáááŻááșáá±áŹ áĄáááźáá±ážááŸááșážáá áșááŻáá¶áááŻá· (áááșáááŻááșáᏠááŸááá±áŹá áŹáá»ááșááŸáŹáá»áŹážááᯠáááŻááșáá±ážáá«)á áááșážáááș áĄáááźáá±ážááŸááșážáá»áŹážá áœáŹááœááș áá°ááźáá±áŹáĄááŸáŹážá áŹáá»ááșááŸáŹáá»áŹážááᯠáá±áŹááșááœááșáá±ážáááŻáá±áŹ developer áá»áŹážá áááčáááŒá±áŹáá·áșáááșáž ááŒá áșáááŻááșáááșá
á€ááá áčá áááșááᯠááŹááŹáááșááœááș áĄáá±áŹááșáĄáááșáá±áŹáșáááș áá»áœááșáŻááșáááŻá· áááŻáĄááșáááș-
- ááŻá¶áá±áá±áŹááșáá¶áĄááŒá±áŹááșáž áĄáááŻááșá០áĄáááșáá±áŹáșááŒáá« ááœáŸááșááŒáŹážáá»ááșáá»áŹážááᯠáááŻááșááŹáá«á
- nginx-ingress ááœáČá·á
ááșážááŸáŻ ConfigMap áááŻá· áá±áŹá·áá
áșááŻááá·áșáá«á
custom-http-errorsá„áááŹáĄáŹážááŒáá·áșá áááșáááŻážááŸáá·áș404,503(á ááșážáááșážáĄáá áșááŒáá·áș áĄáá»áŻá¶ážáááșáá±áŹ áĄááŸáŹážááŻááșáá»áŹážááŸáá·áș áááŻááșááźáááș)á
áá»áŸá±áŹáșááá·áșááŹážááá·áșááááșááᯠáĄá±áŹááșááŒááșááŒáźážááŒáź- ááááŻááșážááá·áșáĄáááźáá±ážááŸááșážáááș ááŻááșáá±áŹááșáá±ááŒáźáž ááŻá¶á·ááŒááșááŸáŻááŻááș 404 áááŻá·áááŻááș 503 ááŒáá·áș áĄááŸáŹážáĄááœááșážáá áșááŻááᯠáááșáá¶áááŸááá±áŹáĄáá«á áá±áŹááșážáááŻáá»ááșáááș ááŻá¶áá±áá±áŹááșáá¶áááŻááșáĄáá áșáááŻá· áĄáááŻáĄáá»á±áŹááșááŒááșááœáŸááșážááœáŹážáááá·áșáááș...
áááŻá·áá±áŹáșá ááŻá¶áá±áá±áŹááșáá¶ááŸáá·áș á áááșááŒááŻááș-http-áĄááŸáŹážáá»áŹážáĄááœááș áĄáááźáá±ážááŸááșážáá áșááŻááᯠááźááœááșáá±áŹáĄáá«ááœááșá áááșáááș áĄáá±ážááŒáźážáá±áŹáĄááșáčáá«áááșááᯠááá·áșááœááșážá ááșážá áŹážáááș áááŻáĄááșáááș-
!!! 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.áĄááŸááșááŸáŹ áá±áŹááșážáááŻááŸáŻáá áșááŻáĄáŹáž ááŒááșáááșááœáŸááșážáááŻááá·áșáĄáá«á áá±á«ááșážá áźážáá»áŹážááœááș ááááșááŻá¶á·ááŒááșááŸáŻááŻááșááŸáá·áș áĄáááŻáĄáá»ááșáĄáááșáá»áŹážáá«ááŸáááá·áș áĄááŻá¶ážáááșáá±áŹáĄáá»ááșáĄáááșáá»áŹážáá«ááŸááááș (áááșážáááŻá·áá áŹáááșážáĄááŒáá·áșáĄá áŻá¶ááᯠááááŻááșáááș ).
áááŻáááŻááŹá áááșáááŻááșáááŻááș ááŻááșááááșá ááŸááșáááșáá±áŹááŻá¶á·ááŒááșááŸáŻááŻááșááᯠáááŻá ááŻááșáá«á. á áŹááœááșá áŹáááșážááá± áááșáááŻáĄááŻááșááŻááșááČá
ááá°ááźáá±áŹ áĄáááźáá±ážááŸááșážáá»áŹážááœááș ááá°ááźáá±áŹ ááŻá¶áá±áá±áŹááșáá¶áá»áŹážááŸááááșá
ááŒá±ááŸááșážáá»ááșáááș áĄá áŻáĄáá±ážáá áșááŻááŻá¶ážáĄááœááș áááčááŹááŻá¶ážáááŻááșááŹáááŻááșáá±áŹáșáááșáž áááá»áá±áŹáĄááșááșááźáá±ážááŸááșážáá»áŹážááŸáá·áșáᏠáááșáááŻááșááŒá±áŹááșáž áá±áá»áŹá á±áááșá áááșáŠážá áœáŹ Ingress ááŹážááŸááșážááᯠá á áșáá±ážáááș áááŻáĄááșáá«áááșá áááŻááșáááŻááșáááș 0.23 ááŸáá·áșáĄáááșáá°áááșáž Ingress ááŸááșáá»ááșáá»áŹážááᯠáĄááŻá¶ážááŒáŻáá«-
- áá»áœááșáŻááșáááŻá·áááș áááșááá±ážáááŻááșáááșá
default-backendáĄááœááș áá áșááŻáá»ááșážá áźááᯠIngress ááČá· ; - áá»áœááșáŻááșáááŻá·áááș áááșááá±ážáááŻááșáááșá
custom-http-errorsáĄááœááș áá áșááŻáá»ááșážá áźááᯠIngress ááČá· .
ááááșáĄáá±ááŒáá·áș Ingress áááșážááŒá áșáááș á€ááČá·áááŻá· ááŒááșááœá±á·ááááá·áșáááș-
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á€ááá áčá ááœááșá áĄááŸáŹážáĄááœááșáž 404 ááŸáá·áș 502 áááș áááŻáĄááșáá±áŹ áá±á«ááșážá áźážáá»áŹážáĄáŹážááŻá¶ážáá«ááŸááá±áŹ áĄááŸáŹážá áŹáá»ááșááŸáŹáá»áŹážáááșáá±áŹááșááŸáŻáááŻá· ááŒááșáááșááœáŸááșážáá±ážáá«áááșá
Đ Ingress á ááááșááŹážááŸááșážáá»áŹážááœááș á€áĄááșáčáá«áááșááá«áááșáá«á () áĄáááșá ááá·áșááœááș ááŻá¶ážáááœáČááŒáŹážááŒáŹážááŹážáá±áŹ áĄáááźáá±ážááŸááșáž á áᯠááŸáááŒáźáž ááá·áșááœááș ááŻááșáá±áŹááșáá±ááá·áș ááá°ááźáá±áŹ default-backend-service ááŸáá·áș áááșážáááŻá·áá áșááŻá áźáĄááœááș ááá°ááźáá±áŹ error codes áá»áŹážááᯠá áźáá¶áá±áŹááșááœááșáá±ážáááŻáá«áá á€áĄááœááșá áá»áœááșáŻááșáááŻá·ááœááș ááŸá áșááŻááŸáááá·áș ááŒá±ááŸááșážáááșážáá»áŹážááᯠáĄááŻá¶ážááŒáŻááá«áááșá
Ingress < 0.23- áá áșááŻáááŻá·áá»ááșážáááșáá«á
á€ááœá±ážáá»ááșááŸáŻáááș áááŻáááŻáááŻážááŸááșážáá«áááșá áááșážáá
áŹáá»ááșááŸáŹáá»áŹážááᯠáááșáá±áŹááșááŸáŻáá±ážááá·áș áĄáááźáá±ážááŸááșážáá
áșááŻáĄáá±ááŒáá·áșá áá»áœááșáŻááșáááŻá·ááœááș áá±á«ááșážá
áźážáá»áŹážááᯠáááșáááŻá·ááŒáá·áșááŸáŻáááșááŸáá·áș ááŸááșáááșáá±áŹááŻá¶á·ááŒááșááŸáŻááŻááșáá»áŹážááᯠááŒááșáá±ážááááșááᯠááááá±áŹ ááŻá¶ááŸááș HTML ááŸááááșá áááŻáááŻá·áá±áŹáĄááșááșááᯠurl á០Ingress ááŒáá·áș ááŻááșáá±ážáááșá /error-pages, ááŸáá·áș catalog á ws HTML á ááŒááșááŹáááá·áșáááșá
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: 80á€ááŒáá·áșáá»ááșááŸáŻáĄááœááș áááșáá±áŹááșááŸáŻáááș ClusterIP áĄáá»ááŻážáĄá áŹáž ááŒá áșááá«áááșá
áá áșáá»áááșáááșážááŸáŹáááșá áá»áœááșáŻááșáááŻá·áááș áĄááŸáŹážáááŻááŻááșáá±áŹááșááá·áș áĄáááźáá±ážááŸááșážááœááșá Ingress ááœááș áĄá±áŹááșáá«áĄááŒá±áŹááșážáĄááŹááŒáá·áș ááŹááŹ-áĄáááŻáĄááœáŹ áááŻá·áááŻááș ááœáČá·á ááșážááŸáŻ-áĄáááŻáĄááœáŹááᯠáá±á«ááșážááá·áșáááș-
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: ááŻááááá»ááșážáááșááŸáŻ
áá±á«ááșážá áźážáá»áŹážááᯠááŻááșáá±áŹááșáááŻááșáá±áŹ áĄáááźáá±ážááŸááșážáá áșááŻáĄááœááș ááœá±ážáá»ááșá ááŹáá áșááŻ... áá±ááŻáá»áĄáŹážááŒáá·áș áááșážáááș á áááșááŒááŻááș http-errors áá»áŹážá០áá»á±ážáá°ááŹážáá±áŹ áááŻáááŻááŸááșáááșáá±áŹáááșážáááșážááŒá áșáááșá áááșážááᯠáááŻááșáááŻááș (ááááčáá°áá°ážááŒááșáž) ááᯠáĄááŻá¶ážááŒáŻááŒááșážááŒáá·áș áááčááŹááŻá¶ážáááŻááșáᏠáááșáááșáá»áŹážááᯠááŒá±áŹááșážááČááŒááșážáááŒáŻáááŻááșáá«á
áĄááá·áșáá»áŹážááŸáŹ áĄá±áŹááșáá«áĄáááŻááșážááŒá áșáááșá áá«áááŻá·áááșááźážáááșá áááŻáĄááșáá±áŹ áá±á«ááșážá áźážáá»áŹážááᯠááŹážáá±áŹááșááŒáźáž ááŸááșáááșá áœáŹ ááŻá¶á·ááŒááșáááŻááșáá±áŹ áĄááșááșáá áșááŻááŒáá·áșá áĄá±áŹááșáá«áĄááŒá±áŹááșážáĄááŹááŒáá·áș ááŹááŹ-áĄáááŻáĄááœáŹáá áșááŻááᯠIngress áĄáááźáá±ážááŸááșážáááŻá· ááá·áșáá«-
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;
}áááșááœá±á·ááŒááșáááá·áșáĄáááŻááșážá áá»áœááșáŻááșáááŻá·ááŻááșáá±áŹááșáááŻáá±áŹ áĄááŸáŹážáá áșááŻá áźáĄááœááșá "ááŹáá" ááœááș áááŻáĄááșáá±áŹ áá±á«ááșážá áźážáĄáŹážááŻá¶ážááᯠááá·áșááœááșážááá·áșáá±ááŹááœááș áá»áœááșáŻááșáááŻá·ááááŻááșáááŻááșáááșáá±ááŹááᯠááŒáŻááŻááșáááș áááŻáĄááșáá«áááșá . á€áááșážááŒáá·áș áá»áœááșáŻááșáááŻá·áááș ááźážááŒáŹážáááșáá±ááŹááŸáá·áș ááŹááŹáá»áŹážáĄááœááșáááș ááá°ááźáá±áŹ ááŻááčáááŻááșáá±ážááźážááá·áș áĄááŸáŹážá áŹáá»ááșááŸáŹáá»áŹážááᯠáááșááźážáááŻááșáááșá
PS
K8s áĄááŒá¶ááŒáŻáá»ááșáá»áŹážááŸáá·áș ááŸáá·áșááœááșá áźážááźážáá»áŹážá០áĄááŒáŹáž-
- «";
- «";
- «";
- «"á
áá»áœááșáŻááșáááŻá·áááá±áŹá·ááșááœááșáááșážáááșáá«
- «";
- «"á
source: www.habr.com
