Kubernetes-แƒ˜แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜: แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜ NGINX Ingress-แƒจแƒ˜

Kubernetes-แƒ˜แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜: แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜ NGINX Ingress-แƒจแƒ˜

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ˜แƒœแƒ“แƒ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ NGINX Ingress-แƒ˜แƒก แƒแƒ  แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒ—แƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ›แƒแƒ— แƒ’แƒแƒ แƒจแƒ”แƒ›แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ’แƒ–แƒ”แƒ‘แƒ–แƒ”.

1. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, NGINX Ingress แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• backend-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก. แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› Ingress-แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒกแƒแƒก แƒฐแƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒแƒ แƒ˜แƒก Ingress แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒ•แƒ”แƒ แƒ“แƒก 404 แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ—:

Kubernetes-แƒ˜แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜: แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜ NGINX Ingress-แƒจแƒ˜

แƒ—แƒฃแƒ›แƒชแƒ, แƒฃแƒคแƒ แƒ แƒ“แƒ แƒฃแƒคแƒ แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ“แƒ˜แƒแƒœ แƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ—, แƒแƒฉแƒ•แƒ”แƒœแƒแƒœ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ—แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜ แƒ™แƒแƒ แƒžแƒแƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒšแƒแƒ’แƒแƒ—แƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ™แƒ”แƒ—แƒ˜แƒšแƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒ— แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ 404-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก NGINX Ingress-แƒก แƒแƒฅแƒ•แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ default-backend-service. แƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒก แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒก แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒแƒ“ แƒ’แƒแƒ“แƒแƒ•แƒชแƒ”แƒ›แƒ— แƒแƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก namespace/servicename. แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก 80.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒžแƒแƒ“แƒ˜ (แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ) แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒ— (แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ YAML-แƒจแƒ˜ ingress-nginx แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“.

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒžแƒแƒขแƒแƒ แƒ แƒ˜แƒšแƒฃแƒกแƒขแƒ แƒแƒชแƒ˜แƒ:

~$ 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...) แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒแƒกแƒ”แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒก (แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒšแƒแƒ›แƒแƒ–แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ). แƒ”แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒฌแƒ•แƒ”แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒ—, แƒ›แƒแƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒแƒœ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜.

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ:

  1. แƒ›แƒ˜แƒฐแƒงแƒ”แƒ•แƒ˜แƒ— แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒแƒก แƒแƒ‘แƒ–แƒแƒชแƒ˜แƒ“แƒแƒœ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘;
  2. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ 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 แƒแƒœแƒแƒขแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜:

  1. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ•แƒšแƒแƒฎแƒแƒ— default-backend แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ˜แƒœแƒ’แƒ แƒ”แƒกแƒ˜แƒก แƒแƒœแƒแƒขแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—;
  2. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ•แƒšแƒแƒฎแƒแƒ— 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-แƒ–แƒ”). แƒ“แƒ แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— 2 แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ“แƒ แƒ’แƒกแƒฃแƒ แƒ— แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ backend-แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ, แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒแƒ แƒ˜ แƒ’แƒ•แƒแƒฅแƒ•แƒก.

แƒจแƒ”แƒ›แƒแƒกแƒ•แƒšแƒ < 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-แƒ˜แƒกแƒ’แƒแƒœ. แƒ›แƒ˜แƒกแƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ) แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒแƒ  แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— แƒ’แƒšแƒแƒ‘แƒแƒšแƒฃแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒแƒฃแƒกแƒ›แƒ˜แƒœแƒแƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒก แƒ“แƒ แƒกแƒฌแƒแƒ แƒแƒ“ แƒฃแƒžแƒแƒกแƒฃแƒฎแƒแƒก. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜ 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 แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒ˜แƒ“แƒแƒœ:

แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒšแƒแƒ’แƒ–แƒ”:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