{"id":387643,"date":"2024-06-29T07:26:42","date_gmt":"2024-06-29T07:26:42","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=387643"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=387643","title":{"rendered":"<span>Managed Kubernetes the hard way<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2ed\/ee2\/be5\/2edee2be5212c5e896b6ac2a69c37dbd.png\" width=\"1600\" height=\"987\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2ed\/ee2\/be5\/2edee2be5212c5e896b6ac2a69c37dbd.png\"\/><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0443\u0442\u0438\u043b\u0438\u043d \u0414\u043c\u0438\u0442\u0440\u0438\u0439 (\u0414\u043e\u0431\u0440\u044b\u0439 \u041a\u043e\u0442)\u00a0<a href=\"https:\/\/t.me\/Dobry_kot\" rel=\"noopener noreferrer nofollow\">Telegram<\/a>.<\/p>\n<p>\u041e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u0430\u00a0<a href=\"https:\/\/t.me\/fr_solution_ru\" rel=\"noopener noreferrer nofollow\">FR-Solutions<\/a>\u00a0\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435\u00a0<a href=\"https:\/\/habr.com\/users\/irbgeo\" rel=\"noopener noreferrer nofollow\">@irbgeo<\/a>\u00a0<a href=\"https:\/\/t.me\/irbgeo\" rel=\"noopener noreferrer nofollow\">Telegram<\/a>\u00a0: \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e K8S.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Managed K8S \u043f\u043e\u0434 Yandex Cloud \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u043b\u044e\u0431\u043e\u043c \u043e\u0431\u043b\u0430\u043a\u0435 \u0438\u043b\u0438 on-premises \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u0432 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0433\u0438\u0431\u043a\u0438\u0445 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441.<\/p>\n<h2>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/h2>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0432\u00a0kubeadm\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/673730\/\" rel=\"noopener noreferrer nofollow\"><u>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b K8S \u0438\u043b\u0438\u00a0\u043a\u0430\u043a\u00a0\u0440\u0430\u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0432\u0435\u0440\u043c\u0438\u0448\u0435\u043b\u044c \u0427\u0430\u0441\u0442\u044c 1<\/u><\/a>.<\/p>\n<p>\u041a\u0430\u043a\u00a0\u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 PKI \u0441\u0442\u043e\u0440\u0435\u0434\u0436 Vault \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0434\u043b\u044f\u00a0k8s control\u2011plane\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/695344\/\" rel=\"noopener noreferrer nofollow\"><u>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b K8S \u0438\u043b\u0438\u00a0\u043a\u0430\u043a\u00a0\u0440\u0430\u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0432\u0435\u0440\u043c\u0438\u0448\u0435\u043b\u044c \u0427\u0430\u0441\u0442\u044c 2<\/u><\/a>.<\/p>\n<p>\u041a\u0430\u043a\u00a0\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Kubernetes \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 Hard Way\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/699074\/\" rel=\"noopener noreferrer nofollow\"><u>Kubernetes the hard way<\/u><\/a>.<\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h2>\n<p>\u0418\u0437\u00a0\u043c\u043e\u0435\u0433\u043e\u00a0\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0Managed \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u00a0\u043e\u0431\u043b\u0430\u043a\u0430\u0445 \u0438\u043b\u0438\u00a0\u0432\u00a0\u043e\u043d\u043f\u0440\u0435\u043c\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445\u00a0\u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e,\u00a0\u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0430\u00a0Managed \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043d\u0430\u0441\u00a0\u0431\u044b\u043b\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d Cilium \u0441\u00a0\u043d\u0430\u0448\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438, \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0444\u043b\u0430\u0433\u0438 feature\u2011gates, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u00a0\u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043d\u0435\u0442 \u0432\u00a0Yandex K8S API.<\/p>\n<p>\u0412\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043d\u0435\u00a0\u0431\u0435\u0434\u0430, \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0442\u0430\u0446\u0438\u043e\u043d\u0430\u0440\u043d\u044b\u0439 K8S \u0438 \u0437\u0430\u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a\u00a0\u043d\u0430\u043c \u0443\u0433\u043e\u0434\u043d\u043e. \u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0437\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u043a\u0430\u043a\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00a0\u0431\u044b\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438?<\/p>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h2>\n<p>\u0414\u043b\u044f\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f cloud native \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430\u00a0Terraform. \u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u043a\u0430\u043a\u00a0\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0443\u0437\u043b\u044b, \u043d\u0443\u0436\u0435\u043d\u00a0\u043b\u0438 \u043d\u0430\u043c Ansible, Puppet, SaltStack? \u041f\u043e\u0441\u043b\u0435 3\u00a0\u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u043f\u0438\u043b\u044e\u043b\u0438 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e\u00a0\u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e Terraform \u0438 cloud\u2011init.<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h2>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u043b\u0435\u0436\u0438\u0442 Terraform, \u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043d\u0438\u043c\u00a0\u2014 \u0421\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u2011\u0440\u0435\u0441\u0443\u0440\u0441\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c (\u0421\u0420\u041c). <\/p>\n<p>\u0420\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432\u0441\u0435 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043e\u0442\u00a0\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438 cloud\u2011init \u0434\u043b\u044f\u00a0\u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 CPM \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0431\u0435\u0437\u00a0\u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u00a0\u0441\u043c\u0435\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u0435\u043f\u043b\u043e\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u043f\u0438\u0441\u0430\u0432 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0434\u00a0Yandex Cloud, VK Cloud \u0438\u00a0\u0442.\u00a0\u043f., \u0438, \u043f\u043e\u043c\u0435\u043d\u044f\u0432 \u043d\u0430\u043c\u0435\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0434\u0443\u043b\u044c Yandex cloud \u043d\u0430\u00a0\u043c\u043e\u0434\u0443\u043b\u044c VK Cloud, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u043e\u0442\u00a0\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043d\u043e\u00a0\u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5f6\/365\/654\/5f6365654bef90b37098c7b84eea2afb.png\" width=\"1184\" height=\"270\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5f6\/365\/654\/5f6365654bef90b37098c7b84eea2afb.png\"\/><\/figure>\n<p><a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-config-vars\/locals.certs.tf\" rel=\"noopener noreferrer nofollow\"><strong>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b<\/strong><\/a><strong><br \/><\/strong><br \/>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u041c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b Vault, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-config-vars\/locals.certs.tf\" rel=\"noopener noreferrer nofollow\"><strong>\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/strong><\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043b\u044e\u0447\u0435\u0439\/\u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440-\u0443\u0437\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 \u0443\u0437\u043b\u0435 \u043c\u043e\u0433 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0411\u044b\u043b\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ul>\n<li>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f secret_id \u0438 role_id \u043e\u0442 Approle \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0440\u043e\u043a \u0436\u0438\u0437\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0443\u0441\u043f\u0435\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 IAM \u043e\u0442 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f secret_id\/role_id \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u0417\u0430\u0442\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c cloud-cli \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u0441 \u0445\u043e\u0441\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0435\u0433\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u0442\u0435\u0445 \u043e\u0431\u043b\u0430\u043a\u0430\u0445, \u0433\u0434\u0435 \u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 IAM.<\/p>\n<p><a href=\"https:\/\/github.com\/fraima\/terraform-modules\/tree\/main\/modules\/k8s-config-vars\" rel=\"noopener noreferrer nofollow\"><strong>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/strong><\/a><strong><\/p>\n<p><\/strong>\u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u0435\u0433\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 &#8212; \u044d\u0442\u043e \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044b. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u043a \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443: <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-config-vars\/outputs.tf\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u0430\u0442\u0430\u043b\u043e\u0433<\/strong><\/a><\/p>\n<pre><code>variable \"k8s_global_vars\" {   description = \"module:K8S-GLOBAL VARS\"   type        = any   default     = {} } <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u0435\u043b\u044f\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &#171;\u0437\u0430\u043f\u0438\u0441\u0430\u043b &#8212; \u0437\u0430\u0431\u044b\u043b&#187; &#8212; \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043d\u043e \u043d\u0435\u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u0432 OUTPUT, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u044b\u043c \u043d\u0430 \u0431\u043b\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">locals {    k8s-addresses = {     local_api_address           = format(\"%s.1\",  join(\".\", slice(split(\".\",local.k8s_network.service_cidr), 0, 3)) )     dns_address                 = format(\"%s.10\", join(\".\", slice(split(\".\",local.k8s_network.service_cidr), 0, 3)) )      idp_provider_fqdn           = format(\"auth.%s\"          , local.cluster_metadata.base_domain)     base_cluster_fqdn           = format(\"%s.%s\"            , local.cluster_metadata.cluster_name, local.cluster_metadata.base_domain)     wildcard_base_cluster_fqdn  = format(\"%s.%s.%s\", \"*\"    , local.cluster_metadata.cluster_name, local.cluster_metadata.base_domain)     etcd_server_lb_fqdn         = format(\"%s.%s.%s\", \"etcd\" , local.cluster_metadata.cluster_name, local.cluster_metadata.base_domain)   } }  output \"k8s-addresses\" {   value = local.k8s-addresses }<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L130\" rel=\"noopener noreferrer nofollow\"><strong>Cloud init<\/strong><\/a><\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f cloud-init \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0440\u0438 \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043c\u044b \u0431\u044b\u043b\u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u043d\u0438\u0445 \u0438 \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043f\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0441\u043c\u044b\u0441\u043b\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0434\u0443\u043b\u044c containerd&#187; \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u0432 \u0441\u0435\u0431\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f systemd \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u044b\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u043c \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.<\/p>\n<p>\u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 kubeadm. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e kubeadm, \u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043c\u043e\u0433 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0442\u0430\u043b fraimctl &#8212; \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>fraimctl init<\/code>.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c: <\/p>\n<ul>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/a2a11072deabdbe2b71907cc6cd4874734bced65\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L187\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u043e\u043d\u0444\u0438\u0433<\/strong><\/a> fraimctl (\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043a \u043d\u0438\u043c);<\/p>\n<\/li>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/a2a11072deabdbe2b71907cc6cd4874734bced65\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L130\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u043e\u043d\u0444\u0438\u0433<\/strong><\/a> kubeadm (\u0433\u0435\u043d\u0435\u0440\u0438\u0442 \u0441\u0442\u0430\u0442\u0438\u043a \u043f\u043e\u0434 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0438 \u0447\u0435\u043a\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0434\u043d\u044f\u0442);<\/p>\n<\/li>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/a2a11072deabdbe2b71907cc6cd4874734bced65\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L97\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u043e\u043d\u0444\u0438\u0433<\/strong><\/a> key-keeper (\u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b).<\/p>\n<\/li>\n<\/ul>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 kubeadm. \u041c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u044d\u0442\u0430\u043f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 key-keeper, kubeconfig \u0438 static pod manifests \u0432 fraimctl. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u044d\u0442\u0430\u043f \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0443\u0437\u043b\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f kubeadm \u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p><a href=\"https:\/\/github.com\/fraima\/fraima\" rel=\"noopener noreferrer nofollow\"><strong>Fraimctl<\/strong><\/a><\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u0435\u0435, \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u0430\u0437\u0430 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f kubeadm \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043e\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>fraimctl.conf<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">- apiVersion: fraima.io\/v1alpha   kind: Containerd   spec:      service:       extraArgs:         # This document provides the description of the CRI plugin configuration.          # The CRI plugin config is part of the containerd config         # Default: \/etc\/containerd\/config.toml         config: \/etc\/kubernetes\/containerd\/config.toml      configuration:       extraArgs:         version: 2         plugins:           io.containerd.grpc.v1.cri:             containerd:               runtimes:                 runc:                   # Runtime v2 introduces a first class shim API for runtime authors to integrate with containerd.                    # The shim API is minimal and scoped to the execution lifecycle of a container.                   runtime_type: \"io.containerd.runc.v2\"                   options:                     # While containerd and Kubernetes use the legacy cgroupfs driver for managing cgroups by default,                      # it is recommended to use the systemd driver on systemd-based hosts for compliance of the \"single-writer\" rule of cgroups.                      # To configure containerd to use the systemd driver, set the following option:                     SystemdCgroup: true      downloading:       - name: containerd         src: https:\/\/github.com\/containerd\/containerd\/releases\/download\/v1.6.6\/containerd-1.6.6-linux-amd64.tar.gz         checkSum:           src: https:\/\/github.com\/containerd\/containerd\/releases\/download\/v1.6.6\/containerd-1.6.6-linux-amd64.tar.gz.sha256sum           type: \"sha256\"         path: \/usr\/bin\/         owner: root:root         permission: 0645         unzip:           status: true           files:              - bin\/containerd             - bin\/containerd-shim             - bin\/containerd-shim-runc-v1             - bin\/containerd-shim-runc-v2             - bin\/containerd-stress             - bin\/ctr        - name: runc         src: https:\/\/github.com\/opencontainers\/runc\/releases\/download\/v1.1.3\/runc.amd64         path: \/usr\/bin\/         owner: root:root         permission: 0645      starting:       - systemctl enable containerd       - systemctl start containerd <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0442\u0430\u0434\u0438\u0438:<\/p>\n<ul>\n<li>\n<p><strong>downloading<\/strong>  (\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043a\u0430\u0445.)<\/p>\n<\/li>\n<li>\n<p><strong>service<\/strong> (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0443\u0436\u0431\u0443 systemd, \u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 extraArgs \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u00a0\u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.)<\/p>\n<\/li>\n<li>\n<p><strong>configuration<\/strong>  (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0436\u0431\u044b systemd, \u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 extraArgs \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u00a0\u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.)<\/p>\n<\/li>\n<li>\n<p><strong>starting<\/strong> (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0442\u0440\u0435\u0445 \u044d\u0442\u0430\u043f\u043e\u0432.)<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0430\u043f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (Downloading), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 (if else) \u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 sysctl \u0438 modprobe.<\/p>\n<details class=\"spoiler\">\n<summary>fraimctl.conf<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>- apiVersion: fraima.io\/v1alpha   kind: Sysctl   spec:     configuration:       extraArgs:         net.ipv4.ip_forward: 1     starting:       - sudo sysctl --system  - apiVersion: fraima.io\/v1alpha   kind: Modprob   spec:     configuration:       extraArgs:       - br_netfilter       - overlay     starting:       - sudo modprobe overlay       - sudo modprobe br_netfilter       - sudo sysctl --system<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h4>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h4>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/038\/591\/d7a\/038591d7a140c7d3a4bc0d1b82654cb5.png\" width=\"703\" height=\"636\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/038\/591\/d7a\/038591d7a140c7d3a4bc0d1b82654cb5.png\"\/><\/figure>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0443\u0431\u0438\u043a \u0432 Terraform \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441 \u0432 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, loadBalancer, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0443\u0431\u0438\u043a\u0438 \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e, \u0430 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0434\u0430\u0436\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u043b\u0435\u0442\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>kubectl get no -o wide<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">root@master-2-cluster-2:\/home\/dkot# kubectl get nodes -o wide NAME                 STATUS   ROLES                  AGE     VERSION    INTERNAL-IP   EXTERNAL-IP     OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME master-1-cluster-2   Ready    control-plane,master   2m50s   v1.23.12   10.1.0.11     51.250.66.122   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.8 master-2-cluster-2   Ready    control-plane,master   2m53s   v1.23.12   10.2.0.33     84.201.139.95   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.8 master-3-cluster-2   Ready    control-plane,master   2m55s   v1.23.12   10.3.0.21     51.250.40.244   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.8  root@master-2-cluster-2:\/home\/dkot# kubectl get nodes -o wide NAME                 STATUS   ROLES                  AGE   VERSION    INTERNAL-IP   EXTERNAL-IP     OS-IMAGE                       KERNEL-VERSION    CONTAINER-RUNTIME master-1-cluster-2   Ready    control-plane,master   37s   v1.23.12   10.1.0.12     62.84.119.244   Debian GNU\/Linux 10 (buster)   4.19.0-18-amd64   containerd:\/\/1.6.8 master-2-cluster-2   Ready    control-plane,master   12m   v1.23.12   10.2.0.16     51.250.27.187   Debian GNU\/Linux 10 (buster)   4.19.0-18-amd64   containerd:\/\/1.6.8 master-3-cluster-2   Ready    control-plane,master   12m   v1.23.12   10.3.0.13     51.250.45.49    Debian GNU\/Linux 10 (buster)   4.19.0-18-amd64   containerd:\/\/1.6.8 <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u043a\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u044b\u0448\u0435, \u0447\u0442\u043e\u0431\u044b \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445.<\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0442\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/p>\n<ol>\n<li>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"https:\/\/github.com\/fraima\/kubernetes\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/fraima\/kubernetes<\/a><\/p>\n<\/li>\n<li>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/github.com\/fraima\/kubernetes\/tree\/main\/infrastructure-vault\" rel=\"noopener noreferrer nofollow\"><u>infrastructure-vault<\/u><\/a><u> (\u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0443\u0442 PKI \u0432 Vault)<\/u><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/fraima\/kubernetes\/tree\/main\/infrastructure-yandex\" rel=\"noopener noreferrer nofollow\">infrastructure-yandex<\/a> (\u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 YC, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 VPC, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0445 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/fraima\/kubernetes\/tree\/main\/infrastructure-keycloak\" rel=\"noopener noreferrer nofollow\">infrastructure-keycloak<\/a> (\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f Keycloak, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/fraima\/kubernetes\/tree\/main\/k8s-yandex-cluster\" rel=\"noopener noreferrer nofollow\">k8s-yandex-cluster<\/a> (\u043f\u0440\u043e\u0435\u043a\u0442-\u0448\u0430\u0431\u043b\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.)<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 Readme.<\/p>\n<\/li>\n<\/ol>\n<h4>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Vault, YC \u0438 Keycloak.<\/p>\n<details class=\"spoiler\">\n<summary>environments<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>export TF_VAR_YC_CLOUD_ID=\"\" export TF_VAR_YC_FOLDER_ID=\"\" export TF_VAR_YC_TOKEN=\"\" export TF_VAR_YC_ZONE=\"\" export TF_VAR_VAULT_TOKEN=\"\" export TF_VAR_VAULT_ADDR=\"\" export TF_VAR_KEYCLOAK_REALM=\"\" export TF_VAR_KEYCLOAK_CLIENT_ID=\"\" export TF_VAR_KEYCLOAK_USER=\"\" export TF_VAR_KEYCLOAK_PASSWORD=\"\" export TF_VAR_KEYCLOAK_URL=\"\"<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Terraform \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 CI\/CD, \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u0445.<\/p>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0447\u0438\u0441\u0442\u044b\u043c Terraform, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 workspace.<\/p>\n<pre><code>terraform workspace new example  terraform plan    -var-file vars\/example.tfvars terraform apply   -var-file vars\/example.tfvars terraform destroy -var-file vars\/example.tfvars<\/code><\/pre>\n<h4>\u0418\u043d\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 <\/h4>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u0432\u0443\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<ul>\n<li>\n<p>locals.defaults.tf &#8212; \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>vars\/${cluster_name}.tf &#8212; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>vars\/${cluster_name}.tf <\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global_vars = {     cluster_name    = \"example\"     pod_cidr        = \"10.102.0.0\/16\"      serviceaccount_k8s_controllers_name = \"yandex-k8s-controllers\"      kube_apiserver_flags = {         oidc-issuer-url         = \"https:\/\/auth.dobry-kot.ru\/auth\/realms\/master\"         oidc-client-id          = \"kubernetes-clusters\"         oidc-username-claim     = \"sub\"         oidc-groups-claim       = \"groups\"         oidc-username-prefix    = \"-\"     }      kube_controller_manager_flags = {         cluster-name = \"kubernetes\"     }      kube_scheduler_flags = {              }      addons = {         cilium = {             enabled = true             extra_values = {                 cluster = {                     name = \"example\"                     id = 12                 }             }         }          vault-issuer = {             enabled = true             extra_values = {}         }          coredns = {             enabled = true             extra_values = {}         }          gatekeeper = {             enabled = true             extra_values = {}         }          certmanager = {             enabled = true             extra_values = {}         }          machine-controller-manager = {             enabled = true             extra_values = {}         }          yandex-cloud-controller = {             enabled = true             extra_values = {}         }          yandex-csi-controller = {             enabled = true             extra_values = {}         }          compute-instance = {             enabled = true             custom_values = {                 subnet_id   = \"e9bndv0b3c5asheadg09\"                 zone        = \"ru-central1-a\"                 image_id    = \"fd8ingbofbh3j5h7i8ll\"                 replicas    = 1             }             extra_values = {                 metadata = {                     nodeLabels = {                         \"node-role.kubernetes.io\/worker\" = \"\"                         \"provider\" = \"yandex\"                         }                     cloudLabels = {                         tair = \"critical\"                     }                 }             }         }     }  }  cloud_metadata = {     cloud_name  = \"cloud-uid-vf465ie7\"     folder_name = \"example\" }  master_group = {     name                = \"master\"     count               = 3      default_subnet      = \"10.0.0.0\/24\"     default_zone        = \"ru-central1-a\"      metadata = {         # user_data_template = \"fraima-hbf\"         user_data_template = \"fraima\"     } } <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u042d\u0442\u043e\u0442 ENV-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0433\u0438 Kube-apiserver \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 &#171;kube_apiserver_flags&#187;.<\/p>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b.<\/p>\n<ol>\n<li>\n<p>&#171;master_group&#187; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0437\u043e\u043d\u0435, \u0431\u0443\u0434\u0443\u0442 \u043b\u0438 \u043e\u043d\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u043e\u043d\u0430\u0445 \u0438\u043b\u0438 \u043d\u0435\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434 (\u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441 1 \u043d\u0430 3 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e).<\/p>\n<\/li>\n<li>\n<p>&#171;global_vars&#187; \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0431\u0443\u0434\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0435\u0433\u043e \u0438\u043c\u044f, \u043f\u043e\u0434\u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0432, \u0444\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a\u0438\u0435 \u0430\u0434\u0434\u043e\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p> &#171;cloud_metadata&#187; \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a cloud_name&#187; \u0438 &#171;folder_name&#187;.<\/p>\n<\/li>\n<\/ol>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c<\/h4>\n<pre><code>time terraform apply -var-file vars\/example.tfvars  -auto-approve<\/code><\/pre>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u0442\u0440\u0435\u043c\u044f \u043c\u0430\u0441\u0442\u0435\u0440-\u043d\u043e\u0434\u0430\u043c\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 6 CPU, 12 \u0413\u0411 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 100 \u0413\u0411 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 10 \u0413\u0411 \u0434\u043b\u044f ETCD.<\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0431\u0430\u043b\u0430\u043d\u0441\u0435\u0440, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0430\u0434\u0434\u043e\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u044f\u0442 \u0441\u0435\u0442\u044c, \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 YC, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a CSI driver, Cloud Controller \u0438 Machine Controller Manager \u0434\u043b\u044f \u0437\u0430\u043a\u0430\u0437\u0430 \u0432\u043e\u0440\u043a\u0435\u0440-\u043d\u043e\u0434 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u0448\u0435\u0441\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443.<\/p>\n<pre><code>Apply complete! Resources: 86 added, 0 changed, 0 destroyed.  Outputs:  LB-IP = \"kubectl config set-cluster  cluster --server=https:\/\/158.160.63.64:443 --insecure-skip-tls-verify\"  real    6m4,698s user    0m24,182s sys     0m1,582s  dk@dobry-kot-system:~\/workspace\/fraima\/kubernetes\/k8s-yandex-cluster-naked$ kubectl get nodes -o wide NAME                STATUS   ROLES                  AGE     VERSION    INTERNAL-IP   EXTERNAL-IP      OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME master-50d858e0-1   Ready    control-plane,master   9m34s   v1.23.12   10.0.0.12     158.160.51.95    Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.6 master-50d858e0-2   Ready    control-plane,master   9m33s   v1.23.12   10.0.0.6      158.160.38.139   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.6 master-50d858e0-3   Ready    control-plane,master   9m34s   v1.23.12   10.0.0.19     158.160.42.200   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.6<\/code><\/pre>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443 \u0443\u0437\u043b\u043e\u0432 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 YC \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 keycloak \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d &#171;kubectl login&#187; \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c kubeconfig.<\/p>\n<details class=\"spoiler\">\n<summary>kubeconfig<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>apiVersion: v1 clusters: - cluster:     insecure-skip-tls-verify: true     server: https:\/\/158.160.63.64:443   name: cluster contexts: - context:     cluster: cluster     namespace: kube-fraima-machine-controller-manager     user: cluster   name: cluster current-context: cluster kind: Config preferences: {} users: - name: cluster   user:     exec:       apiVersion: client.authentication.k8s.io\/v1beta1       args:       - oidc-login       - get-token       - --oidc-issuer-url=https:\/\/$KEYCLOAK-SERVER\/auth\/realms\/master       - --oidc-client-id=kubernetes-clusters       - --oidc-client-secret=kube-client-secret       - --certificate-authority=\/usr\/local\/share\/ca-certificates\/oidc-ca.pem       - --skip-open-browser       - --grant-type=password       - --username=$USERNAME       - --password=$PASSWORD       command: kubectl       env:       - name: context         value: $(kubectl config current-context)       interactiveMode: IfAvailable       provideClusterInfo: false <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u041d\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/h2>\n<pre><code>NAME                                     STATUS   AGE default                                  Active   11m kube-fraima-certmanager                  Active   8m48s # CERTMANAGER kube-fraima-dns                          Active   9m57s # COREDNS kube-fraima-machine-controller-manager   Active   8m55s kube-fraima-opa                          Active   9m44s # GATEKEEPER kube-fraima-sdn                          Active   10m   # CILIUM kube-fraima-yandex-cloud-controller      Active   11m kube-fraima-yandex-csi-controller        Active   9m54s kube-node-lease                          Active   11m kube-public                              Active   11m kube-system                              Active   11m<\/code><\/pre>\n<h2>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u044d\u0442\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0442 \u0421\u0410 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 VAULT. \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c.<\/p>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043d\u043e\u0434\u0443 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 csr bootstraping, \u0433\u0434\u0435 \u043d\u043e\u0434\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0432 API, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0435 \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043d\u043e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 kube-controller-manager \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0434\u0430\u0447\u0435\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0434\u043b\u044f \u0443\u0437\u043b\u043e\u0432, \u0442\u043e \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 CA \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 Certmanager \u0438 Gatekeeper, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 ClusterIssuer \u0432 Certmanager \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 VAULT. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e ClusterIssuer \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f worker\/master \u0443\u0437\u043b\u043e\u0432. \u0417\u0430\u0442\u0435\u043c \u0432 Gatekeeper \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043c\u0443\u0442\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 CSR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 SIGNERNAME \u0441 &#171;<a href=\"http:\/\/kubernetes.io\/kubelet-serving\" rel=\"noopener noreferrer nofollow\">kubernetes.io\/kubelet-serving<\/a>&#187; \u043d\u0430 &#171;<a href=\"http:\/\/clusterissuers.cert-manager.io\/vault-issuer\" rel=\"noopener noreferrer nofollow\">clusterissuers.cert-manager.io\/vault-issuer<\/a>&#171;. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b.<\/p>\n<pre><code>dk@dobry-kot-system:~\/Downloads$ kubectl get csr NAME                                                   AGE     SIGNERNAME                                    REQUESTOR                       REQUESTEDDURATION   CONDITION csr-52cx7                                              12m     kubernetes.io\/kubelet-serving                 system:node:master-50d858e0-3   &lt;none>              Pending csr-lbhqf                                              12m     kubernetes.io\/kubelet-serving                 system:node:master-50d858e0-1   &lt;none>              Pending csr-n27p4                                              12m     kubernetes.io\/kubelet-serving                 system:node:master-50d858e0-2   &lt;none>              Pending node-csr-3l5VT-i7YinQWaTvbCY467d27GQLnSqnT_BYgk_PFII   8m17s   clusterissuers.cert-manager.io\/vault-issuer   system:bootstrap:663273         &lt;none>              Pending <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043d\u043e\u0432\u044b\u0439 \u0443\u0437\u0435\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0447\u0435\u0440\u0435\u0437 CSR, \u043d\u043e SIGNERNAME \u0443 \u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043a\u0430\u043a &#171;<a href=\"http:\/\/clusterissuers.cert-manager.io\/vault-issuer\" rel=\"noopener noreferrer nofollow\">clusterissuers.cert-manager.io\/vault-issuer<\/a>&#171;. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e<br \/> \u0437\u0430\u043f\u0440\u043e\u0441\u0430 Certmanager \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Vault.<\/p>\n<pre><code>kubectl certificate approve node-csr-3l5VT-i7YinQWaTvbCY467d27GQLnSqnT_BYgk_PFII<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c, \u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0443\u0437\u0435\u043b \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440.<\/p>\n<pre><code class=\"bash\">dk@dobry-kot-system:~\/Downloads$ kubectl get no -o wide NAME                                         STATUS   ROLES                  AGE   VERSION    INTERNAL-IP   EXTERNAL-IP      OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME master-50d858e0-1                            Ready    control-plane,master   24m   v1.23.12   10.0.0.12     158.160.51.95    Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.6 master-50d858e0-2                            Ready    control-plane,master   24m   v1.23.12   10.0.0.6      158.160.38.139   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.6 master-50d858e0-3                            Ready    control-plane,master   24m   v1.23.12   10.0.0.19     158.160.42.200   Ubuntu 20.04.4 LTS   5.4.0-124-generic   containerd:\/\/1.6.6 worker-yandex-compute-instance-68ffc-f2sd2   Ready    worker                 11m   v1.23.12   10.154.0.11   51.250.72.216    Ubuntu 22.04.1 LTS   5.15.0-46-generic   containerd:\/\/1.6.6 <\/code><\/pre>\n<h2>\u041f\u043b\u0430\u043d\u044b<\/h2>\n<ol>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b Fraimctl, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Kubeadm.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f AWS \u0438 VK-Cloud.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043a\u0440\u044b\u0442\u044c Terraform \u0442\u0435\u0441\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u0442\u043a\u043e \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Terraform + Helm \u043d\u0430 Terraform + Flux.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f K8S API \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0437\u043b\u043e\u0432 \u043a\u0430\u043a Day2 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<\/p>\n<\/li>\n<\/ol>\n<p>\u0423 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u0430 \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u044b\u0435 \u043f\u043b\u0430\u043d\u044b \u0438 \u043c\u044b \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 CNCF. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0446\u0435\u043d\u0438\u043b\u0438 \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0447\u0430\u0442\u0443, \u0433\u0434\u0435 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u0432\u0430\u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0434\u044b \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<h2>\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b<\/h2>\n<p>terraform modules: <a href=\"https:\/\/github.com\/fraima\/terraform-modules\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/github.com\/fraima\/terraform-modules<\/strong><\/a><strong><br \/><\/strong>terraform cluster: <a href=\"https:\/\/github.com\/fraima\/kubernetes\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/github.com\/fraima\/kubernetes<\/strong><\/a><\/p>\n<p>telegram community:  <a href=\"https:\/\/t.me\/fr_solution_ru\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/t.me\/fr_solution_ru<\/strong><\/a><strong><br \/><\/strong>telegram me<strong>: <\/strong><a href=\"https:\/\/t.me\/Dobry_kot\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/t.me\/Dobry_kot<\/strong><\/a><\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/727820\/\"> https:\/\/habr.com\/ru\/articles\/727820\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0443\u0442\u0438\u043b\u0438\u043d \u0414\u043c\u0438\u0442\u0440\u0438\u0439 (\u0414\u043e\u0431\u0440\u044b\u0439 \u041a\u043e\u0442)\u00a0<a href=\"https:\/\/t.me\/Dobry_kot\" rel=\"noopener noreferrer nofollow\">Telegram<\/a>.<\/p>\n<p>\u041e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u0430\u00a0<a href=\"https:\/\/t.me\/fr_solution_ru\" rel=\"noopener noreferrer nofollow\">FR-Solutions<\/a>\u00a0\u0438 \u043f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435\u00a0<a href=\"https:\/\/habr.com\/users\/irbgeo\" rel=\"noopener noreferrer nofollow\">@irbgeo<\/a>\u00a0<a href=\"https:\/\/t.me\/irbgeo\" rel=\"noopener noreferrer nofollow\">Telegram<\/a>\u00a0: \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e K8S.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Managed K8S \u043f\u043e\u0434 Yandex Cloud \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u043b\u044e\u0431\u043e\u043c \u043e\u0431\u043b\u0430\u043a\u0435 \u0438\u043b\u0438 on-premises \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u0432 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0433\u0438\u0431\u043a\u0438\u0445 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441.<\/p>\n<h2>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/h2>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0432\u00a0kubeadm\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/673730\/\" rel=\"noopener noreferrer nofollow\"><u>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b K8S \u0438\u043b\u0438\u00a0\u043a\u0430\u043a\u00a0\u0440\u0430\u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0432\u0435\u0440\u043c\u0438\u0448\u0435\u043b\u044c \u0427\u0430\u0441\u0442\u044c 1<\/u><\/a>.<\/p>\n<p>\u041a\u0430\u043a\u00a0\u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 PKI \u0441\u0442\u043e\u0440\u0435\u0434\u0436 Vault \u0434\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0434\u043b\u044f\u00a0k8s control\u2011plane\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/695344\/\" rel=\"noopener noreferrer nofollow\"><u>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b K8S \u0438\u043b\u0438\u00a0\u043a\u0430\u043a\u00a0\u0440\u0430\u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0432\u0435\u0440\u043c\u0438\u0448\u0435\u043b\u044c \u0427\u0430\u0441\u0442\u044c 2<\/u><\/a>.<\/p>\n<p>\u041a\u0430\u043a\u00a0\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Kubernetes \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 Hard Way\u00a0\u2014 <a href=\"https:\/\/habr.com\/ru\/articles\/699074\/\" rel=\"noopener noreferrer nofollow\"><u>Kubernetes the hard way<\/u><\/a>.<\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h2>\n<p>\u0418\u0437\u00a0\u043c\u043e\u0435\u0433\u043e\u00a0\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0Managed \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u00a0\u043e\u0431\u043b\u0430\u043a\u0430\u0445 \u0438\u043b\u0438\u00a0\u0432\u00a0\u043e\u043d\u043f\u0440\u0435\u043c\u2011\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445\u00a0\u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e,\u00a0\u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0430\u00a0Managed \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043d\u0430\u0441\u00a0\u0431\u044b\u043b\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d Cilium \u0441\u00a0\u043d\u0430\u0448\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438, \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0444\u043b\u0430\u0433\u0438 feature\u2011gates, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u00a0\u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u043d\u0435\u0442 \u0432\u00a0Yandex K8S API.<\/p>\n<p>\u0412\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043d\u0435\u00a0\u0431\u0435\u0434\u0430, \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0442\u0430\u0446\u0438\u043e\u043d\u0430\u0440\u043d\u044b\u0439 K8S \u0438 \u0437\u0430\u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a\u00a0\u043d\u0430\u043c \u0443\u0433\u043e\u0434\u043d\u043e. \u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0437\u044f\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0432\u044b\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u043a\u0430\u043a\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u00a0\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00a0\u0431\u044b\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438?<\/p>\n<h2>\u0412\u044b\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h2>\n<p>\u0414\u043b\u044f\u00a0\u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f cloud native \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430\u00a0Terraform. \u041e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u043a\u0430\u043a\u00a0\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0443\u0437\u043b\u044b, \u043d\u0443\u0436\u0435\u043d\u00a0\u043b\u0438 \u043d\u0430\u043c Ansible, Puppet, SaltStack? \u041f\u043e\u0441\u043b\u0435 3\u00a0\u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u043f\u0438\u043b\u044e\u043b\u0438 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e\u00a0\u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e Terraform \u0438 cloud\u2011init.<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h2>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u043b\u0435\u0436\u0438\u0442 Terraform, \u0442\u043e \u043e\u0434\u043d\u043e \u0438\u0437\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0\u043d\u0438\u043c\u00a0\u2014 \u0421\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u2011\u0440\u0435\u0441\u0443\u0440\u0441\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c (\u0421\u0420\u041c). <\/p>\n<p>\u0420\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432\u0441\u0435 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043e\u0442\u00a0\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043e\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438 cloud\u2011init \u0434\u043b\u044f\u00a0\u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 CPM \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0431\u0435\u0437\u00a0\u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u00a0\u0441\u043c\u0435\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u0435\u043f\u043b\u043e\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u043f\u0438\u0441\u0430\u0432 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0434\u00a0Yandex Cloud, VK Cloud \u0438\u00a0\u0442.\u00a0\u043f., \u0438, \u043f\u043e\u043c\u0435\u043d\u044f\u0432 \u043d\u0430\u043c\u0435\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0434\u0443\u043b\u044c Yandex cloud \u043d\u0430\u00a0\u043c\u043e\u0434\u0443\u043b\u044c VK Cloud, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u043e\u0442\u00a0\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043d\u043e\u00a0\u0432\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p><a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-config-vars\/locals.certs.tf\" rel=\"noopener noreferrer nofollow\"><strong>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b<\/strong><\/a><strong><br \/><\/strong><br \/>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u0430 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445. \u041c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b Vault, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-config-vars\/locals.certs.tf\" rel=\"noopener noreferrer nofollow\"><strong>\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/strong><\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043b\u044e\u0447\u0435\u0439\/\u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440-\u0443\u0437\u043b\u044b, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 \u0443\u0437\u043b\u0435 \u043c\u043e\u0433 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0411\u044b\u043b\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ul>\n<li>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f secret_id \u0438 role_id \u043e\u0442 Approle \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0440\u043e\u043a \u0436\u0438\u0437\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0443\u0441\u043f\u0435\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 IAM \u043e\u0442 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f secret_id\/role_id \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u0417\u0430\u0442\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c cloud-cli \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u0441 \u0445\u043e\u0441\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0435\u0433\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u0442\u0435\u0445 \u043e\u0431\u043b\u0430\u043a\u0430\u0445, \u0433\u0434\u0435 \u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 IAM.<\/p>\n<p><a href=\"https:\/\/github.com\/fraima\/terraform-modules\/tree\/main\/modules\/k8s-config-vars\" rel=\"noopener noreferrer nofollow\"><strong>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/strong><\/a><strong><\/p>\n<p><\/strong>\u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043c\u044b \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u0435\u0433\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 &#8212; \u044d\u0442\u043e \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044b. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0445 \u043a \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443: <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-config-vars\/outputs.tf\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u0430\u0442\u0430\u043b\u043e\u0433<\/strong><\/a><\/p>\n<pre><code>variable \"k8s_global_vars\" {   description = \"module:K8S-GLOBAL VARS\"   type        = any   default     = {} } <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u0435\u043b\u044f\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 &#171;\u0437\u0430\u043f\u0438\u0441\u0430\u043b &#8212; \u0437\u0430\u0431\u044b\u043b&#187; &#8212; \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043d\u043e \u043d\u0435\u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u0432 OUTPUT, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u044b\u043c \u043d\u0430 \u0431\u043b\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">locals {    k8s-addresses = {     local_api_address           = format(\"%s.1\",  join(\".\", slice(split(\".\",local.k8s_network.service_cidr), 0, 3)) )     dns_address                 = format(\"%s.10\", join(\".\", slice(split(\".\",local.k8s_network.service_cidr), 0, 3)) )      idp_provider_fqdn           = format(\"auth.%s\"          , local.cluster_metadata.base_domain)     base_cluster_fqdn           = format(\"%s.%s\"            , local.cluster_metadata.cluster_name, local.cluster_metadata.base_domain)     wildcard_base_cluster_fqdn  = format(\"%s.%s.%s\", \"*\"    , local.cluster_metadata.cluster_name, local.cluster_metadata.base_domain)     etcd_server_lb_fqdn         = format(\"%s.%s.%s\", \"etcd\" , local.cluster_metadata.cluster_name, local.cluster_metadata.base_domain)   } }  output \"k8s-addresses\" {   value = local.k8s-addresses }<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/main\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L130\" rel=\"noopener noreferrer nofollow\"><strong>Cloud init<\/strong><\/a><\/p>\n<p>\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f cloud-init \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0440\u0438 \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043c\u044b \u0431\u044b\u043b\u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u043d\u0438\u0445 \u0438 \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043f\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0441\u043c\u044b\u0441\u043b\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0434\u0443\u043b\u044c containerd&#187; \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u0432 \u0441\u0435\u0431\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f systemd \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0431\u044b\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u043c \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439.<\/p>\n<p>\u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 kubeadm. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e kubeadm, \u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043c\u043e\u0433 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0442\u0430\u043b fraimctl &#8212; \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>fraimctl init<\/code>.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c: <\/p>\n<ul>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/a2a11072deabdbe2b71907cc6cd4874734bced65\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L187\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u043e\u043d\u0444\u0438\u0433<\/strong><\/a> fraimctl (\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043a \u043d\u0438\u043c);<\/p>\n<\/li>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/a2a11072deabdbe2b71907cc6cd4874734bced65\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L130\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u043e\u043d\u0444\u0438\u0433<\/strong><\/a> kubeadm (\u0433\u0435\u043d\u0435\u0440\u0438\u0442 \u0441\u0442\u0430\u0442\u0438\u043a \u043f\u043e\u0434 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0438 \u0447\u0435\u043a\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0434\u043d\u044f\u0442);<\/p>\n<\/li>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 <a href=\"https:\/\/github.com\/fraima\/terraform-modules\/blob\/a2a11072deabdbe2b71907cc6cd4874734bced65\/modules\/k8s-templates\/cloud-init-master\/templates\/cloud-init-kubeadm-master-fraima.tftpl#L97\" rel=\"noopener noreferrer nofollow\"><strong>\u043a\u043e\u043d\u0444\u0438\u0433<\/strong><\/a> key-keeper (\u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b).<\/p>\n<\/li>\n<\/ul>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 kubeadm. \u041c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u044d\u0442\u0430\u043f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 key-keeper, kubeconfig \u0438 static pod manifests \u0432 fraimctl. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u044d\u0442\u0430\u043f \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0443\u0437\u043b\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f kubeadm \u0438 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p><a href=\"https:\/\/github.com\/fraima\/fraima\" rel=\"noopener noreferrer nofollow\"><strong>Fraimctl<\/strong><\/a><\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u0435\u0435, \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u0430\u0437\u0430 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f kubeadm \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043e\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>fraimctl.conf<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">- apiVersion: fraima.io\/v1alpha   kind: Containerd   spec:      service:       extraArgs:         # This document provides the description of the CRI plugin configuration.          # The CRI plugin config is part of the containerd config         # Default: \/etc\/containerd\/config.toml         config: \/etc\/kubernetes\/containerd\/config.toml      configuration:       extraArgs:         version: 2         plugins:           io.containerd.grpc.v1.cri:             containerd:               runtimes:                 runc:                   # Runtime v2 introduces a first class shim API for runtime authors to integrate with containerd.                    # The shim API is minimal and scoped to the execution lifecycle of a container.                   runtime_type: \"io.containerd.runc.v2\"                   options:                     # While containerd and Kubernetes use the legacy cgroupfs driver for managing cgroups by default,                      # it is recommended to use the systemd driver on systemd-based hosts for compliance of the \"single-writer\" rule of cgroups.                      # To configure containerd to use the systemd driver, set the following option:                     SystemdCgroup: true      downloading:       - name: containerd         src: https:\/\/github.com\/containerd\/containerd\/releases\/download\/v1.6.6\/containerd-1.6.6-linux-amd64.tar.gz         checkSum:           src: https:\/\/github.com\/containerd\/containerd\/releases\/download\/v1.6.6\/containerd-1.6.6-linux-amd64.tar.gz.sha256sum           type: \"sha256\"         path: \/usr\/bin\/         owner: root:root         permission: 0645         unzip:           status: true           files:              - bin\/containerd             - bin\/containerd-shim             - bin\/containerd-shim-runc-v1             - bin\/containerd-shim-runc-v2             - bin\/containerd-stress             - bin\/ctr        - name: runc         src: https:\/\/github.com\/opencontainers\/runc\/releases\/download\/v1.1.3\/runc.amd64         path: \/usr\/bin\/         owner: root:root         permission: 0645      starting:       - systemctl enable containerd       - systemctl start containerd <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0442\u0430\u0434\u0438\u0438:<\/p>\n<ul>\n<li>\n<p><strong>downloading<\/strong>  (\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043a\u0430\u0445.)<\/p>\n<\/li>\n<li>\n<p><strong>service<\/strong> (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0443\u0436\u0431\u0443 systemd, \u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 extraArgs \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u00a0\u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.)<\/p>\n<\/li>\n<li>\n<p><strong>configuration<\/strong>  (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f\u00a0\u0441\u043b\u0443\u0436\u0431\u044b systemd, \u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 extraArgs \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u00a0\u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.)<\/p>\n<\/li>\n<li>\n<p><strong>starting<\/strong> (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u044b\u0445 \u0442\u0440\u0435\u0445 \u044d\u0442\u0430\u043f\u043e\u0432.)<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0430\u043f<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-387643","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/387643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=387643"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/387643\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=387643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=387643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=387643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}