рдпрд╛ рд▓реЗрдЦрд╛рдд, рдорд▓рд╛ рд╡реИрдпрдХреНрддрд┐рдХреГрдд рддреНрд░реБрдЯреА рдкреГрд╖реНрдареЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдПрдирдЬреАрдЖрдпрдПрдирдПрдХреНрд╕ рдЗрдВрдЧреНрд░реЗрд╕рдЪреНрдпрд╛ рджреЛрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдмрджреНрджрд▓, рддрд╕реЗрдЪ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдордзреНрдпреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдорд░реНрдпрд╛рджрд╛ рдЖрдгрд┐ рддреНрдпрд╛рднреЛрд╡рддреА рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдмрджреНрджрд▓ рдмреЛрд▓рд╛рдпрдЪреЗ рдЖрд╣реЗ.
1. рдбреАрдлреЙрд▓реНрдЯ рдмреЕрдХрдПрдВрдб рдмрджрд▓рдгреЗ
рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, NGINX 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
, рдбреАрдлреЙрд▓реНрдЯ-рдмреЕрдХрдПрдВрдб рдордзреНрдпреЗ рдкрдбрдгреЗ. рд╡рд░реАрд▓ рд╕реВрдЪреАрдордзреНрдпреЗ, рд╣реЗ рдбреЛрдореЗрди рдмрдирд▓реЗ sadsdasdas
.
2. рдбреАрдлреЙрд▓реНрдЯ рдмреЕрдХрдПрдВрдб рд╡рд╛рдкрд░реВрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рддреАрд▓ HTTP рддреНрд░реБрдЯреА рд╣рд╛рддрд╛рд│рдгреЗ
рджреБрд╕рд░реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдореНрд╣рдгрдЬреЗ HTTP рддреНрд░реБрдЯреА (404, 500, 502...) рд╕рдВрдкрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рдЬреНрдпрд╛ рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдд рдирд╛рд╣реАрдд (рд╕рдВрдмрдВрдзрд┐рдд рд╕реБрдВрджрд░ рдкреГрд╖реНрдареЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реАрдд). рд╣реЗ рдПрдХрд╛рдзрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рд╕рдорд╛рди рддреНрд░реБрдЯреА рдкреГрд╖реНрдареЗ рд╕рд░реНрд╡реНрд╣ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдЪреНрдпрд╛ рдЗрдЪреНрдЫреЗрдореБрд│реЗ рджреЗрдЦреАрд▓ рдЕрд╕реВ рд╢рдХрддреЗ.
рд╕рд░реНрд╡реНрд╣рд░ рд╕рд╛рдЗрдбрд╡рд░ рд╣реЗ рдкреНрд░рдХрд░рдг рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
- рдбреАрдлреЙрд▓реНрдЯ рдмреЕрдХрдПрдВрдбрдмрджреНрджрд▓ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рддреАрд▓ рд╡рд░реАрд▓ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛;
- nginx-ingress рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди ConfigMap рдордзреНрдпреЗ рдПрдХ рдХреА рдЬреЛрдбрд╛
custom-http-errors
, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдореВрд▓реНрдпрд╛рд╕рд╣404,503
(рдирд╡реАрди рдирд┐рдпрдорд╛рдВрджреНрд╡рд╛рд░реЗ рдХрд╡реНрд╣рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рддреНрд░реБрдЯреА рдХреЛрдбрд╢реА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ).
рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓рд╛ рдЖрд╣реЗ: рдЬреЗрд╡реНрд╣рд╛ рдХреНрд▓рд╛рдпрдВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд╛рд▓реВ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЛрдб 404 рдХрд┐рдВрд╡рд╛ 503 рд╕рд╣ рддреНрд░реБрдЯреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓, рддреЗрд╡реНрд╣рд╛ рд╡рд┐рдирдВрддреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдирд╡реАрди рдбреАрдлреЙрд▓реНрдЯ рдмреЕрдХрдПрдВрдбрд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓...
рддрдерд╛рдкрд┐, рдбреАрдлреЙрд▓реНрдЯ рдмреЕрдХрдПрдВрдб рдЖрдгрд┐ рд╕рд╛рдиреБрдХреВрд▓-рдПрдЪрдЯреАрдЯреАрдкреА-рдПрд░рд░реНрд╕рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдПрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
!!! 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.
рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдЬреЗрд╡реНрд╣рд╛ рд╡рд┐рдирдВрддреА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ рдорд╛рдЧреАрд▓ рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЛрдб рдЖрдгрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреАрд╕рд╣ рдЙрдкрдпреБрдХреНрдд рдорд╛рд╣рд┐рддреА рдЕрд╕рддреЗ (рддреНрдпрд╛рдВрдЪреА рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ
рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЖрдкрдг рд╕реНрд╡рдд: рд▓рд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдпреЛрдЧреНрдп рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЛрдбрдЪреА рдХрд╛рд│рдЬреА рдШреНрдпрд╛.
рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рднрд┐рдиреНрди рдбреАрдлреЙрд▓реНрдЯ рдмреЕрдХрдПрдВрдб рдЕрд╕рддрд╛рдд
рд╕рдорд╛рдзрд╛рди рд╕рдВрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА рдЬрд╛рдЧрддрд┐рдХ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╡рд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдердо рдЗрдирдЧреНрд░реЗрд╕ рдЖрд╡реГрддреНрддреА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЬреБрд│рд▓реЗ рддрд░ 0.23 рдХрд┐рдВрд╡рд╛ рдЙрдЪреНрдЪ, рдиреЗрдЯрд┐рд╡реНрд╣ рдЗрдВрдЧреНрд░реЗрд╕ рднрд╛рд╖реНрдпреЗ рд╡рд╛рдкрд░рд╛:
- рдЖрдореНрд╣реА рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░реВ рд╢рдХрддреЛ
default-backend
рддреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡реЗрд╢рд╛рдЪрд╛рднрд╛рд╖реНрдп рд╡рд╛рдкрд░реВрди ; - рдЖрдореНрд╣реА рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░реВ рд╢рдХрддреЛ
custom-http-errors
рддреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡реЗрд╢рд╛рдЪрд╛рднрд╛рд╖реНрдп рд╡рд╛рдкрд░реВрди .
рдкрд░рд┐рдгрд╛рдореА, рдкреНрд░рд╡реЗрд╢ рд╕рдВрд╕рд╛рдзрди рдпрд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕реЗрд▓:
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 рдЖрд╣реЗ, рдЬреНрдпрд╛рд▓рд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХрд╕реЗ рдкрд╣рд╛рд╡реЗ рдЖрдгрд┐ рдпреЛрдЧреНрдп рдкреНрд░рддрд┐рд╕рд╛рдж рдХреЛрдб рдХрд╕реЗ рдкрд░рдд рдХрд░рд╛рд╡реЗ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА. рдЕрд╕рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ url рд╡рд░реВрди Ingress рд╕рд╣ рдЖрдгрд▓рд╛ рдЬрд╛рддреЛ /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
рдпрд╛ рддреИрдирд╛рддреАрд╕рд╛рдареА рд╕реЗрд╡рд╛ рдХреНрд▓рд╕реНрдЯрд░рдЖрдпрдкреА рдкреНрд░рдХрд╛рд░рдЪреА рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЬреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЖрдореНрд╣реА рддреНрд░реБрдЯреАрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ, рддреНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рд╕рд░реНрд╡реНрд╣рд░-рд╕реНрдирд┐рдкреЗрдЯ рдХрд┐рдВрд╡рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди-рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛрдбрддреЛ:
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: рджреБрд╕рд░рд╛ рджреГрд╖реНрдЯреАрдХреЛрди
рд╣реЗрдбрд░рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ рд╢рдХрдгрд╛рд░реНтАНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдкрд░реНрдпрд╛рдп... рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдХрд╕реНрдЯрдо-http-рддреНрд░реБрдЯреАрдВрдордзреВрди рдШреЗрддрд▓реЗрд▓рд╛ рд╣рд╛ рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рддреЗ рд╕реНрд╡рд╣рд╕реНрддреЗ рд╡рд╛рдкрд░рдгреЗ (рдХреЙрдкреА рдХрд░рдгреЗ) рддреБрдореНрд╣рд╛рд▓рд╛ рдЬрд╛рдЧрддрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдмрджрд▓реВ рджреЗрдгрд╛рд░ рдирд╛рд╣реА.
рдкрд╛рдпрд▒реНрдпрд╛ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдЖрд╣реЗрдд. рдЖрдореНрд╣реА рддрдпрд╛рд░ рдХрд░рддреЛ
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 рдЯрд┐рдкрд╛ рдЖрдгрд┐ рдпреБрдХреНрддреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрддреАрд▓ рдЗрддрд░:
- ┬л
рд╣реЗрд▓реНрдо 2 рдЪреНрдпрд╛ рдирд┐рдпрдВрддреНрд░рдгрд╛рдЦрд╛рд▓реА рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг "; - ┬л
рд╡реЗрдм рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╡рд░ рдиреЛрдб рд╡рд╛рдЯрдк рдЖрдгрд┐ рд▓реЛрдб рдмрджреНрджрд▓ "; - ┬л
рджреЗрд╡ рд╕рд╛рдЗрдЯреНрд╕рд╡рд░ рдкреНрд░рд╡реЗрд╢ "; - ┬л
рдореЛрдареНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╛рдареА рдмреВрдЯрд╕реНрдЯреНрд░реЕрдкрдЪреА рдЧрддреА рд╡рд╛рдврд╡рдгреЗ ┬╗.
рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:
- ┬л
Istio рд╕рд╣ microservices рд╡рд░ рдкрд░рдд. рднрд╛рдЧ 1 "; - ┬л
[рд╕рдЪрд┐рддреНрд░] Kubernetes рдордзреНрдпреЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧрд╕рд╛рдареА рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ. рднрд╛рдЧ 3 ┬╗.
рд╕реНрддреНрд░реЛрдд: www.habr.com