Yandex.Cloud-āĻāĻ° āĻœāĻ¨ā§āĻ¯ Kubernetes-āĻ CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž

Yandex.Cloud-āĻāĻ° āĻœāĻ¨ā§āĻ¯ Kubernetes-āĻ CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž

āĻ†āĻŽāĻ°āĻž āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡ āĻ†āĻ¨āĻ¨ā§āĻĻāĻŋāĻ¤ āĻ¯ā§‡ āĻĢā§āĻ˛āĻžāĻ¨ā§āĻŸ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻŸā§āĻ˛ā§‡ āĻ¤āĻžāĻ° āĻ…āĻŦāĻĻāĻžāĻ¨ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ›ā§‡ CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°ā§‡āĻ° āĻ†āĻ˛āĻĢāĻž āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ (āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸) Yandex.Cloud āĻāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻ¤āĻŦā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻŦāĻŋāĻļāĻĻāĻŸāĻŋāĻ¤ā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ†āĻ—ā§‡, āĻ‡āĻ¯āĻŧāĻžāĻ¨āĻĄā§‡āĻ•ā§āĻ¸ā§‡āĻ° āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĨāĻžāĻ•āĻžāĻ•āĻžāĻ˛ā§€āĻ¨ āĻāĻŸāĻŋ āĻ•ā§‡āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¸ā§‡āĻ‡ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ• Kubernetes āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž.

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

āĻ•ā§‡āĻ¨?

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡, āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ (āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻāĻ–āĻ¨ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ• āĻŦāĻ›āĻ° āĻ§āĻ°ā§‡) āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻļā§āĻ°ā§ āĻĨā§‡āĻ•ā§‡āĻ‡, āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŸā§āĻ˛ (āĻĄā§‡āĻ•āĻšāĻžāĻ‰āĻ¸) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ›āĻŋ, āĻ¯ā§‡āĻŸāĻŋ, āĻ†āĻŽāĻ°āĻž āĻļā§€āĻ˜ā§āĻ°āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋāĨ¤ . āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡, āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻ•ā§‡ āĻāĻ•āĻ‡āĻ­āĻžāĻŦā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻāĻŦāĻ‚ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ 100 āĻŸāĻŋāĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻŖā§‡āĻ° āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡āĨ¤

āĻĄā§‡āĻ•āĻšāĻžāĻ‰āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸āĻžāĻ°, āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻšāĻžāĻ°ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ, āĻŽā§‡āĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻāĻŦāĻ‚ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻ¯āĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ "āĻĒāĻžāĻŽā§āĻĒ āĻ†āĻĒ" āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻ•ā§‹āĻ¨ āĻŽāĻžāĻ¨ā§‡ āĻ¨ā§‡āĻ‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ…āĻ¸āĻŽā§āĻ­āĻŦ āĻŦāĻž āĻ…āĻ°ā§āĻ§ā§‡āĻ• āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤

NB: āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻŦā§‡āĻļ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸāĨ¤ āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻ¨ā§‹āĻ­āĻžāĻŦā§‡āĻ‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻšā§āĻ›āĻŋ āĻ¨āĻž āĻ¯ā§‡ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•ā§‡āĻ°āĻ‡ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤-āĻ¤ā§ˆāĻ°āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ Kubernetes āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ†āĻŽāĻžāĻĻā§‡āĻ° Yandex āĻĨā§‡āĻ•ā§‡ Kubernetes āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻ¨ā§‡āĻ‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻāĻ‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋāĻ° āĻ•ā§‹āĻ¨ āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻĻā§‡āĻŦ āĻ¨āĻžāĨ¤

āĻāĻŸāĻž āĻ•āĻŋ āĻāĻŦāĻ‚ āĻ•āĻžāĻ° āĻœāĻ¨ā§āĻ¯?

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ā§‡ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœā§‡āĻ° āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛ā§‡āĻ›āĻŋ: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ CSI āĻ•āĻžāĻœ āĻ•āĻ°ā§‡? и āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ¸ā§‡āĻ›āĻŋāĻ˛ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡, āĻ…āĻ¨ā§‡āĻ• āĻŦāĻĄāĻŧ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻ•āĻžāĻ°ā§€ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĄāĻŋāĻ¸ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸā§‡ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ¨āĻž āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĢāĻžāĻ‚āĻļāĻ¨ API āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻ•āĻŋāĻ›ā§āĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻžāĻ§āĻž āĻĻā§‡āĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ‡āĻ¯āĻŧāĻžāĻ¨āĻĄā§‡āĻ•ā§āĻ¸.āĻ•ā§āĻ˛āĻžāĻ‰āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋ āĻ˜āĻŸā§‡āĻ›ā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ DigitalOcean āĻ•ā§āĻ˛āĻžāĻ‰āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻāĻŦāĻ‚ āĻĨā§‡āĻ•ā§‡ āĻ§āĻžāĻ°āĻŖāĻž āĻāĻ•āĻŸāĻŋ āĻĻāĻŽā§āĻĒāĻ¤āĻŋ GCP āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻ‡ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄāĻ—ā§āĻ˛āĻŋāĻ° API āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž (āĻ—ā§āĻ—āĻ˛ āĻāĻŦāĻ‚ āĻ‡āĻ¯āĻŧāĻžāĻ¨āĻĄā§‡āĻ•ā§āĻ¸) āĻāĻ° āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻŽāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡, API āĻāĻŦāĻ‚ āĻœāĻŋāĻ¸āĻŋāĻĒāĻŋ, āĻāĻŦāĻ‚ āĻ āĻ‡āĻ¯āĻŧāĻžāĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻāĻ•āĻŸāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻĢā§‡āĻ°āĻ¤ āĻĻāĻŋāĻ¨ Operation āĻĻā§€āĻ°ā§āĻ˜āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒāĻ—ā§āĻ˛āĻŋāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻŸā§āĻ°ā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻ¤ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĄāĻŋāĻ¸ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž)āĨ¤ Yandex.Cloud API āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ Yandex.Cloud Go SDK.

āĻ•āĻžāĻœā§‡āĻ° āĻĢāĻ˛ GitHub āĻ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§‹āĻ—ā§€ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻžāĻ°āĻž, āĻ•ā§‹āĻ¨ āĻ•āĻžāĻ°āĻŖā§‡, Yandex.Cloud āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ Kubernetes āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ (āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ-āĻ¤ā§ˆāĻ°āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ° āĻ¨āĻ¯āĻŧ) āĻāĻŦāĻ‚ CSI-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĄāĻŋāĻ¸ā§āĻ•āĻ—ā§āĻ˛āĻŋ (āĻ…āĻ°ā§āĻĄāĻžāĻ°) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ā§ˇ

āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨

āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯

āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡:

  • āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋāĻ° āĻŸāĻĒā§‹āĻ˛āĻœāĻŋ āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻžā§āĻšāĻ˛ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž;
  • āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻ†āĻĻā§‡āĻļ āĻ•āĻ°āĻž āĻĄāĻŋāĻ¸ā§āĻ• āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ;
  • āĻĄāĻŋāĻ¸ā§āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĢāĻ˛āĻžāĻ‡āĻ¨ āĻ†āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§āĻ¨ (Yandex.Cloud āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻž āĻĄāĻŋāĻ¸ā§āĻ• āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ•āĻ°āĻž)āĨ¤ āĻ†āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ•ā§‡ āĻ¯āĻ¤āĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻŦā§āĻ¯āĻĨāĻžāĻšā§€āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°āĻ•ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ¨ā§€āĻšā§‡ āĻĻā§‡āĻ–ā§āĻ¨āĨ¤

āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻĄāĻŋāĻ¸ā§āĻ• āĻ¸ā§āĻ¨ā§āĻ¯āĻžāĻĒāĻļāĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻāĻŦāĻ‚ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋāĨ¤

āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ…āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡

