Kubernetes āϟāĻŋāĻĒāϏ āĻāĻŦāĻ‚ āĻ•ā§ŒāĻļāϞ: NGINX āχāύāĻ—ā§āϰ⧇āϏ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻž

Kubernetes āϟāĻŋāĻĒāϏ āĻāĻŦāĻ‚ āĻ•ā§ŒāĻļāϞ: NGINX āχāύāĻ—ā§āϰ⧇āϏ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻž

āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇, āφāĻŽāĻŋ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤāĻ•ā§ƒāϤ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ NGINX āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āĻĻ⧁āϟāĻŋ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ, āϏ⧇āχāϏāĻžāĻĨ⧇ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āωāĻĒāĻžāϝāĻŧ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāϤ⧇ āϚāĻžāχāĨ¤

1. āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž

āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, NGINX Ingress āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝāĻž āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āĻĢāĻžāĻ‚āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰ⧇āĨ¤ āĻāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āϝāĻ–āύ āχāύāĻ—ā§āϰ⧇āϏ āϰāĻŋāϏ⧋āĻ°ā§āϏ⧇ āύ⧇āχ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻšā§‹āĻ¸ā§āϟ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇ āχāύāĻ—ā§āϰ⧇āϏ⧇āϰ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ 404 āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϕ⧋āĻĄ āϏāĻš āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āĻĒāĻžāχ:

Kubernetes āϟāĻŋāĻĒāϏ āĻāĻŦāĻ‚ āĻ•ā§ŒāĻļāϞ: NGINX āχāύāĻ—ā§āϰ⧇āϏ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻž

āϝāĻžāχāĻšā§‹āĻ•, āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟāϰāĻž āϤāĻžāĻĻ⧇āϰ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻ°ā§āĻĒā§‹āϰ⧇āϟ āϞ⧋āĻ—ā§‹ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϏ⧁āϝ⧋āĻ—-āϏ⧁āĻŦāĻŋāϧāĻž āϏāĻš āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ 404 āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĻ⧇āĻ–āĻžāύ⧋āϰ āĻ…āύ⧁āϰ⧋āϧ āύāĻŋāϝāĻŧ⧇ āφāϏ⧇āĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, NGINX āχāύāĻ—ā§āϰ⧇āϏ āφāϛ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻ•ā§āώāĻŽāϤāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž 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, āĻĄāĻŋāĻĢāĻ˛ā§āϟ-āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻĒāĻĄāĻŧ⧇āĨ¤ āωāĻĒāϰ⧇āϰ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ, āĻāχ āĻĄā§‹āĻŽā§‡āχāύ āĻšāϝāĻŧ⧇ āϗ⧇āϞ sadsdasdas.

2. āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇ HTTP āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž

āφāϰ⧇āĻ•āϟāĻŋ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻšāϞ HTTP āĻ¤ā§āϰ⧁āϟāĻŋāϰ (404, 500, 502...) āϏāĻŽāĻžāĻĒā§āϤāĻŋāϰ āĻ…āύ⧁āϰ⧋āϧ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϝāĻž āĻāχ āϧāϰāύ⧇āϰ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰ⧇ āύāĻž (āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āϏ⧁āĻ¨ā§āĻĻāϰ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ āύāĻž)āĨ¤ āĻāϟāĻŋ āĻāĻ•āĻžāϧāĻŋāĻ• āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇ āĻāĻ•āχ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻŦ⧇āĻļāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āχāĻšā§āĻ›āĻžāϰ āĻ•āĻžāϰāϪ⧇āĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻžāχāĻĄā§‡ āĻāχ āϕ⧇āϏāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāϤ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ:

  1. āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ āĻĨ⧇āϕ⧇ āωāĻĒāϰ⧇āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ;
  2. nginx-ingress āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ ConfigMap-āĻ āĻāĻ•āϟāĻŋ āϕ⧀ āϝ⧋āĻ— āĻ•āϰ⧁āύ custom-http-errors, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻŽāĻžāύ āϏāĻš 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: āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāϕ⧇

āĻāχ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϟāĻŋ āφāϰāĻ“ āϏāĻšāϜāĨ¤ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻāϟāĻŋāϰ āĻĒ⧃āĻˇā§āĻ āĻžāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻŦ⧇āĻļāύ āĻ•āϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻāχāϚāϟāĻŋāĻāĻŽāĻāϞ āϰāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻļāĻŋāϰ⧋āύāĻžāĻŽāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϏāĻ āĻŋāĻ• āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϕ⧋āĻĄāϗ⧁āϞāĻŋ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āϤāĻž āϜāĻžāύ⧇ āύāĻžā§ˇ āĻāχ āϧāϰāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ 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

āĻāχ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ 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-āĻ¤ā§āϰ⧁āϟāĻŋ āĻĨ⧇āϕ⧇ āϧāĻžāϰ āĻ•āϰāĻžāĨ¤ āĻāϟāĻŋ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž (āĻ•āĻĒāĻŋ āĻ•āϰāĻž) āφāĻĒāύāĻžāϕ⧇ āĻ—ā§āϞ⧋āĻŦāĻžāϞ āϏ⧇āϟāĻŋāĻ‚āϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āύāĻž āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻŦ⧇āĨ¤

āύāĻŋāĻŽā§āύāϰ⧂āĻĒ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāĨ¤ āφāĻŽāϰāĻž āĻŦāĻžāύāĻžāχ āĻāĻ•āχ āĻ¸ā§āĻĨāĻžāĻĒāύāĻž āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻš āϝāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻļāĻŋāϰ⧋āύāĻžāĻŽ āĻļ⧁āύāϤ⧇ āĻāĻŦāĻ‚ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϜāĻžāύāĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻš āχāύāĻ—ā§āϰ⧇āϏ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻ¸ā§āύāĻŋāĻĒ⧇āϟ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ:

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 āϟāĻŋāĻĒāϏ āĻāĻŦāĻ‚ āĻŸā§āϰāĻŋāĻ•ā§āϏ āϏāĻŋāϰāĻŋāĻœā§‡āϰ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ:

āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϞāϗ⧇āĻ“ āĻĒāĻĄāĻŧ⧁āύ:

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster