แแ แกแขแแขแแแจแ แแแแแ แแแกแแฃแแ แ NGINX Ingress-แแก แแ แแแฎแแกแแแแแแแแแแ, แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แแแ แกแแแแแแแแแฃแแ แจแแชแแแแแก แแแแ แแแแแก แฉแแแแแแแกแแแ, แแกแแแ แแแแจแ แแ แกแแแฃแ แจแแแฆแฃแแแแแแ แแ แแแ แแแ แจแแแ แแฃแจแแแแแก แแแแแแ.
1. แแแแฃแแแกแฎแแแแ แแแฅแแแแแก แจแแชแแแ
แแแแฃแแแกแฎแแแแแ, NGINX Ingress แแงแแแแแก แแแแฃแแแกแฎแแแ backend-แก, แ แแแแแแช แแกแ แฃแแแแก แจแแกแแแแแแก แคแฃแแฅแชแแแก. แแก แแแจแแแแก, แ แแ Ingress-แแก แแแแฎแแแแแกแแก แฐแแกแขแแก แแแแแแแแแ, แ แแแแแแช แแ แแ แแก Ingress แ แแกแฃแ แกแแแจแ, แฉแแแ แแแฆแแแ แจแแแแแ แแแแ แแก 404 แแแกแฃแฎแแก แแแแแ:
แแฃแแชแ, แฃแคแ แ แแ แฃแคแ แ แฎแจแแ แแ แฉแแแแ แแแแแแขแแแ แแแแแแ แแฎแแแแแ, แแฉแแแแแ แแแแแแแแ แแแแ แแ แแแ แแแ แแขแแฃแแ แแแแแแ แแ แกแฎแแ แแแแแแแแฌแงแแแแ แกแขแแแแแ แขแฃแแ 404-แแก แแแชแแแแ. แแแแกแแแแแก NGINX Ingress-แก แแฅแแก default-backend-service
. แคแแ แแแขแแก แฉแแแแฌแแ แก แแ แแฃแแแแขแแ แแแแแแชแแแ แแแแแ แกแแฎแแแฌแแแแแแก แแแ แแแแขแก namespace/servicename
. แกแแ แแแกแแก แแแ แขแ แฃแแแ แแงแแก 80.
แแแแกแแแแแก แแฅแแแ แฃแแแ แจแแฅแแแแ แแฅแแแแ แกแแแฃแแแ แ แแแแ (แแแแแแแแแ) แแ แกแแ แแแกแ แแฅแแแแ แแแแแแแชแแแ (
แแฅ แแ แแก แแแขแแ แ แแแฃแกแขแ แแชแแ:
~$ 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...) แแแแแแแชแแแกแแแแก, แ แแแแแแช แแ แแแฃแจแแแแแก แแกแแ แกแแขแฃแแชแแแแก (แจแแกแแแแแแกแ แแแแแแ แแแแ แแแแ แแ แแแแแ แแ แแแฃแแแ). แแก แแกแแแ แจแแแซแแแแ แแแแแฌแแแฃแแ แแงแแก แแแแแแแแแ แแแแก แกแฃแ แแแแแ, แแแแแกแแฎแฃแ แแ แแแแแ แจแแชแแแแแก แแแแ แแแแก แแ แแแแ แแแแแแแชแแแจแ.
แกแแ แแแ แแก แแฎแแ แแก แแ แจแแแแฎแแแแแก แแแแกแแฎแแ แชแแแแแแแแ แฉแแแ แแแญแแ แแแแ:
- แแแฐแงแแแแ แแแแแ แแแชแแแฃแ แแแกแขแ แฃแฅแชแแแก แแแแแชแแแแ แแแแฃแแแกแฎแแแแ แแแฅแแแแแก แจแแกแแฎแแ;
- แแแแแแขแแ แแแกแแฆแแแ nginx-ingress แแแแคแแแฃแ แแชแแแก ConfigMap-แจแ
custom-http-errors
แแแแแแแแแ, แฆแแ แแแฃแแแแแ404,503
(แแจแแแ แแ แจแแแกแแแแแแแ แจแแชแแแแแก แแแแแแก, แ แแแแแแแช แแแคแแ แฃแแแ แแฎแแแ แฌแแกแแ).
แแแกแแแแแแแแ แจแแแแแ แแแฆแฌแแฃแแแ: แ แแแแกแแช แแแแแแขแแก แแแแแแแชแแ แแแจแแแแฃแแแ แแ แแแแฆแแแก แจแแชแแแแแก แกแแแแกแฃแฎแ แแแแแ 404 แแ 503, แแแแฎแแแแ แแแขแแแแขแฃแ แแ แแแแแแแกแแแแ แแแแแ แแฎแแ แแแแฃแแแกแฎแแแ แคแแแแ...
แแฃแแชแ, แแแแแแแชแแแก แจแแแฃแจแแแแแแกแแก แแแแฃแแแกแฎแแแแ backend แแ Custom-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
แแแแกแแแแก แแแแแแฃแ แแแแ แแกแแกแแแแขแแชแแแแแก แแแแแงแแแแแแ ; - แฉแแแ แจแแแแแซแแแ แแแแแแแแฎแแ
custom-http-errors
แแแแกแแแแก แแแแแแฃแ แแแแ แแกแแกแแแแขแแชแแแแแก แแแแแงแแแแแแ .
แจแแแแแแ, 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-แแก แฌแแแ แแแ แกแแแแก แแก แคแฃแแฅแชแแ แแ แฐแฅแแแแ (
แจแแแแกแแแ < 0.23: แแแแแแแ แแ แแ
แแก แแแ แแแแขแ แฃแคแ แ แแแ แขแแแแ. แ แแแแ แช แแแแแแแชแแแก, แ แแแแแแช แแแกแแฎแฃแ แแแ แแแแแก แแแแ แแแแก, แแแแฅแแก แฉแแแฃแแแแ แแแ HTML, แ แแแแแแแช แแ แแชแแก แ แแแแ แแแแแแแแแแ แแก แกแแแแฃแ แแแ แแ แแแแแ แฃแแแก แกแฌแแ แ แแแกแฃแฎแแแแก แแแแแแ. แแกแแแ แแแแแแแชแแ แจแแแแแแแ Ingress-แแแ แแ แแแ url-แแแ /error-pages
แแ แแแขแแแแแจแ 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;
}
แจแแแแกแแแ < 0.23: แแแแ แ แแแแแแแ
แแแ แแแแขแ แแแแแแแชแแแกแแแแก, แ แแแแแกแแช แจแแฃแซแแแ แกแแแแฃแ แแแแก แแแแฃแจแแแแแ... แแ แแแแแแแ แแก แฃแคแ แ แกแฌแแ แ แแแแ, แแแกแแกแฎแแแ custom-http-errors-แแกแแแ. แแแกแ แฎแแแแ แแแแแงแแแแแ (แแแแแ แแแ) แกแแจแฃแแแแแแก แแแแชแแแ แแ แจแแชแแแแแ แแแแแแแฃแ แ แแแ แแแแขแ แแแ.
แแแแแฏแแแ แจแแแแแแแ. แฉแแแ แแฅแแแแ
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 แ แฉแแแแแแกแ แแ แฎแ แแแแแแก แกแแ แแแแแ:
- ยซ
แแแแกแขแแ แจแ แแแจแแแแฃแแ แ แแกแฃแ แกแแแแก แแแแแชแแแ Helm 2 แแแแแฏแแแแขแแ "; - ยซ
แแแ แแแแแแแชแแแจแ แแแแแซแแแแก แแแแแฌแแแแแแกแ แแ แฉแแขแแแ แแแแก แจแแกแแฎแแ "; - ยซ
แแแแแแแแแ แแก แกแแแขแแแแ แฌแแแแแ "; - ยซ
แฉแแขแแแ แแแแก แแแฉแฅแแ แแแ แแแแ แแแแแชแแแแ แแแแแแแกแแแแก ".
แแกแแแ แฌแแแแแแฎแแ แฉแแแแก แแแแแแ:
- ยซ
แแแฃแแ แฃแแแแ แแแแ แแกแแ แแแกแแแก Istio-แกแแแ แแ แแแ. แฒแ -1 แแแฌแแแ "; - ยซ
[แแแฃแกแขแ แแ แแแฃแแ] แแแแแแแแแแ แฅแกแแแจแ Kubernetes-แจแ. แแแฌแแแ 3 ".
แฌแงแแ แ: www.habr.com