Yandex.Cloud API-āĻ āĻ°āĻŋāĻ¯āĻŧā§‡āĻ˛ āĻŸāĻžāĻ‡āĻŽā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ…āĻ­āĻžāĻŦ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¯āĻž PV (āĻĒāĻžāĻ°āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āĻŸ āĻ­āĻ˛āĻŋāĻ‰āĻŽ) āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ°āĻŋāĻ¸āĻžāĻ‡āĻœ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨āĻ•ā§‡ āĻœāĻŸāĻŋāĻ˛ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡: āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĄāĻŋāĻ¸ā§āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŽāĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĒāĻĄ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻĄāĻžāĻ‰āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ•āĻžāĻ°āĻŖ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ CSI āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨, āĻ¯āĻĻāĻŋ CSI āĻ•āĻ¨ā§āĻŸā§āĻ°ā§‹āĻ˛āĻžāĻ° āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "āĻ…āĻĢāĻ˛āĻžāĻ‡āĻ¨" āĻĄāĻŋāĻ¸ā§āĻ•ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (VolumeExpansion.OFFLINE), āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻŋāĻ¸ā§āĻ• āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤:

āĻ¯āĻĻāĻŋ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡āĻ‡ VolumeExpansion.OFFLINE āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻāĻŦāĻ‚ āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻŦāĻž āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ ControllerExpandVolume āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻāĻ•āĻŸāĻŋāĻ° āĻĒāĻ°ā§‡āĻ‡ āĻ•āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

  • āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻžāĻŽāĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ PUBLISH_UNPUBLISH_VOLUME āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻāĻŦāĻ‚ ControllerUnpublishVolume āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ†āĻšā§āĻŦāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ…āĻĨāĻŦāĻž

  • āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻžāĻŽāĻ• āĻ¨ā§‡āĻ‡ PUBLISH_UNPUBLISH_VOLUME āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻ¨ā§‹āĻĄ āĻ†āĻ›ā§‡ STAGE_UNSTAGE_VOLUME āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻāĻŦāĻ‚ NodeUnstageVolume āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ…āĻĨāĻŦāĻž

  • āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻžāĻŽāĻ• āĻ¨ā§‡āĻ‡ PUBLISH_UNPUBLISH_VOLUME āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻ¨āĻž āĻ¨ā§‹āĻĄ STAGE_UNSTAGE_VOLUME āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻāĻŦāĻ‚ NodeUnpublishVolume āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻžāĻ‡āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ CSI āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻāĻ‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§‡ āĻ¨āĻž:

  • āĻ¸āĻžāĻ‡āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻĒāĻžāĻ¤ā§āĻ°ā§‡ csi-attacher, āĻ¯āĻž āĻŽāĻžāĻ‰āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤, āĻāĻ‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ…āĻĢāĻ˛āĻžāĻ‡āĻ¨ āĻ†āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻ–āĻžāĻ¨ā§‡.
  • āĻāĻ‡ āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ—ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ‡āĻĄāĻ•āĻžāĻ° āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° āĻ āĻŋāĻ• āĻ•āĻŋ? CSI āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨ āĻ¨āĻŋāĻœā§‡āĻ‡ Kubernetes API āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻžāĻ‡āĻĄāĻ•āĻžāĻ° āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻžāĻ āĻžāĻ¨ā§‹ gRPC āĻ•āĻ˛āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻžāĻĄāĻŧāĻž āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻŦāĻŋāĻ•āĻļāĻŋāĻ¤ āĻšāĻšā§āĻ›ā§‡ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻžāĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ (āĻ¸āĻŋāĻāĻ¸āĻ†āĻ‡ āĻĒā§āĻ˛āĻžāĻ—āĻ‡āĻ¨), āĻĄāĻŋāĻ¸ā§āĻ• āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻ•āĻžāĻœāĻŸāĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

  1. āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻœāĻŋāĻ†āĻ°āĻĒāĻŋāĻ¸āĻŋ āĻ•āĻ˛ āĻĒāĻžāĻ‡ ControllerExpandVolume;
  2. āĻ†āĻŽāĻ°āĻž āĻāĻĒāĻŋāĻ†āĻ‡-āĻ¤ā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ›āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĄāĻŋāĻ¸ā§āĻ•āĻŸāĻŋ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ†āĻŽāĻ°āĻž āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻ…āĻ¸āĻŽā§āĻ­āĻŦāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ;
  3. āĻ†āĻŽāĻ°āĻž āĻŽā§āĻ¯āĻžāĻĒā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ āĻ¸āĻžā§āĻšāĻ¯āĻŧ āĻ•āĻ°āĻŋ, āĻāĻ¤ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§ƒāĻĻā§āĻ§āĻŋāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻž āĻĻāĻ°āĻ•āĻžāĻ°āĨ¤ āĻ¨ā§€āĻšā§‡, āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻŽāĻžāĻ¨āĻšāĻŋāĻ¤ā§āĻ°āĻŸāĻŋāĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻŦ volumeResizeRequired;
  4. āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĄāĻŋāĻ¸ā§āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻĒāĻĄ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ. āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻāĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻŦā§‡āĨ¤ āĻ¯āĻžāĻ¤ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•āĻŸāĻŋ āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡ (ControllerPublishVolume) āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡ āĻĻā§‡āĻ–āĻŋ āĻ¯ā§‡ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĄāĻŋāĻ¸ā§āĻ• āĻāĻ–āĻ¨āĻ“ āĻ†āĻ›ā§‡ volumeResizeRequired āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĢā§‡āĻ°āĻ¤;
  5. CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ†āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡āĨ¤ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻĢāĻ˛ āĻšāĻ˛ā§‡, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻ¸āĻ°āĻžāĻ¨ volumeResizeRequired;
  6. āĻ•āĻžāĻ°āĻŖ āĻĄāĻŋāĻ¸ā§āĻ• āĻ†āĻ‡āĻĄāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ volumeResizeRequired, ControllerPublishVolume āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ¸ āĻšāĻ¯āĻŧ, āĻĄāĻŋāĻ¸ā§āĻ• āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻĒāĻĄ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ¸āĻšāĻœ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•ā§āĻˇāĻ¤āĻŋ āĻ†āĻ›ā§‡. āĻĄāĻŋāĻ¸ā§āĻ• āĻŦāĻĄāĻŧ āĻ•āĻ°ā§‡ āĻāĻ•ā§āĻ¸āĻŸāĻžāĻ°ā§āĻ¨āĻžāĻ˛-āĻ°āĻŋāĻ¸āĻžāĻ‡āĻœāĻžāĻ°, āĻ¯āĻž āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ 1000 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŸāĻžāĻ‡āĻŽāĻ†āĻ‰āĻŸ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšāĻ•ā§€āĻ¯āĻŧ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ¸āĻš:

