{"id":461221,"date":"2025-05-27T21:02:04","date_gmt":"2025-05-27T21:02:04","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=461221"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=461221","title":{"rendered":"<span>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 CAPY<\/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 decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/986\/598\/f8e\/986598f8ec4a8fab8c283379c971e5da.jpg\" width=\"780\" height=\"440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/986\/598\/f8e\/986598f8ec4a8fab8c283379c971e5da.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/986\/598\/f8e\/986598f8ec4a8fab8c283379c971e5da.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442,\u00a0\u0425\u0430\u0431\u0440! \u042f \u0414\u0430\u043d\u0438\u043b \u0422\u0440\u0435\u0449\u0435\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 T-\u0411\u0430\u043d\u043a\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Spirit Compute, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 runtime-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Cluster API Provider Yandex (CAPY). \u041c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 Yandex Cloud.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Management Cluster \u0438 Workload Cluster \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0418\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e \u043a \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0443 \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442 \u0432\u0441\u0435, \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c\u043e\u0439!\u00a0<\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u0432\u0432\u0435\u0434\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f.\u00a0<\/p>\n<p><strong>Management Cluster (\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440)<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes: \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0412 Management Cluster \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/cluster-api.sigs.k8s.io\/\">Cluster API (CAPI)<\/a><strong> <\/strong>\u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u0438 on-premise. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b CAPI, \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e <a href=\"https:\/\/cluster-api.sigs.k8s.io\/\">\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/a><\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/yandex-cloud\/cluster-api-provider-yandex\">Cluster-api-provider-yandex (CAPY)<\/a> \u2014 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <a href=\"https:\/\/yandex.cloud\/\">Yandex Cloud.<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Workload Cluster (\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440)<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430, workloads). \u0417\u0430 \u0432\u0435\u0441\u044c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b workload cluster \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 CAPI-\/CAPY-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ed1\/95c\/a77\/ed195ca77a34f6e622f93b2fc465952c.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b CAPY \u0432 Yandex Cloud\" title=\"\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b CAPY \u0432 Yandex Cloud\" width=\"796\" height=\"465\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ed1\/95c\/a77\/ed195ca77a34f6e622f93b2fc465952c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ed1\/95c\/a77\/ed195ca77a34f6e622f93b2fc465952c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b CAPY \u0432 Yandex Cloud<\/figcaption><\/div>\n<\/figure>\n<h2>\u0417\u0430\u0447\u0435\u043c \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAPI. \u0418 \u043c\u044b \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 open-source-\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f Yandex Cloud, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u043a\u0430\u043a \u0432 on-premise \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u041c\u044b \u0441\u0442\u0440\u0435\u043c\u0438\u043c\u0441\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c vendor lock, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 open-source, \u0447\u0442\u043e\u0431\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c.<\/p>\n<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c CAPI \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u044b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d infrastructure provider \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0447\u0443\u0436\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\u00a0<\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0434\u0435\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0440\u043e\u0434\u0435 deckhouse, \u0447\u0442\u043e\u0431\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0443\u0436\u0435\u043d \u00ab\u0435\u0449\u0435 \u0432\u0447\u0435\u0440\u0430\u00bb. \u041d\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3f1\/1bf\/3b8\/3f11bf3b8d21969324c4d8311db0571f.png\" alt=\"\u041a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (CAPY), \u0438 \u043a\u0430\u043a \u2014 \u043f\u043e\u0441\u043b\u0435\" title=\"\u041a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (CAPY), \u0438 \u043a\u0430\u043a \u2014 \u043f\u043e\u0441\u043b\u0435\" width=\"1600\" height=\"585\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/3f1\/1bf\/3b8\/3f11bf3b8d21969324c4d8311db0571f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3f1\/1bf\/3b8\/3f11bf3b8d21969324c4d8311db0571f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (CAPY), \u0438 \u043a\u0430\u043a \u2014 \u043f\u043e\u0441\u043b\u0435<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435<\/h2>\n<p>\u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/go.dev\/doc\/install\">Go<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 1.22.0 \u0438 \u0432\u044b\u0448\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/#kubectl\">Kubectl<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 1.11.3 \u0438 \u0432\u044b\u0448\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/cluster-api.sigs.k8s.io\/user\/quick-start#install-clusterctl\">Clusterctl<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 1.5.0 \u0438 \u0432\u044b\u0448\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/yandex.cloud\/ru\/docs\/cli\/\">YC<\/a> \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b:<\/p>\n<pre><code class=\"bash\">$ COMMAND<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 YC:\u00a0<\/p>\n<pre><code class=\"bash\">$ curl -sSL https:\/\/storage.yandexcloud.net\/yandexcloud-yc\/install.sh | bash $ yc init yc init Welcome! This command will take you through the configuration process. Please go to https:\/\/oauth.yandex.ru\/authorize?response_type= in order to obtain OAuth token.  Please enter OAuth token: TOKEN You have one cloud available: 'cloud-daniltreshchev' (id = b1gbhh2a1pmra4btp1um). It is going to be used by default. Please choose folder to use:  [1] default (id = b1gn632om9rumce9tabc)  [2] Create a new folder Please enter your numeric choice: 1 Your current folder has been set to 'default' (id = b1gn632om9rumce9tabc). Do you want to configure a default Compute zone? [Y\/n] Y Which zone do you want to use as a profile default?  [1] ru-central1-a  [2] ru-central1-b  [3] ru-central1-d  [4] Don't set default zone Please enter your numeric choice: 4<\/code><\/pre>\n<p><strong>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.\u00a0<\/strong><\/p>\n<p>1. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Yandex Cloud. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b.<\/p>\n<pre><code class=\"bash\">$ yc iam service-account create --name capy-service-account --description \"service account for CAPY\"<\/code><\/pre>\n<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u0440\u043e\u043b\u0438 compute.editor \u0438 alb.editor \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.<\/p>\n<pre><code class=\"bash\">$ yc iam service-account list +----------------------+----------------------+--------+---------------------+-----------------------+ |      ID         |     NAME       | LABELS | CREATED AT   | LAST AUTHENTICATED AT | +----------------------+----------------------+--------+---------------------+-----------------------+ | aje6gad4ev79dfms8i6h | capy-service-account |       | 2025-02-18 20:27:17 |                    | +----------------------+----------------------+--------+---------------------+-----------------------+    $ yc resource-manager folder add-access-binding default \\ --role compute.editor \\ --subject serviceAccount:aje6gad4ev79dfms8i6h   $ yc resource-manager folder add-access-binding default \\ --role alb.editor \\ --subject serviceAccount:aje6gad4ev79dfms8i6h <\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON.<\/p>\n<pre><code class=\"bash\">$ yc iam key create --service-account-name capy-service-account -o capy-sa-key.json<\/code><\/pre>\n<p>2. \u0415\u0441\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0435\u0449\u0435 \u043d\u0435\u0442 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Virtual Private Cloud, <a href=\"https:\/\/yandex.cloud\/ru\/docs\/vpc\/operations\/network-create\">\u0441\u043e\u0437\u0434\u0430\u0435\u043c<\/a> \u0435\u0435 \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0442\u044c default, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u043b\u0430\u043a\u0430.<\/p>\n<p>3. \u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 Virtual Private Cloud \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u044d\u0442\u0443 \u0433\u0440\u0443\u043f\u043f\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u043e\u0440\u0442\u043e\u0432<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0422\u0438\u043f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u00a0<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TCP<\/p>\n<\/td>\n<td>\n<p align=\"left\">0-65535<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0413\u0440\u0443\u043f\u043f\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">Balancer<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Any<\/p>\n<\/td>\n<td>\n<p align=\"left\">8443<\/p>\n<\/td>\n<td>\n<p align=\"left\">CIDR<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0.0.0\/0<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043e\u0441\u0442\u0443\u043f \u043a Kubernetes API<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<pre><code class=\"bash\">$ yc vpc security-group list +----------------------+---------------------------------+--------------------------------+----------------------+ |      ID      |          NAME           |      DESCRIPTION       |  NETWORK-ID  | +----------------------+---------------------------------+--------------------------------+----------------------+ | enpjob28k16saao6ooum | default-sg-enpe888420gefk9d6r47 | Default security group for     | enpe888420gefk9d6r47 | |                  |                             | network                    |                  | +----------------------+---------------------------------+--------------------------------+----------------------+ $ yc vpc security-group update-rules --id enpjob28k16saao6ooum --add-rule description=\"\u0414\u043e\u0441\u0442\u0443\u043f \u043a Kubernetes API\",direction=ingress,port=8443,protocol=any,v4-cidrs=0.0.0.0\/0 \\  --add-rule description=\"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c\",direction=ingress,from-port=0,to-port=65535,protocol=tcp,predefined=loadbalancer_healthchecks   id: enppv4bf655np8p7gjm4 folder_id: b1gsflehga67etlh2ibf created_at: \"2025-02-23T02:01:09Z\" name: default-sg-enps0m3n749aelfdh5sc description: Default security group for network network_id: enps0m3n749aelfdh5sc status: ACTIVE rules:   - id: enpsv7m2tsd5alnhcl77     direction: INGRESS     protocol_name: ANY     protocol_number: \"-1\"     cidr_blocks:       v4_cidr_blocks:         - 0.0.0.0\/0   - id: enpc3fob9g4i4dcu6op1     direction: EGRESS     protocol_name: ANY     protocol_number: \"-1\"     cidr_blocks:       v4_cidr_blocks:         - 0.0.0.0\/0   - id: enp54dgl0k880j8gkdf6     description: \u0414\u043e\u0441\u0442\u0443\u043f \u043a Kubernetes API     direction: INGRESS     ports:       from_port: \"8443\"       to_port: \"8443\"     protocol_name: ANY     protocol_number: \"-1\"     cidr_blocks:       v4_cidr_blocks:         - 0.0.0.0\/0   - id: enpnqmfppbfn6u7oqbsg     description: \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c     direction: INGRESS     ports:       to_port: \"65535\"     protocol_name: TCP     protocol_number: \"6\"     predefined_target: loadbalancer_healthchecks default_for_network: true<\/code><\/pre>\n<p>4. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 workload-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 IP-\u0430\u0434\u0440\u0435\u0441\u0443. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 jumphost \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0438 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0430 jumphost kubectl.<\/p>\n<pre><code class=\"bash\">$ yc compute instance create \\    --name jumphost \\    --zone ru-central1-b \\    --network-interface subnet-name=default-ru-central1-b,nat-ip-version=ipv4 \\    --create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2004-lts \\    --ssh-key ~\/.ssh\/id_rsa.pub $ yc compute instance list +----------------------+----------------+---------------+---------+--------------+------------- |      ID         |  NAME      |ZONE ID    | STATUS  | EXTERNAL IP  | INTERNAL IP  +----------------------+----------------+---------------+---------+--------------+------------- | epd2et0u39bn48g30qtf | jumphost       | ru-central1-b | RUNNING | 84.252.139.3 | 10.129.0.21  +----------------------+----------------+---------------+---------+--------------+------------- $ ssh yc-user@84.252.139.3<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>SSH User \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 yc-user, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 username \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0441 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e jumphost`\u0430, \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">$ (jumohost) COMMAND<\/code><\/pre>\n<p>5. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0433\u0440\u0443\u043f\u043f\u0443 \u0443\u0437\u043b\u043e\u0432. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Cluster API \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ yc iam service-account create k8s-cluster-management-sa done (1s) id: ajegobpbgfiq42c3cl6m folder_id: b1gn632om9rumce9tabc created_at: \"2025-02-18T21:11:37.936353688Z\" name: k8s-cluster-management-sa   $ yc resource-manager folder add-access-binding default \\ --role editor \\ --subject serviceAccount:ajegobpbgfiq42c3cl6m   $ yc resource-manager folder add-access-binding default \\ --role container-registry.images.puller \\ --subject serviceAccount:ajegobpbgfiq42c3cl6m   $ yc resource-manager folder add-access-binding default \\ --role vpc.publicAdmin \\ --subject serviceAccount:ajegobpbgfiq42c3cl6m   $ yc managed-kubernetes cluster create \\   --name capy-management-cluster \\   --network-name default \\   --zone ru-central1-b \\   --subnet-name default-ru-central1-b \\   --public-ip \\   --release-channel regular \\   --version 1.31 \\   --service-account-name k8s-cluster-management-sa \\   --node-service-account-name k8s-cluster-management-sa   $ yc managed-kubernetes node-group create \\   --cluster-name capy-management-cluster \\   --fixed-size 1<\/code><\/pre>\n<p>6. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u043b\u044f kubectl \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 Kubernetes.<\/p>\n<pre><code class=\"bash\">$ yc managed-kubernetes cluster list +----------------------+-------------------------+---------------------+---------+---------+------------------------+---------------------+ |      ID      |      NAME       | CREATED AT  | HEALTH  | STATUS  |   EXTERNAL ENDPOINT|  INTERNAL ENDPOINT  | +----------------------+-------------------------+---------------------+---------+---------+------------------------+---------------------+ | catrpi1s5kq9pib1ltii | capy-management-cluster | 2025-02-14 03:01:24 | HEALTHY | RUNNING | https:\/\/158.160.167.10 | https:\/\/10.130.0.32 | +----------------------+-------------------------+---------------------+---------+---------+------------------------+---------------------+   $ yc managed-kubernetes cluster get-credentials --id catrpi1s5kq9pib1ltii --external     Context 'yc-capy-management-cluster' was added as default to kubeconfig '\/Users\/username\/.kube\/config'. Check connection to cluster using 'kubectl cluster-info --kubeconfig \/Users\/username\/.kube\/config'.   Note, that authentication depends on 'yc' and its config profile 'default'. To access clusters using the Kubernetes API, please use Kubernetes Service Account.   $ kubectl cluster-info Kubernetes control plane is running at https:\/\/51.250.107.4 CoreDNS is running at https:\/\/51.250.107.4\/api\/v1\/namespaces\/kube-system\/services\/kube-dns:dns\/proxy   To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.   $ kubectl get nodes NAME                    STATUS   ROLESAGE   VERSION cl13s99dfd2q0u1jkrg0-yrap   Ready&lt;none&gt;   16m   v1.31.2<\/code><\/pre>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 CAPI-\/CAPY-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h2>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 CAPI- \u0438 CAPY-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 Yandex Cloud.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c CAPI- \u0438 CAPY-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0443. \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <code>cluster-api-provider-yandex<\/code> \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c:<\/p>\n<pre><code class=\"bash\">$ git clone https:\/\/github.com\/yandex-cloud\/cluster-api-provider-yandex.git $ cd cluster-api-provider-yandex<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 CAPI-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:\u00a0<\/p>\n<pre><code class=\"bash\">$ clusterctl init Fetching providers Installing cert-manager version=\"v1.16.2\" Waiting for cert-manager to be available... Installing provider=\"cluster-api\" version=\"v1.9.5\" targetNamespace=\"capi-system\" Installing provider=\"bootstrap-kubeadm\" version=\"v1.9.5\" targetNamespace=\"capi-kubeadm-bootstrap-system\" Installing provider=\"control-plane-kubeadm\" version=\"v1.9.5\" targetNamespace=\"capi-kubeadm-control-plane-system\" Your management cluster has been initialized successfully!<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 CustomResourceDefinitions \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430: \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b Kubernetes \u043f\u043e\u043d\u0438\u043c\u0430\u043b, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 CAPY\/CAPI:<\/p>\n<pre><code class=\"bash\">$ make install<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 Yandex Cloud, \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 CAPY:<\/p>\n<pre><code class=\"bash\">$ kubectl create namespace capy-system<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0435\u043a\u0440\u0435\u0442 \u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 Yandex Cloud, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b CAPY \u043c\u043e\u0433\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Yandex Cloud \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">$ kubectl create secret generic yc-sa-key \\  \u00a0 --from-file=key=&lt;\u043f\u0443\u0442\u044c_\u043a_\u0444\u0430\u0439\u043b\u0443_\u0441_\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c_\u043a\u043b\u044e\u0447\u043e\u043c&gt; \\  \u00a0 --namespace capy-system<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c CAPY:<\/p>\n<pre><code class=\"bash\">$ make deploy<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b:<\/p>\n<pre><code class=\"bash\">$ kubectl get pods -A NAMESPACE                       NAME                                                        READY   STATUSRESTARTS   AGE capi-kubeadm-bootstrap-system   capi-kubeadm-bootstrap-controller-manager-67dc888b6d-9tqv5      1\/1     Running   0          15s capi-kubeadm-control-plane-system   capi-kubeadm-control-plane-controller-manager-c497bb7df-zqfwl   1\/1     Running   0          13s capi-system                     capi-controller-manager-66986b964b-ng7cm                        1\/1     Running   0          18s cert-manager                    cert-manager-74b56b6655-tttgm                                   1\/1     Running   0          42s cert-manager                    cert-manager-cainjector-55d94dc4cc-c5szh                        1\/1     Running   0          43s cert-manager                    cert-manager-webhook-564f647c66-r5qbf                           1\/1     Running   0          42s kube-system                     coredns-6c58946d99-hbjwf                                        1\/1     Running   0          5m14s kube-system                     ip-masq-agent-5b6tf                                             1\/1     Running   0          3m2s kube-system                     kube-dns-autoscaler-8574ff8cd7-8dmfk                            1\/1     Running   0          5m10s kube-system                     kube-proxy-8m7ct                                                1\/1     Running   0          3m2s kube-system                     metrics-server-7f749774cd-wpm7n                                 2\/2     Running   0          2m53s kube-system                     npd-v0.8.0-pzhcq                                                1\/1     Running   0          3m2s kube-system                     yc-disk-csi-node-v2-r5gwm                                       6\/6     Running   0          3m2s<\/code><\/pre>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 workload-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e workload-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Cluster API: \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0441\u044e \u043d\u0443\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 Yandex Cloud \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 Kubernetes.<\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c <a href=\"https:\/\/yandex.cloud\/ru\/docs\/overview\/concepts\/geo-scope\">\u0437\u043e\u043d\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u0423 \u043d\u0430\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0437\u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 ru-central1-b, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e.\u00a0<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c NAT \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u0437 workload-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442:<\/p>\n<pre><code class=\"bash\">$ yc vpc gateway create \\    --name gateway   id: enpkq1s3bfif04ur9fea folder_id: b1gsflehga67etlh2ibf created_at: \"2025-02-23T02:44:51Z\" name: gateway shared_egress_gateway: {}   $ yc vpc route-table create \\    --name=test-route-table \\    --network-name=default \\    --route destination=0.0.0.0\/0,gateway-id=enpkq1r8j59f8liic1c7<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 Yandex Cloud \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 CAPY \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0437 fd8a3kknu25826s8hbq3. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e <a href=\"https:\/\/github.com\/yandex-cloud\/cluster-api-provider-yandex?tab=readme-ov-file#%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D1%8C%D1%82%D0%B5-%D0%BE%D0%B1%D1%80%D0%B0%D0%B7-%D0%BE%D1%81-%D0%B4%D0%BB%D1%8F-%D1%83%D0%B7%D0%BB%D0%BE%D0%B2-%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0\">\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.<\/a><\/p>\n<pre><code class=\"bash\">export YANDEX_CONTROL_PLANE_MACHINE_IMAGE_ID=fd8a3kknu25826s8hbq3<\/code><\/pre>\n<pre><code class=\"bash\">$ yc resource-manager folder list +----------------------+---------+--------+--------+ |      ID         |  NAME   | LABELS | STATUS | +----------------------+---------+--------+--------+ | b1gn632om9rumce9tabc | default |      | ACTIVE | +----------------------+---------+--------+--------+ $ export YANDEX_FOLDER_ID=b1gn632om9rumce9tabc<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 default, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 ID.<\/p>\n<pre><code class=\"bash\">$ yc vpc network list +----------------------+---------+ |      ID            |  NAME   | +----------------------+---------+ | enpe888420gefk9d6r47 | default | +----------------------+---------+ $ export YANDEX_NETWORK_ID=enpe888420gefk9d6r47<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0442\u044c, \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 default, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 ID.<\/p>\n<pre><code class=\"bash\">$ yc vpc subnet list +----------------------+-----------------------------------------------------------+----------------------+----------------------+---------------+-----------------+ |      ID         |                       NAME                           |  NETWORK ID    |ROUTE TABLE ID     | ZONE       |  RANGE     | +----------------------+-----------------------------------------------------------+----------------------+----------------------+---------------+-----------------+ | e2lqmecfk68jek7ibbtd | default-ru-central1-b                                    | enpe888420gefk9d6r47 |                   | ru-central1-b | [10.129.0.0\/24] | | e9b7dr33rs111b14miu5 | default-ru-central1-a                                    | enpe888420gefk9d6r47 |                   | ru-central1-a | [10.128.0.0\/24] | | e9bjngd1uqlra97c5liv | k8s-cluster-catrpi1s5kq9pib1ltii-service-cidr-reservation | enpe888420gefk9d6r47 |                   | ru-central1-a | [10.96.0.0\/16]  | | e9bmc08qhj61su95e6pk | k8s-cluster-catrpi1s5kq9pib1ltii-pod-cidr-reservation    | enpe888420gefk9d6r47 |                   | ru-central1-a | [10.112.0.0\/16] | | fl8f5nrktjd0tqdkbe9k | default-ru-central1-d                                    | enpe888420gefk9d6r47 |                   | ru-central1-d | [10.130.0.0\/24] | +----------------------+-----------------------------------------------------------+----------------------+----------------------+---------------+-----------------+ $ export YANDEX_SUBNET_ID=e2lqmecfk68jek7ibbtd<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0441\u0435\u0442\u044c, \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 ru-central1-b, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 ID. \u0421\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">clusterctl generate cluster &lt;\u0438\u043c\u044f_\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430&gt; \\ --from templates\/cluster-template.yaml &gt; \/tmp\/capy-cluster.yaml<\/code><\/pre>\n<p>\u041d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f capy-workload-cluster. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a Application Load Balancer c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c IP-\u0430\u0434\u0440\u0435\u0441\u043e\u043c.\u00a0<\/p>\n<p>\u041f\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0443 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u0442\u0440\u0438 \u0443\u0437\u043b\u0430 \u0441 Control Plane. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0443\u0437\u043b\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">clusterctl generate cluster &lt;\u0438\u043c\u044f_\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430&gt; \\   --worker-machine-count &lt;\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e_\u0443\u0437\u043b\u043e\u0432_\u0434\u043b\u044f_\u0440\u0430\u0431\u043e\u0447\u0435\u0439_\u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438&gt; \\   --from templates\/cluster-template.yaml &gt; \/tmp\/capy-cluster.yaml<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440:<\/p>\n<pre><code class=\"bash\">$ kubectl apply -f \/tmp\/capy-cluster.yaml<\/code><\/pre>\n<p>\u0417\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c <a href=\"https:\/\/console.yandex.cloud\/\">\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/a> Yandex Cloud \u0438\u043b\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043f\u043e\u0434\u0430 capy-controller-manager:<\/p>\n<pre><code class=\"bash\">$ kubectl logs &lt;\u0438\u043c\u044f_\u043f\u043e\u0434\u0430_\u0441_capy-controller-manager&gt; \\   --namespace capy-system \\   --follow<\/code><\/pre>\n<h2>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443<\/h2>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a. \u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c kubeconfig \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 cluster-admin, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c (CAPI).<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Cloud Controller Manager (CCM) \u0438 Container Network Interface (CNI), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438.<\/p>\n<p>\u0420\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432 \u0441\u0435\u043a\u0440\u0435\u0442\u0435 <code>&lt;\u0438\u043c\u044f_\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430&gt;-kubeconfig<\/code>.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0435\u043a\u0440\u0435\u0442\u0430:<\/p>\n<pre><code class=\"bash\">$ kubectl get secret &lt;\u0438\u043c\u044f_\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430&gt;-kubeconfig \\  --output yaml | yq -r '.data.value' | base64 \\ \u00a0 --decode &gt; capy-cluster-config<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u043d\u0430 jumphost, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0443\u044e\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0444\u0430\u0439\u043b \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f <code>kubectl<\/code>:<\/p>\n<pre><code class=\"bash\">$ scp &lt;\u043f\u0443\u0442\u044c_\u043a_\u0444\u0430\u0439\u043b\u0443_capy-cluster-config_\u043d\u0430_\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c_\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435&gt; \\  \u00a0\u00a0\u00a0\u00a0&lt;\u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&gt;@&lt;\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439_IP-\u0430\u0434\u0440\u0435\u0441_jumphost&gt;:\/home\/&lt;\u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&gt;\/.kube\/config<\/code><\/pre>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 jumphost \u043f\u043e SSH, \u0430 \u043f\u043e\u0442\u043e\u043c \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443:<\/p>\n<pre><code class=\"bash\">$ (jumphost) kubectl cluster-info Kubernetes control plane is running at https:\/\/10.129.0.100:8443 CoreDNS is running at https:\/\/10.129.0.100:8443\/api\/v1\/namespaces\/kube-system\/services\/kube-dns:dns\/proxy   To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.<\/code><\/pre>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 CNI \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h2>\n<p>CNI \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0434\u0430\u043c\u0438.\u00a0 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Cilium:<\/p>\n<pre><code class=\"bash\">$ (jumphost) wget https:\/\/github.com\/cilium\/cilium-cli\/releases\/download\/v0.16.24\/cilium-linux-amd64.tar.gz $ (jumphost) tar xf cilium-linux-amd64.tar.gz $ (jumphost) .\/cilium install<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u0432\u044f\u0437\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c. \u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435:<\/p>\n<pre><code class=\"bash\">$ (jumphost) kubectl get pods -A NAMESPACE NAME                                                            READY   STATUSRESTARTS  AGE kube-system   cilium-2xbm8                                                        1\/1     Running   0             8m9s kube-system   cilium-envoy-6wzgh                                                  1\/1     Running   0             8m9s kube-system   cilium-operator-7658c5585d-4skfr                                    1\/1     Running   0             8m8s kube-system   coredns-7c65d6cfc9-5cqlv                                            1\/1     Running   0             2d16h kube-system   coredns-7c65d6cfc9-whl5d                                            1\/1     Running   0             2d16h kube-system   etcd-capy-workload-cluster-control-plane-mc5st                      1\/1     Running   1 (71m ago)   2d16h kube-system   kube-apiserver-capy-workload-cluster-control-plane-mc5st            1\/1     Running   2 (71m ago)   2d16h kube-system   kube-controller-manager-capy-workload-cluster-control-plane-mc5st   1\/1     Running   1 (71m ago)   2d16h kube-system   kube-proxy-vzmhq                                                    1\/1     Running   1 (71m ago)   2d16h kube-system   kube-scheduler-capy-workload-cluster-control-plane-mc5st            1\/1     Running   1 (71m ago)   2d16h kube-system   yandex-cloud-controller-manager-6pd7x                               1\/1     Running   0             7s<\/code><\/pre>\n<p>\u041d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u0432\u044f\u0437\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 CNI \u0438 CCM \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u0447\u043d\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ clusterctl describe cluster capy-workload-cluster NAME                                                                               READY  SEVERITY  REASON                SINCE  MESSAGE Cluster\/capy-workload-cluster                                                      False  Warning   ScalingUp             112s   Scaling up control plane to 3 replicas (actual 2) \u251c\u2500ClusterInfrastructure - YandexCluster\/capy-workload-cluster \u2514\u2500ControlPlane - KubeadmControlPlane\/capy-workload-cluster-control-plane           False  Warning   ScalingUp             112s   Scaling up control plane to 3 replicas (actual 2)   \u251c\u2500Machine\/capy-workload-cluster-control-plane-mc5st                              True                                   2d16h   \u2502 \u2514\u2500MachineInfrastructure - YandexMachine\/capy-workload-cluster-control-plane-mc5st   \u2514\u2500Machine\/capy-workload-cluster-control-plane-qw9hz                              False  Info  WaitingForInfrastructure  112s   1 of 2 completed     \u2514\u2500MachineInfrastructure - YandexMachine\/capy-workload-cluster-control-plane-qw9hz<\/code><\/pre>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0421\u0421\u041c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h2>\n<p>\u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 Yandex Cloud \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Cloud Controller Manager, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/deckhouse\/yandex-cloud-controller-manager\/tree\/master\">Kubernetes Cloud Controller Manager for Yandex Cloud.<\/a><\/p>\n<pre><code class=\"bash\">$ (jumphost) cat &lt;&lt;EOF | kubectl apply -f - apiVersion: v1 kind: Secret metadata:   labels:     k8s-app: yandex-cloud-controller-manager   name: yandex-cloud   namespace: kube-system stringData:   service-account-json: |     &lt;\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 json \u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430&gt;   folder-id: \"b1gn632om9rumce9tabc\" EOF<\/code><\/pre>\n<p>folder-id \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 YANDEX_FOLDER_ID:<\/p>\n<pre><code class=\"bash\">$ (jumphost) wget https:\/\/raw.githubusercontent.com\/deckhouse\/yandex-cloud-controller-manager\/refs\/heads\/master\/manifests\/yandex-cloud-controller-manager.yaml $ (jumphost) wget https:\/\/raw.githubusercontent.com\/deckhouse\/yandex-cloud-controller-manager\/refs\/heads\/master\/manifests\/yandex-cloud-controller-manager-rbac.yaml<\/code><\/pre>\n<p>\u0412 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 yandex-cloud-controller-manager.yaml yaml \u0444\u0430\u0439\u043b \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c env YANDEX_CLUSTER_NAME:<\/p>\n<pre><code class=\"bash\">--- apiVersion: v1 kind: ServiceAccount metadata:   name: cloud-controller-manager   namespace: kube-system --- apiVersion: apps\/v1 kind: DaemonSet metadata:   name: yandex-cloud-controller-manager   labels:     k8s-app: yandex-cloud-controller-manager   namespace: kube-system spec:   selector:     matchLabels:       k8s-app: yandex-cloud-controller-manager   template:     metadata:       labels:         k8s-app: yandex-cloud-controller-manager     spec:       hostNetwork: true       dnsPolicy: Default       serviceAccountName: cloud-controller-manager       nodeSelector:         # The CCM will only run on masters         node-role.kubernetes.io\/control-plane: \"\"       tolerations:         # this taint is set on all nodes when an external CCM is used         # so we should tolerate it to schedule our CCM         - key: \"node.cloudprovider.kubernetes.io\/uninitialized\"           value: \"true\"           effect: \"NoSchedule\"         # CCM should be able to run on masters         - key: \"node-role.kubernetes.io\/control-plane\"           effect: \"NoSchedule\"         - key: \"CriticalAddonsOnly\"           operator: \"Exists\"       containers:         - image: registry.deckhouse.io\/yandex-cloud-controller-manager\/yandex-cloud-controller-manager:v0.21.3           name: yandex-cloud-controller-manager           command:             - \/bin\/yandex-cloud-controller-manager             - --cloud-provider=yandex             - --v=3           resources:             requests:               cpu: 100m               memory: 50Mi           env:             - name: YANDEX_CLOUD_SERVICE_ACCOUNT_JSON               valueFrom:                 secretKeyRef:                   name: yandex-cloud                   key: service-account-json             - name: YANDEX_CLOUD_FOLDER_ID               valueFrom:                 secretKeyRef:                   name: yandex-cloud                   key: folder-id             - name: YANDEX_CLUSTER_NAME               value: capy-workload-cluster<\/code><\/pre>\n<h2>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c<\/h2>\n<p>Workload Cluster \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p><strong>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f CAPY. <\/strong>\u0420\u0430\u043d\u044c\u0448\u0435 \u0432 Yandex Cloud \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Cluster API. \u0422\u0435\u043f\u0435\u0440\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f CAPY \u043c\u043e\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u2014 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e YAML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u0438 kubectl apply.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f clusterctl \u0438 CRD, \u043c\u043e\u0436\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 CI\/CD-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0413\u0438\u0431\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u043e\u0434\u044b \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u044d\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 Kubernetes-\u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MachineHealthCheck (MHC) \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u043d\u043e\u0434\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f CAPY \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0432 Yandex Cloud \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e \u0441 Cluster API, \u0447\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>\u041d\u0430 \u043f\u0440\u043e\u0449\u0430\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u043a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b.<\/p>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 workload-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ kubectl delete -f \/tmp\/capy-cluster.yaml<\/code><\/pre>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 CAPY \u0438\u0437 management-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ make uninstall $ make undeploy<\/code><\/pre>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e jumphost:<\/p>\n<pre><code class=\"bash\">$ yc compute instance delete jumphost<\/code><\/pre>\n<p>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 management-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ yc managed-kubernetes cluster delete capy-management-cluster<\/code><\/pre>\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\/913098\/\"> https:\/\/habr.com\/ru\/articles\/913098\/<\/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>\u041f\u0440\u0438\u0432\u0435\u0442,\u00a0\u0425\u0430\u0431\u0440! \u042f \u0414\u0430\u043d\u0438\u043b \u0422\u0440\u0435\u0449\u0435\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 T-\u0411\u0430\u043d\u043a\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Spirit Compute, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 runtime-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Cluster API Provider Yandex (CAPY). \u041c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 Yandex Cloud.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Management Cluster \u0438 Workload Cluster \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0418\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e \u043a \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0443 \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442 \u0432\u0441\u0435, \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c\u043e\u0439!\u00a0<\/p>\n<h2>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f<\/h2>\n<p>\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u0432\u0432\u0435\u0434\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f.\u00a0<\/p>\n<p><strong>Management Cluster (\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440)<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes: \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0412 Management Cluster \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/cluster-api.sigs.k8s.io\/\">Cluster API (CAPI)<\/a><strong> <\/strong>\u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u0438 on-premise. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b CAPI, \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e <a href=\"https:\/\/cluster-api.sigs.k8s.io\/\">\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/a><\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/yandex-cloud\/cluster-api-provider-yandex\">Cluster-api-provider-yandex (CAPY)<\/a> \u2014 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <a href=\"https:\/\/yandex.cloud\/\">Yandex Cloud.<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Workload Cluster (\u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440)<\/strong> \u2014 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430, workloads). \u0417\u0430 \u0432\u0435\u0441\u044c \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b workload cluster \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 CAPI-\/CAPY-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b CAPY \u0432 Yandex Cloud<\/figcaption><\/div>\n<\/figure>\n<h2>\u0417\u0430\u0447\u0435\u043c \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CAPI. \u0418 \u043c\u044b \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 open-source-\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f Yandex Cloud, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u043a\u0430\u043a \u0432 on-premise \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u041c\u044b \u0441\u0442\u0440\u0435\u043c\u0438\u043c\u0441\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c vendor lock, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 open-source, \u0447\u0442\u043e\u0431\u044b \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c.<\/p>\n<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c CAPI \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u044b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d infrastructure provider \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u0447\u0443\u0436\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\u00a0<\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0434\u0435\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0440\u043e\u0434\u0435 deckhouse, \u0447\u0442\u043e\u0431\u044b \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0443\u0436\u0435\u043d \u00ab\u0435\u0449\u0435 \u0432\u0447\u0435\u0440\u0430\u00bb. \u041d\u043e \u0432\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (CAPY), \u0438 \u043a\u0430\u043a \u2014 \u043f\u043e\u0441\u043b\u0435<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0440\u0430\u0431\u043e\u0442\u0435<\/h2>\n<p>\u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/go.dev\/doc\/install\">Go<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 1.22.0 \u0438 \u0432\u044b\u0448\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/#kubectl\">Kubectl<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 1.11.3 \u0438 \u0432\u044b\u0448\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/cluster-api.sigs.k8s.io\/user\/quick-start#install-clusterctl\">Clusterctl<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 1.5.0 \u0438 \u0432\u044b\u0448\u0435;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/yandex.cloud\/ru\/docs\/cli\/\">YC<\/a> \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b:<\/p>\n<pre><code class=\"bash\">$ COMMAND<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 YC:\u00a0<\/p>\n<pre><code class=\"bash\">$ curl -sSL https:\/\/storage.yandexcloud.net\/yandexcloud-yc\/install.sh | bash $ yc init yc init Welcome! This command will take you through the configuration process. Please go to https:\/\/oauth.yandex.ru\/authorize?response_type= in order to obtain OAuth token.  Please enter OAuth token: TOKEN You have one cloud available: 'cloud-daniltreshchev' (id = b1gbhh2a1pmra4btp1um). It is going to be used by default. Please choose folder to use:  [1] default (id = b1gn632om9rumce9tabc)  [2] Create a new folder Please enter your numeric choice: 1 Your current folder has been set to 'default' (id = b1gn632om9rumce9tabc). Do you want to configure a default Compute zone? [Y\/n] Y Which zone do you want to use as a profile default?  [1] ru-central1-a  [2] ru-central1-b  [3] ru-central1-d  [4] Don't set default zone Please enter your numeric choice: 4<\/code><\/pre>\n<p><strong>\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.\u00a0<\/strong><\/p>\n<p>1. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Yandex Cloud. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b.<\/p>\n<pre><code class=\"bash\">$ yc iam service-account create --name capy-service-account --description \"service account for CAPY\"<\/code><\/pre>\n<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u0440\u043e\u043b\u0438 compute.editor \u0438 alb.editor \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.<\/p>\n<pre><code class=\"bash\">$ yc iam service-account list +----------------------+----------------------+--------+---------------------+-----------------------+ |      ID         |     NAME       | LABELS | CREATED AT   | LAST AUTHENTICATED AT | +----------------------+----------------------+--------+---------------------+-----------------------+ | aje6gad4ev79dfms8i6h | capy-service-account |       | 2025-02-18 20:27:17 |                    | +----------------------+----------------------+--------+---------------------+-----------------------+    $ yc resource-manager folder add-access-binding default \\ --role compute.editor \\ --subject serviceAccount:aje6gad4ev79dfms8i6h   $ yc resource-manager folder add-access-binding default \\ --role alb.editor \\ --subject serviceAccount:aje6gad4ev79dfms8i6h <\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON.<\/p>\n<pre><code class=\"bash\">$ yc iam key create --service-account-name capy-service-account -o capy-sa-key.json<\/code><\/pre>\n<p>2. \u0415\u0441\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0435\u0449\u0435 \u043d\u0435\u0442 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Virtual Private Cloud, <a href=\"https:\/\/yandex.cloud\/ru\/docs\/vpc\/operations\/network-create\">\u0441\u043e\u0437\u0434\u0430\u0435\u043c<\/a> \u0435\u0435 \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0442\u044c default, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u043b\u0430\u043a\u0430.<\/p>\n<p>3. \u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 Virtual Private Cloud \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u044d\u0442\u0443 \u0433\u0440\u0443\u043f\u043f\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u043e\u0440\u0442\u043e\u0432<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0422\u0438\u043f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u00a0<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TCP<\/p>\n<\/td>\n<td>\n<p align=\"left\">0-65535<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0413\u0440\u0443\u043f\u043f\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">Balancer<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Any<\/p>\n<\/td>\n<td>\n<p align=\"left\">8443<\/p>\n<\/td>\n<td>\n<p align=\"left\">CIDR<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0.0.0\/0<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043e\u0441\u0442\u0443\u043f \u043a Kubernetes API<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<pre><code class=\"bash\">$ yc vpc security-group list +----------------------+---------------------------------+--------------------------------+----------------------+ |      ID      |          NAME           |      DESCRIPTION       |  NETWORK-ID  | +----------------------+---------------------------------+--------------------------------+----------------------+ | enpjob28k16saao6ooum | default-sg-enpe888420gefk9d6r47 | Default security group for     | enpe888420gefk9d6r47 | |                  |                             | network                    |                  | +----------------------+---------------------------------+--------------------------------+----------------------+ $ yc vpc security-group update-rules --id enpjob28k16saao6ooum --add-rule description=\"\u0414\u043e\u0441\u0442\u0443\u043f \u043a Kubernetes API\",direction=ingress,port=8443,protocol=any,v4-cidrs=0.0.0.0\/0 \\  --add-rule description=\"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c\",direction=ingress,from-port=0,to-port=65535,protocol=tcp,predefined=loadbalancer_healthchecks   id: enppv4bf655np8p7gjm4 folder_id: b1gsflehga67etlh2ibf created_at: \"2025-02-23T02:01:09Z\" name: default-sg-enps0m3n749aelfdh5sc description: Default security group for network network_id: enps0m3n749aelfdh5sc status: ACTIVE rules:   - id: enpsv7m2tsd5alnhcl77     direction: INGRESS     protocol_name: ANY     protocol_number: \"-1\"     cidr_blocks:       v4_cidr_blocks:         - 0.0.0.0\/0   - id: enpc3fob9g4i4dcu6op1     direction: EGRESS     protocol_name: ANY     protocol_number: \"-1\"     cidr_blocks:       v4_cidr_blocks:         - 0.0.0.0\/0   - id: enp54dgl0k880j8gkdf6     description: \u0414\u043e\u0441\u0442\u0443\u043f \u043a Kubernetes API     direction: INGRESS     ports:       from_port: \"8443\"       to_port: \"8443\"     protocol_name: ANY     protocol_number: \"-1\"     cidr_blocks:       v4_cidr_blocks:         - 0.0.0.0\/0   - id: enpnqmfppbfn6u7oqbsg     description: \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f L7-\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c     direction: INGRESS     ports:       to_port: \"65535\"     protocol_name: TCP     protocol_number: \"6\"     predefined_target: loadbalancer_healthchecks default_for_network: true<\/code><\/pre>\n<p>4. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 workload-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 IP-\u0430\u0434\u0440\u0435\u0441\u0443. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 jumphost \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0438 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0430 jumphost kubectl.<\/p>\n<pre><code class=\"bash\">$ yc compute instance create \\    --name jumphost \\    --zone ru-central1-b \\    --network-interface subnet-name=default-ru-central1-b,nat-ip-version=ipv4 \\    --create-boot-disk image-folder-id=standard-images,image-family=ubuntu-2004-lts \\    --ssh-key ~\/.ssh\/id_rsa.pub $ yc compute instance list +----------------------+----------------+---------------+---------+--------------+------------- |      ID         |  NAME      |ZONE ID    | STATUS  | EXTERNAL IP  | INTERNAL IP  +----------------------+----------------+---------------+---------+--------------+------------- | epd2et0u39bn48g30qtf | jumphost       | ru-central1-b | RUNNING | 84.252.139.3 | 10.129.0.21  +----------------------+----------------+---------------+---------+--------------+------------- $ ssh yc-user@84.252.139.3<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>SSH User \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 yc-user, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 username \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0441 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e jumphost`\u0430, \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">$ (jumohost) COMMAND<\/code><\/pre>\n<p>5. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u0433\u0440\u0443\u043f\u043f\u0443 \u0443\u0437\u043b\u043e\u0432. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Cluster API \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ yc iam service-account create k8s-cluster-management-sa done (1s) id: ajegobpbgfiq42c3cl6m folder_id: b1gn632om9rumce9tabc created_at: \"2025-02-18T21:11:37.936353688Z\" name: k8s-cluster-management-sa   $ yc resource-manager folder add-access-binding default \\ --role editor \\ --subject serviceAccount:ajegobpbgfiq42c3cl6m   $ yc resource-manager folder add-access-binding default \\ --role container-registry.images.puller \\ --subject serviceAccount:ajegobpbgfiq42c3cl6m   $ yc resource-manager folder add-access-binding default \\ --role vpc.publicAdmin \\ --subject serviceAccount:ajegobpbgfiq42c3cl6m   $ yc managed-kubernetes cluster create \\   --name capy-management-cluster \\   --network-name default \\   --zone ru-central1-b \\   --subnet-name default-ru-central1-b \\   --public-ip \\   --release-channel regular \\   --version 1.31 \\   --service-account-name k8s-cluster-management-sa \\   --node-service-account-name k8s-cluster-management-sa   $ yc managed-kubernetes node-group create \\   --cluster-name capy-management-cluster \\   --fixed-size 1<\/code><\/pre>\n<p>6. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u043b\u044f kubectl \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 Kubernetes.<\/p>\n<pre><code class=\"bash\">$ yc managed-kubernetes cluster list<\/code><\/pre>\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-461221","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/461221","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=461221"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/461221\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=461221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=461221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=461221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}