αα
αααα»αα’αααααααα αααα»αα
αααα·ααΆαα’αααΈαααααααα·αααααΈααααα NGINX Ingress ααΆααααααΉαααΆααααα αΆααααααααα α»αααααΆαααααα½α ααααΌα
ααΆαααααααααααααΆααα
αααα»ααα½αααΆ αα·ααα·ααΈααΎααααΈααααΎααΆααα»ααα·ααα½αααα
1. ααΆαααααΆααααααΌααααααα·ααΈααΆααααααααααΆαααΎα
ααΆαααααΆαααΎα NGINX Ingress ααααΎαααααα·ααΈααΆααααααααααΆαααΎα αααααααΎαααΆααα»αααΆααααααααΌαααααΆα αααααΆααααααΆαα αααααααΎαα»α Ingress αααααΆαααααΆαααΈαααααα·αααΆααα αααα»αααααΆα Ingress ααΎαααα½αααΆααααααααΆααααααααΆαα½αααΉααααααΌαααααΎααα 404α
αααααΆαααΆαααΆααααα α’αα·αα·ααααααααΎαααΆααααα
αααΎαα‘αΎααααααΆαα½αααααΎααΎααααΈαααα αΆαααααααααααα½αααααΆαα½αααΉααα·αα·ααααααααΆααΆααΈααααα αα·αααααΏαααα·ααααΆααααααααααααα½αα±αααααααααΆα 404 α ααΎααααΈααααΎααΌα
ααα NGINX Ingress ααΆα default-backend-service
. ααΎααααααΌαααΆαα»ααααααααΆα’αΆαα»ααααααα
αααααΎααααααααααΌα
ααααΆα namespace/servicename
. α
αααααααααααΆαααααα½αααααΆα 80 α
ααΎααααΈααααΎααΌα
αααα α’αααααααΌααααααΎα pod ααααΆαααααα½αααααα’ααα (ααΆαααΆαααααααΆα) αα·αααααΆααααααΆαα½αααΉααααααα·ααΈααααα’ααα (
αααααΆααΌαααΆαααΌα αα½αα
~$ 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 ααααΎααΉαααααΌαααΆααααααΌααααααααααααααααααααα·αα αααααα·ααΈααΆααααααααααΆαααΎαααααΈ...
ααααααΆαααΆααααα αα ααααααααΎααααααα·ααΈαααααΆαααααααα·ααΈααΆααααααααααΆαααΎα αα·αααα α»αααααΆαααααα½α http-errors α’αααααααΌααα·αααΈαα»αααΆαααααΆαααα½αα
!!! 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 αα·αααΆααααααααα·ααααααααα (
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 ααΎααααααα server-snippet α¬ configuration-snippet ααΆαα½αααΉαααααΉαααΆαααΌα ααΆααααααα
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α αα·ααΈααΆαααααααΈααΈα
αααααΎααααααΆαααααααα·ααΈαααα’αΆα ααααΎαααΆαααααααΆ... α αΎαααΆααΌαα αααααΊααΆαα·ααΈαααααααΉαααααΌαααΆα αααααααΌαααΆαααα αΈααΈ 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 Β» - Β«
α’αααΈααΆααααα ααααααΆαα αα·αααΆααααα»ααα ααΎαααααα·ααΈαααααΆα Β» - Β«
ααΆαα αΌαααααΎααα αααααα’αα·αααααα Β» - Β«
αααααΎαααααΏα Bootstrap αααααΆααααΌαααααΆααα·αααααααα "α
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
αααα‘αααα ααααΆααΈααααΌ ααΆαα½α Istio α αααααααΈ 1 Β» - Β«
[ααΌαααΆα] ααΆαααααΆαα’αααΈαααααΆααα αααα»α Kubernetes α αααααααΈ 3 "α
ααααα: www.habr.com