func DefaultControllerRateLimiter() RateLimiter {
  return NewMaxOfRateLimiter(
  NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),
  // 10 qps, 100 bucket size.  This is only for retry speed and its only the overall factor (not per item)
  &BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
  )
}

āĻāĻŸāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻ•ā§āĻ°āĻŽā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ 15+ āĻŽāĻŋāĻ¨āĻŋāĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ‡āĻ­āĻžāĻŦā§‡, āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻĒāĻĄ āĻ…āĻ¨ā§āĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ¯āĻž āĻ–ā§āĻŦ āĻ¸āĻšāĻœā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻĨāĻžāĻšā§€āĻ¨āĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻĄāĻžāĻ‰āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ āĻ¤āĻž āĻšāĻ˛ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§€āĻŽāĻž āĻ¸ā§€āĻŽāĻž āĻ¸āĻš āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ•-āĻ°āĻŋāĻ¸āĻžāĻ‡āĻœāĻžāĻ°ā§‡āĻ° āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° 5 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡:

workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)

āĻ†āĻŽāĻ°āĻž āĻœāĻ°ā§āĻ°ā§€āĻ­āĻžāĻŦā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ•-āĻ°āĻŋāĻ¸āĻžāĻ‡āĻœāĻžāĻ° āĻĒā§āĻ¯āĻžāĻš āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋāĻ¨āĻŋ, āĻ•āĻžāĻ°āĻŖ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡āĻ° āĻ…āĻĢāĻ˛āĻžāĻ‡āĻ¨ āĻ†āĻ•āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĨā§āĻ°ā§‹āĻŦā§āĻ¯āĻžāĻ• āĻ¯āĻž āĻļā§€āĻ˜ā§āĻ°āĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻ•āĻžāĻ°ā§€ āĻĨā§‡āĻ•ā§‡ āĻ…āĻĻā§ƒāĻļā§āĻ¯ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦā§‡āĨ¤

āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻŦā§‡āĻ¨?

āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°āĻŸāĻŋ Kubernetes āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 1.15 āĻāĻŦāĻ‚ āĻ‰āĻšā§āĻšāĻ¤āĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•:

  • āĻĒāĻ¤āĻžāĻ•āĻž --allow-privileged āĻŽāĻžāĻ¨ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§āĻ¨ true API āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻāĻŦāĻ‚ āĻ•ā§āĻŦā§‡āĻ˛ā§‡āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯;
  • āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ --feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true API āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻāĻŦāĻ‚ āĻ•ā§āĻŦā§‡āĻ˛ā§‡āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯;
  • āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻĒā§āĻ°āĻšāĻžāĻ° (āĻŽāĻžāĻ‰āĻ¨ā§āĻŸ āĻĒā§āĻ°āĻšāĻžāĻ°) āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•āĨ¤ āĻĄāĻ•āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ­āĻžāĻ— āĻ•āĻ°āĻž āĻŽāĻžāĻ‰āĻ¨ā§āĻŸā§‡āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§‡āĻŽāĻ¨āĻ•ā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•āĨ¤

āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒ README āĻ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤. āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§‡āĻ¸ā§āĻŸ āĻĨā§‡āĻ•ā§‡ Kubernetes-āĻ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻœāĻĄāĻŧāĻŋāĻ¤āĨ¤

āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡:

  • āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§‡āĻ¸ā§āĻŸā§‡ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§āĻ¨ (folder-id) Yandex.Cloud (āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĻā§‡āĻ–ā§āĻ¨);
  • Yandex.Cloud API āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡, CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§‡āĻ¸ā§āĻŸā§‡, āĻ¸āĻŋāĻ•ā§āĻ°ā§‡āĻŸ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤ āĻ•ā§€ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻĨā§‡āĻ•ā§‡āĨ¤ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤, āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ•ā§€ āĻĒā§‡āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻ¸āĻ°ā§āĻŦā§‡āĻ¸āĻ°ā§āĻŦāĻž - āĻšā§‡āĻˇā§āĻŸāĻž, āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§‡āĻ¯āĻŧā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ˛ā§‡!

āĻ†āĻ°āĻ“ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨

āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°āĻŸāĻŋ Go-āĻ¤ā§‡ āĻŽāĻœāĻžāĻĻāĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒā§āĻ°āĻŦāĻ˛ āĻ‡āĻšā§āĻ›āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻœāĻ°ā§āĻ°āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡āĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ• āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻ‡ āĻ¯āĻĻāĻŋ āĻ‡āĻ¯āĻŧāĻžāĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻ†āĻ—ā§āĻ°āĻš āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°āĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻž āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡ āĻ–ā§āĻļāĻŋ āĻšāĻŦāĨ¤

āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ‡āĻ¯āĻŧāĻžāĻ¨āĻĄā§‡āĻ•ā§āĻ¸ā§‡āĻ° āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸāĻ¸ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡ CSI āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ°ā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋāĻ•ā§‡ āĻ…āĻ¨ā§āĻ•ā§‚āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡āĻ“ āĻĻā§‡āĻ–āĻŋ - āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻĄā§āĻ°āĻžāĻ‡āĻ­āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻŦā§‡, āĻāĻŦāĻ‚ āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻĒāĻ•ā§āĻˇā§‡āĻ° āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¨āĻ¯āĻŧāĨ¤

āĻĻā§āĻ°āĻˇā§āĻŸāĻŦā§āĻ¯

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§āĻ˛āĻ—ā§‡āĻ“ āĻĒāĻĄāĻŧā§āĻ¨:

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

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