рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЯрд┐рдкреНрд╕ рдПрдВрдб рдЯреНрд░рд┐рдХреНрд╕: рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЗрдирдЧреНрд░реЗрдб рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда



рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рджреЛ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЗрдирдЧреНрд░реЗрдб рдлрд╝реАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬреЛ рд╕реАрдорд╛рдПрдВ рдЙрдирдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдЖрдиреЗ рдХреЗ рддрд░реАрдХреЗред

1. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдХрдПрдВрдб рдХреЛ рдмрджрд▓рдирд╛


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, NGINX рдЗрдирдЧреНрд░реЗрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдПрдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде Ingress рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ Ingress рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ 404 рдЙрддреНрддрд░ рдХреЛрдб рд╡рд╛рд▓рд╛ рдПрдХ рдкреЗрдЬ рдорд┐рд▓рддрд╛ рд╣реИ:



рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХрдВрдкрдиреА рдХреЗ рд▓реЛрдЧреЛ рдФрд░ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдкреЗрдЬ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ 404 рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, NGINX Ingress рдореЗрдВ default-backend-service рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреНрд╖рдорддрд╛ рд╣реИ ред рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХрд╛ рд╡рд┐рдХрд▓реНрдк, namespace/servicename рдкреНрд░рд╛рд░реВрдк рд░рд┐рдХреЙрд░реНрдб 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 рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ kind: Ingress рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдмреИрдХрдПрдВрдб рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдКрдкрд░ рдХреА рд╕реВрдЪреА рдореЗрдВ, sadsdasdas рд╡рд╣ рдбреЛрдореЗрди рдмрди рдЧрдпрд╛ рд╣реИред

2. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ HTTP рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛


рдПрдХ рдФрд░ рд╕реНрдерд┐рддрд┐ HTTP рддреНрд░реБрдЯрд┐ (404, 500, 502 ...) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ (рддрджрдиреБрд╕рд╛рд░ рд╕реБрдВрджрд░ рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдпрд╣ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдХрд╛рд░рдг рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдХрдПрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЗрдЯрдо рд╕реЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ;
  2. рд╡рд┐рдиреНрдпрд╛рд╕-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо-http-рдПрд░рд░ рдХреАрдЬ рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдиреЗрдЧреНрдиреЗрдХреНрд╕-рдЗрдВрдЧреНрд░реЗрд╕, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 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. 

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реЗрдбрд░ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА (рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ) рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП - рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреИрдХрдПрдВрдб


рддрд╛рдХрд┐ рд╕рдорд╛рдзрд╛рди рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рди рд╣реЛ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ 0.23 рдпрд╛ рдЕрдзрд┐рдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрдирдЧреНрд░реЗрдб рджреЗрд╢реА рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

  1. рд╣рдо рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд▓рд┐рдП default-backend рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
  2. рд╣рдо рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд▓рд┐рдП 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 рдкрд░ рднрд╛рдЧреНрдпрд╡рд╛рджреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ )ред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ 2 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдлреЙрд▓реНрдЯ-рдмреИрдХрдПрдВрдб-рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрд░рд░ рдХреЛрдбреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╣реИрдВред

рдЗрдирдЧреНрд░реЗрдб <0.23: рдПрдХ рдХреЗ рдкрд╛рд╕


рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рд░рд▓ рд╣реИред рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рдкреГрд╖реНрда рджреЗрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ HTML рд╣реИ, рдЬреЛ рд╣реЗрдбрд░ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рджреЗрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдпреВрдЖрд░рдПрд▓ /error-pages рд╕рд╛рде рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд╕рд╛рде рд░реЛрд▓рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ HTML рдХреЛ ws рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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 рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЙрд╕реА рд╕рдордп, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ, рдЗрдирдЧреНрд░реЗрдб рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░-рд╕реНрдирд┐рдкреЗрдЯ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 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-рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдирдХрд▓ рдХрд░рдирд╛) рдЖрдкрдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред

рдЪрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рд╣рдо рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдХреЛ рд╕реБрди рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде 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; } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ "рдореВрд▓" рдХрд╕реНрдЯрдо-рддреНрд░реБрдЯрд┐-рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╣реИ ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдФрд░ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреЗрдЬ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ


K8s рдЯрд┐рдкреНрд╕ рдПрдВрдб рдЯреНрд░рд┐рдХреНрд╕ рдЪрдХреНрд░ рд╕реЗ рдЕрдиреНрдп:


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ:

Source: https://habr.com/ru/post/hi445596/


All Articles