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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