{"id":500148,"date":"2026-10-25T08:44:37","date_gmt":"2026-10-25T05:44:37","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500148"},"modified":"2026-10-25T08:44:37","modified_gmt":"2026-10-25T05:44:37","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500148","title":{"rendered":"Kubernetes \u043a\u0430\u043a \u044f\u0434\u0440\u043e Linux, \u0447\u0430\u0441\u0442\u044c 2: kubepkg, \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430 \u043b\u044f Debian"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0423 Linux \u0435\u0441\u0442\u044c apt, dnf \u0438 pacman, \u0438 \u043d\u0438\u043a\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u0438\u0442, \u043a\u0430\u043a \u0436\u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0438\u0445. \u0423 Kubernetes \u0437\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e. \u0415\u0441\u0442\u044c Helm, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0434\u0438\u043d \u0447\u0430\u0440\u0442, \u0435\u0441\u0442\u044c Argo CD \u0438 Flux, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u043b\u043e \u0441\u0438\u043d\u043a\u0430\u044e\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 Git, \u043d\u043e \u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u043b \u0431\u044b, \u0447\u0442\u043e cert-manager \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e KubeVirt \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0447\u0442\u043e CRD, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u0438\u043c \u0440\u0435\u043b\u0438\u0437\u043e\u043c, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430 \u0441\u043d\u0435\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c. \u041a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u043d\u0430 Kubernetes, \u043f\u0438\u0448\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 \u0441\u0430\u043c, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/a5\/5c\/b1\/a55cb1849ba2c9bcc892b27a1ff3057e.png\" width=\"2400\" height=\"1260\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/a5\/5c\/b1\/a55cb1849ba2c9bcc892b27a1ff3057e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/a5\/5c\/b1\/a55cb1849ba2c9bcc892b27a1ff3057e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f kubepkg, \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 Helm-\u0447\u0430\u0440\u0442\u044b \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438 Debian, \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0438 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430. \u0412 <a href=\"https:\/\/habr.com\/ru\/companies\/aenix\/articles\/1092792\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0430\u0442\u0435\u0439<\/a> \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b, \u0437\u0430\u0447\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0442\u0435\u044f\u043b, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0447\u0438\u0442\u0430\u044e \u0432\u0430\u0436\u043d\u044b\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a K8s \u043a\u0430\u043a \u043a \u044f\u0434\u0440\u0443 Linux \u0438 \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043c\u043e\u0439 \u0442\u0443\u043b\u043a\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Kubernetes. \u0412 \u043d\u0435\u0439 \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u043b \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e  \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f K8s, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a kubepkg \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u0438 \u0447\u0442\u043e \u043e\u043d \u0443\u043c\u0435\u0435\u0442. \u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441 \u0436\u0438\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u0430 Cozystack.<\/p>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043c\u043d\u043e\u044e. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b Aenix \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0431\u044b \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438:)<\/p>\n<h2>\u041e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u0441\u044f kubepkg<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/20\/03\/bb\/2003bbc8490b6d67419c5ed40202ea8a.png\" alt=\"\u0418\u0441\u0442\u043e\u0440\u0438\u044f kubepkg\" width=\"3518\" height=\"608\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/20\/03\/bb\/2003bbc8490b6d67419c5ed40202ea8a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/20\/03\/bb\/2003bbc8490b6d67419c5ed40202ea8a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0441\u0442\u043e\u0440\u0438\u044f kubepkg<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0432\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c, \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0442\u044c. \u041c\u044d\u0442\u0442 \u0414\u0430\u0433\u0433\u0430\u043d \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043c\u043e\u044e \u0434\u0430\u0432\u043d\u044e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0431\u0435\u0434\u0430 Kubernetes \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438, \u0430 \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 KubePkg. \u0418 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435.<\/p>\n<p>\u0421\u0430\u043c \u043a\u043e\u0434 \u044f \u043f\u0438\u0441\u0430\u043b \u043d\u0435 \u0441 \u043d\u0443\u043b\u044f (\u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0441\u0430\u043c), \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0440\u0435\u0448\u0438\u043b \u0432\u0437\u044f\u0442\u044c cozypkg, \u0442\u0443\u043b\u0437\u0443 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Cozystack: \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u0430 \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438 \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439. cozypkg \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0435\u0448\u0430\u043b \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0434\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0431\u044b\u043b \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u043a \u043d\u0435\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u044f \u0432\u0437\u044f\u043b \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u043d\u0430 \u043d\u0451\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0438 \u043e\u0442 \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u0432 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c \u043a\u0443\u0431-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0442\u0430\u043a \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u0443\u044e \u043a\u0443\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0435\u0440\u0441\u0438\u0438 1.3, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c API \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 GitHub-\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/kuberoot-dev\">kuberoot-dev<\/a>, \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 kuberoot, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d \u0438 \u0434\u0435\u043b\u0430\u043b\u0441\u044f.<\/p>\n<h2>\u0427\u0435\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 Helm<\/h2>\n<p>Helm \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. Helm \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438: \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043d\u0443\u0436\u0435\u043d cert-manager, Helm \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442, \u043f\u043e\u043a\u0430 \u043f\u043e\u0434 \u043d\u0435 \u0443\u043f\u0430\u0434\u0451\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u0440\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 CRD. \u041e\u043d \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a\u0430\u043a\u043e\u0439 API \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Prometheus Operator, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043f\u0438\u0445\u043d\u0443\u043b \u0435\u0433\u043e \u0442\u0443\u0434\u0430 \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439. \u041e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435. \u0418 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043d\u0435\u043d\u0438\u044f \u043e CRD, \u043a\u0440\u043e\u043c\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u00ab\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c\u00bb, \u0445\u043e\u0442\u044f \u0438\u043c\u0435\u043d\u043d\u043e CRD \u0432 Kubernetes \u0441\u0430\u043c\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0432\u0435\u0449\u044c: \u043e\u043d\u0438 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0438\u0439 \u0438\u0445 \u0440\u0435\u043b\u0438\u0437, \u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 CRD \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430.<\/p>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u0434\u044b\u0440\u044b \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443. \u0423 Deckhouse \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438, \u0443 OpenShift \u0435\u0441\u0442\u044c OLM, \u0443 Rancher \u0441\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0437\u044f\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435. kubepkg \u0437\u0430\u0434\u0443\u043c\u0430\u043d \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b. \u041e\u043d \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0438 Helm, \u043d\u0438 Argo CD, \u043d\u0438 Flux, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0438\u0445 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c\u0438.<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 apt \u0434\u043b\u044f Kubernetes \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u0441\u044f<\/h2>\n<p>\u0418\u0434\u0435\u044f \u043d\u0435 \u043d\u043e\u0432\u0430, \u0438 \u044f \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439, \u043a\u043e\u043c\u0443 \u043e\u043d\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443. \u0421\u0430\u043c Helm \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 2015 \u0433\u043e\u0434\u0443 \u043f\u043e\u0434 \u0434\u0435\u0432\u0438\u0437\u043e\u043c \u00ab\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f Kubernetes\u00bb, \u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0438\u043c \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0432\u0435\u0434\u044c \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0438 \u0432\u0435\u0440\u0441\u0438\u0438. \u041d\u043e apt \u0446\u0435\u043d\u0435\u043d \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0430\u0440\u0445\u0438\u0432\u0430, \u0430 \u0437\u043d\u0430\u043d\u0438\u0435\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u044b \u0436\u0438\u0432\u0443\u0442 \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f Helm \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b. \u0417\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 \u0435\u0433\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e.<\/p>\n<p>CoreOS \u0435\u0449\u0451 \u0432 2016 \u0433\u043e\u0434\u0443 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 KPM, \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0440\u0435\u0435\u0441\u0442\u0440\u043e\u043c, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0440\u043e\u0441\u043b\u0438 App Registry \u0438 \u0440\u0430\u0437\u0434\u0435\u043b Applications \u0432 Quay. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a CoreOS \u043a\u0443\u043f\u0438\u043b Red Hat, KPM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438, \u0430 \u0432 2022 \u0433\u043e\u0434\u0443 <a href=\"http:\/\/Quay.io\">Quay.io<\/a> \u0443\u0431\u0440\u0430\u043b \u0438 \u0441\u0430\u043c\u0438 Applications. \u0412 2018 \u0433\u043e\u0434\u0443 Microsoft, Docker \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 CNAB, \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u0430\u043d\u0434\u043b\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u043e \u0435\u0433\u043e \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Duffle \u0434\u0430\u0432\u043d\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435, \u0430 \u0438\u0437 \u0436\u0438\u0432\u044b\u0445 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 Porter, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u0441\u043b\u044b\u0448\u0430\u043b. \u0412 D2iQ \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 KUDO, \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0435\u0433\u043e \u0440\u0435\u043b\u0438\u0437 \u0432\u044b\u0448\u0435\u043b \u0432\u0435\u0441\u043d\u043e\u0439 2021 \u0433\u043e\u0434\u0430. Glasskube \u0432 2024 \u0433\u043e\u0434\u0443 \u0433\u0440\u043e\u043c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043b \u0441\u0435\u0431\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f Kubernetes \u0438 \u0441\u043e\u0431\u0440\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0437\u0432\u0451\u0437\u0434 \u043d\u0430 GitHub, \u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0430\u0440\u0445\u0438\u0432\u0435. \u0414\u0430\u0436\u0435 Kubeapps, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043b \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u043f\u043e\u0432\u0435\u0440\u0445 Helm-\u0447\u0430\u0440\u0442\u043e\u0432, \u0432 \u0430\u0432\u0433\u0443\u0441\u0442\u0435 2025 \u0433\u043e\u0434\u0430 \u0443\u0448\u0451\u043b \u0432 \u0430\u0440\u0445\u0438\u0432, \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0444\u043e\u0440\u043a SAP.<\/p>\n<p>\u0412\u044b\u0436\u0438\u043b\u0438 \u0442\u0435, \u0443 \u043a\u043e\u0433\u043e \u0437\u0430 \u0441\u043f\u0438\u043d\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430. OLM \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 OpenShift, \u0430 kapp-controller \u0438\u0437 Carvel, \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u0435, \u0432\u044b\u0440\u043e\u0441 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Tanzu. \u041d\u043e \u043e\u0431\u0430 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0432\u043e\u0438\u0445 \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432, \u0438 \u0437\u0430 \u0438\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0438\u043c\u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u043d\u0430, \u0438 \u043e\u043d\u0430 \u043d\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u041d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043b \u0432 \u043d\u0435\u0433\u043e \u0441\u043e\u0444\u0442. \u0410\u0432\u0442\u043e\u0440\u044b cert-manager, Cilium \u0438\u043b\u0438 KubeVirt \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0444\u043e\u0440\u043c\u0430\u0442 \u0440\u0430\u0434\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043a\u0430 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0445 \u0438\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0436\u0438\u0432\u0451\u0442 \u0440\u043e\u0432\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 \u043f\u0435\u0440\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u0442\u0430\u0451\u0442 \u0438\u043b\u0438 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043b\u0430\u043d\u044b, \u0432\u0441\u0451 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. Helm-\u0447\u0430\u0440\u0442 \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0430\u043b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438: \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f Kubernetes \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0435\u0433\u043e \u0441\u0430\u043c, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435, \u0438 \u043d\u0430 Artifact Hub \u0442\u0430\u043a\u0438\u0445 \u0447\u0430\u0440\u0442\u043e\u0432 \u0442\u044b\u0441\u044f\u0447\u0438.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e kubepkg. \u041f\u0430\u043a\u0435\u0442 \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 Helm-\u0447\u0430\u0440\u0442, \u0430 \u0432\u0441\u0451, \u0447\u0435\u0433\u043e Helm \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043b\u0435\u0436\u0438\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438. \u042f \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0448\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c, \u0440\u0435\u0446\u0435\u043f\u0442 \u0431\u0435\u0440\u0451\u0442 \u0440\u0435\u043b\u0438\u0437 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 \u0435\u0441\u043b\u0438 \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u0447\u0430\u0440\u0442 \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442, \u043a\u0430\u043a KubeVirt, \u0440\u0435\u0446\u0435\u043f\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0435\u0433\u043e \u0438\u0437 \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432, \u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0447\u0430\u0440\u0442. \u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u043b\u0435\u0436\u0438\u0442 \u0432 OCI-\u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437 kubepkg, \u0445\u043e\u0442\u044c \u0441\u0430\u043c\u0438\u043c Helm, \u0445\u043e\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Flux \u0438\u043b\u0438 Argo CD, \u0442\u0430\u043a \u0447\u0442\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 kubepkg \u0437\u0430\u0432\u0442\u0440\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442, \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438. \u0426\u0435\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 Helm \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0438 \u0432\u0441\u0451 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435, \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f CRD, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0447\u0430\u0440\u0442\u0430, \u0430 \u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e. \u041a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e, \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u0430\u043a\u0435\u0442<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/53\/35\/de\/5335deef36ff028eae27b78bea936094.png\" alt=\"\u0418\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u0430\u043a\u0435\u0442\" width=\"2134\" height=\"1390\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/53\/35\/de\/5335deef36ff028eae27b78bea936094.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/53\/35\/de\/5335deef36ff028eae27b78bea936094.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u0430\u043a\u0435\u0442<\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u0447\u0430\u0440\u0442\u043e\u043c, \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435, \u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0440\u0442 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 KubeVirt: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0430 \u043f\u043e\u0442\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441 KubeVirt, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u0439, \u0438 kubepkg \u0441\u0442\u0430\u0432\u0438\u0442 \u0438\u0445 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<\/p>\n<p>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 cert-manager \u043d\u0435 \u043d\u0438\u0436\u0435 1.20 \u0438 \u043d\u0435 \u0432\u044b\u0448\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0436\u043e\u0440\u043d\u043e\u0439. \u0410 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 API <a href=\"http:\/\/monitoring.coreos.com\/v1\"><code>monitoring.coreos.com\/v1<\/code><\/a>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0451 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u043b\u0438\u0431\u043e \u0441\u0430\u043c\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 API \u0432 \u043d\u0451\u043c \u0443\u0436\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e Prometheus Operator, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0442\u0440\u0438 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u0442\u043e\u0436\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 kubepkg \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437.<\/p>\n<p>\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 Helm-\u0447\u0430\u0440\u0442\u0430\u043c\u0438 \u0432 OCI-\u0440\u0435\u0435\u0441\u0442\u0440\u0435. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435, \u0447\u0442\u043e kubepkg \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u044d\u0442\u0438 \u0447\u0430\u0440\u0442\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043c Helm, Flux, Argo CD \u0438\u043b\u0438 werf (\u0410\u043b\u0435\u043a\u0441\u0435\u0439, \u0418\u043b\u044c\u044f, \u0418\u0432\u0430\u043d, \u0414\u043c\u0438\u0442\u0440\u0438\u0439, \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0442!).<\/p>\n<h2>\u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/1e\/06\/53\/1e0653a1b8b12856dd07691535d332cc.png\" alt=\"\u041e\u0431\u044a\u0435\u043a\u0442\u044b kubepkg \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435\" width=\"2155\" height=\"704\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/1e\/06\/53\/1e0653a1b8b12856dd07691535d332cc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/1e\/06\/53\/1e0653a1b8b12856dd07691535d332cc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041e\u0431\u044a\u0435\u043a\u0442\u044b kubepkg \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0443 kubepkg \u043d\u0435\u0442, \u0432\u0441\u0451 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0436\u0438\u0432\u0451\u0442 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0438 \u0438\u0445 \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0442\u044b\u0440\u0435.<\/p>\n<p>Repository \u044d\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430\u0434\u0440\u0435\u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438 \u043a\u043b\u044e\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442. Package \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435: \u0438\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432\u0430\u0448\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0447\u0430\u0440\u0442\u043e\u0432. PackageSource \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0431\u0440\u0430\u043b \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432. \u0410 PackageRevision \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0445\u0435\u0448\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0447\u0430\u0440\u0442\u0430 \u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0412\u044b \u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e Package, \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440. \u041e\u043d \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 CRD, \u0438 \u0435\u0441\u043b\u0438 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u0432\u0438\u0437\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c, \u0447\u0435\u0440\u0435\u0437 Helm SDK, \u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0442\u044c \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 Nelm \u0438\u0437 werf, Flux \u0438\u043b\u0438 Argo CD.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e<\/h2>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c Helm-\u0447\u0430\u0440\u0442\u043e\u043c, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 <a href=\"https:\/\/github.com\/kuberoot-dev\/kubepkg-recipes\">kubepkg-recipes<\/a>, \u0432 \u043d\u0451\u043c \u0441\u0435\u0439\u0447\u0430\u0441 49 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043e\u0442 cert-manager \u0438 Cilium \u0434\u043e vLLM \u0438 Milvus.<\/p>\n<pre><code class=\"bash\">helm install kubepkg oci:\/\/ghcr.io\/kuberoot-dev\/charts\/kubepkg \\  --namespace kubepkg-system --create-namespace --waitcurl -fsSLO https:\/\/raw.githubusercontent.com\/kuberoot-dev\/kubepkg-recipes\/main\/keys\/index.pubkubepkg repo add main https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml --public-key index.pub<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u044d\u0442\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg plan<\/code> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d5\/85\/db\/d585db8c63b6edd5f162a99a18aa82b8.png\" alt=\"kubepkg plan\" width=\"1556\" height=\"448\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d5\/85\/db\/d585db8c63b6edd5f162a99a18aa82b8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d5\/85\/db\/d585db8c63b6edd5f162a99a18aa82b8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>kubepkg plan<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c virtualization \u044d\u0442\u043e \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442. \u0421\u0430\u043c \u043e\u043d \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 KubeVirt \u0438 CDI \u0432 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445. \u041f\u043b\u0430\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043a\u0430\u043a\u0438\u043c\u0438 CRD \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u0442\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0435\u0433\u043e \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c. \u0412 CI \u0442\u0443 \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0443\u0434\u043e\u0431\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u0432\u0438\u0434\u0435\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e diff \u0432 YAML.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043b\u0430\u043d \u0438 \u043f\u0438\u0448\u0435\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Package \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/e3\/12\/66\/e31266387639ea6974abff4a05f8a85d.png\" alt=\"kubepkg install\" width=\"1866\" height=\"520\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/e3\/12\/66\/e31266387639ea6974abff4a05f8a85d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/e3\/12\/66\/e31266387639ea6974abff4a05f8a85d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>kubepkg install<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430, \u0431\u0443\u0434\u044c \u0442\u043e \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u0432\u0438\u0437\u0438\u044e. \u0421\u0442\u0430\u0440\u044b\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u0432\u0430\u044e\u0442\u0441\u044f, \u0438 \u043a \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f. \u041e\u0442\u043a\u0430\u0442 \u0442\u043e\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u0432\u0438\u0437\u0438\u044e \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0441\u0442\u0430\u0440\u043e\u0439, \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0442\u0451\u0442 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/d8\/35\/b3\/d835b3ea59b3db869ba649e526e488a7.png\" alt=\"kubepkg rollback\" width=\"1162\" height=\"376\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/d8\/35\/b3\/d835b3ea59b3db869ba649e526e488a7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/d8\/35\/b3\/d835b3ea59b3db869ba649e526e488a7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>kubepkg rollback<\/figcaption><\/div>\n<\/figure>\n<h2>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/78\/ef\/91\/78ef913f63132000893435339911cbd1.png\" alt=\"\u041a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\" width=\"3155\" height=\"547\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/78\/ef\/91\/78ef913f63132000893435339911cbd1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/78\/ef\/91\/78ef913f63132000893435339911cbd1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0432\u0437\u044f\u043b \u0443 Debian, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442\u044b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0430 \u043d\u0435 \u0430\u0432\u0442\u043e\u0440 \u0441\u043e\u0444\u0442\u0430. Debian \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 deb-\u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430, \u0438 kubepkg \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435. \u041d\u0435\u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0430\u043f\u0441\u0442\u0440\u0438\u043c: \u0433\u043e\u0442\u043e\u0432\u044b\u0439 Helm-\u0447\u0430\u0440\u0442, \u043d\u0430\u0431\u043e\u0440 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u0438\u043b\u0438 \u0430\u0440\u0445\u0438\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0433\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u043b\u0435\u0436\u0438\u0442 \u0447\u0430\u0440\u0442. \u041c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u0438\u0448\u0435\u0442 \u0440\u0435\u0446\u0435\u043f\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d \u043f\u043e \u0445\u0435\u0448\u0443, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0447\u0430\u0440\u0442: \u043a\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0442\u0447\u0438 \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442\u044c.<\/p>\n<p>\u0420\u0435\u0446\u0435\u043f\u0442 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f: \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg init<\/code> \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0430\u043f\u0441\u0442\u0440\u0438\u043c, \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442 \u0435\u0433\u043e, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 CRD \u0438 \u043e\u0431\u0440\u0430\u0437\u044b \u0438 \u043f\u0438\u0448\u0435\u0442 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442, \u043f\u043e\u043a\u0430\u0436\u0443 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435.<\/p>\n<p>\u0412\u043e\u0442 \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0440\u0435\u0446\u0435\u043f\u0442\u0430 KubeVirt. \u041e\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432, \u0430 \u043d\u0435 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0447\u0430\u0440\u0442\u0430, \u0438 \u043f\u0430\u0442\u0447 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0436\u0451\u0441\u0442\u043a\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 virt-operator \u043a \u0443\u0437\u043b\u0430\u043c control plane, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445:<\/p>\n<pre><code class=\"yaml\">spec:  version: 1.9.0          # \u0432\u0435\u0440\u0441\u0438\u044f \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430  build: 4                # \u043d\u0430\u0448\u0430 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438  sources:    operator:      url: https:\/\/github.com\/kubevirt\/kubevirt\/releases\/download\/v1.9.0\/kubevirt-operator.yaml      sha256: f11307caafc3c23ffedf9887d8beb5a4419e2694da242fa68f63d1ec820de2e0  charts:    kubevirt-operator:      from: [operator]    # \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0447\u0430\u0440\u0442      exclude: [{kind: Namespace}]      patches:        - kind: Deployment          name: virt-operator          merge: {...}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg build<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0446\u0435\u043f\u0442 \u0432 \u0447\u0430\u0440\u0442 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435, \u0430 <code>kubepkg repo index<\/code> \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u0438\u043d\u0434\u0435\u043a\u0441 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e. \u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0446\u0435\u043f\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0431\u0430\u0439\u0442\u0430. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043a \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0445\u043e\u0434\u0438\u0442: \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u043b\u0435\u0436\u0438\u0442 \u0432 \u0432\u0430\u0448\u0435\u043c \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043e \u043f\u043e \u0445\u0435\u0448\u0443 \u0432 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0435. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u043e\u0432\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>\u0418\u043d\u0434\u0435\u043a\u0441 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 GitHub Pages, \u0432 S3 \u0438\u043b\u0438 \u043d\u0430 nginx. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0442\u0430\u043a \u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d: \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0440\u0436 \u0432 main \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043b\u0430\u0434\u0451\u0442 \u0447\u0430\u0440\u0442\u044b \u0432 GitHub Container Registry \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 Pages.<\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440: \u043e\u0442 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 \u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/h3>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u0412\u043e\u0437\u044c\u043c\u0451\u043c podinfo, \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Helm-\u0447\u0430\u0440\u0442, \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0420\u0435\u0435\u0441\u0442\u0440 \u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044b \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u043e \u0441 GitHub Container Registry \u0438 Pages \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435.<\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0441 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 \u0440\u0435\u0446\u0435\u043f\u0442\u0430. kubepkg \u0441\u043a\u0430\u0447\u0430\u043b \u0447\u0430\u0440\u0442, \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u0435\u0433\u043e \u043f\u043e \u0445\u0435\u0448\u0443 \u0438, \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u0441\u0430\u043c \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043b \u0435\u0433\u043e \u0438 \u0432\u044b\u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0437\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u0442\u043e\u0436\u0435 \u0441 \u0445\u0435\u0448\u0430\u043c\u0438:<\/p>\n<pre><code>$ kubepkg init podinfo --chart oci:\/\/ghcr.io\/stefanprodan\/charts\/podinfo@6.9.2wrote podinfo\/recipe.yaml; review it, then run: kubepkg validate podinfo$ cat podinfo\/recipe.yamlapiVersion: kubepkg.dev\/v1kind: Recipemetadata:  name: podinfo  annotations:    kubepkg.dev\/description: \"Podinfo Helm chart for Kubernetes\"    kubepkg.dev\/home: https:\/\/github.com\/stefanprodan\/podinfospec:  version: 6.9.2  build: 1  sources:    upstream:      chart:        repository: oci:\/\/ghcr.io\/stefanprodan\/charts        name: podinfo        version: \"6.9.2\"        digest: sha256:8eacab4365d917867e855bfb4729afdbff28bead3fd9dc01923ab50b26aa4380  charts:    podinfo:      from: [upstream]      # values: {}                   # the package's defaults over the upstream ones  package:    provides: [podinfo]    crds: []    images:   # what the charts run, pinned; add images an operator deploys on its own      - docker.io\/curlimages\/curl:7.69.0@sha256:d845b6dd655da0e9ae0623065a35185f9b4438aa717fd1c9a3b89843e8b4ff26      - docker.io\/giantswarm\/tiny-tools:latest@sha256:8ccea5962d6e24cf90ac726ff8af6ad25ba8dc6a691ad47cb455e3dfcd3f4c22      - docker.io\/stefanprodan\/grpc_health_probe:v0.3.0@sha256:0d7bd9c77ef35c3f0432142b5689ae460331a4fecfa469590fe11f3d575669e4      - ghcr.io\/stefanprodan\/podinfo:6.9.2@sha256:cab90e04829cdae73199a8402882a4e3ccaf251b8a0d50bdefede0ab3f6371e7    rollback:      safe: false   # true once rolling back to the previous version is known not to lose data    variants:      - name: default        components:          - name: podinfo            path: podinfo            install: {namespace: podinfo}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0427\u0435\u0440\u043d\u043e\u0432\u0438\u043a \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e, \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u043d\u0451\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0417\u0434\u0435\u0441\u044c \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043e\u0431\u044a\u044f\u0432\u0438\u043b \u043e\u0442\u043a\u0430\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e podinfo \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0441\u043d\u043e\u0432\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0441\u0431\u043e\u0440\u043a\u0430 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0440\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>$ grep -n -E 'values:|safe:' podinfo\/recipe.yaml21:      values: {replicaCount: 2}31:      safe: true    # stateless: the previous build can always run again$ kubepkg validate podinfopodinfo: ok$ kubepkg build podinfo --registry oci:\/\/demo.demo.svc:5000\/demo --plain-http -o distpublished oci:\/\/demo.demo.svc:5000\/demo\/podinfo, wrote dist\/podinfo-6.9.2-1.yaml$ kubepkg repo keygen demowrote demo.key (private) and demo.pub$ kubepkg repo index dist --plain-http --sign-key demo.key -o \/site\/demo\/index.yamlsigned \/site\/demo\/index.yaml.sigwrote \/site\/demo\/index.yaml: 1 packages, 1 versions$ ls \/site\/demoindex.yamlindex.yaml.sig<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u043b\u0435\u0436\u0438\u0442 \u0447\u0430\u0440\u0442, \u0430 \u0440\u044f\u0434\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code>$ kubepkg repo add demo http:\/\/demo.demo.svc:8000\/demo\/index.yaml --public-key demo.pubrepository demo added$ kubepkg search podinfoNAME     LATEST  REPOSITORY  DESCRIPTIONpodinfo  6.9.2   demo        Podinfo Helm chart for Kubernetes$ kubepkg plan podinfoACTION   PACKAGE  FROM  TO             REPOSITORY  WHYinstall  podinfo  -     6.9.2 build 1  demo        requested$ kubepkg install podinfo --yesACTION   PACKAGE  FROM  TO             REPOSITORY  WHYinstall  podinfo  -     6.9.2 build 1  demo        requested1 packages requested; follow them with \"list\"$ kubepkg listNAME                VERSION  REVISION  READY  REASONcert-manager        1.21.2   2         True   ReconciliationSucceededkube-state-metrics  2.20.0   1         True   ReconciliationSucceededpodinfo             6.9.2    1         True   ReconciliationSucceeded$ kubectl -n podinfo get deploy,podsNAME                      READY   UP-TO-DATE   AVAILABLE   AGEdeployment.apps\/podinfo   2\/2     2            2           10sNAME                          READY   STATUS    RESTARTS   AGEpod\/podinfo-c4fdfd856-7sd7c   1\/1     Running   0          10spod\/podinfo-c4fdfd856-f628c   1\/1     Running   0          10s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0447\u0443\u0436\u043e\u0439 \u0447\u0430\u0440\u0442 \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0443\u0448\u043b\u043e \u0434\u0435\u0441\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434, \u0438 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b.<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u0441\u0451<\/h2>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0442\u043a\u0430\u0442 \u0441\u043d\u0438\u043c\u043a\u0430\u043c\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u044f \u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: \u0441\u043d\u0438\u043c\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0435 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f KubeVirt \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0430 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e API, \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0441\u0442\u0430\u0440\u044b\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u043d\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/8a\/73\/8f\/8a738fcb1e1feb59ce4821482927124b.png\" alt=\"\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0442\u043a\u0430\u0442\u0435\" width=\"1622\" height=\"1027\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/8a\/73\/8f\/8a738fcb1e1feb59ce4821482927124b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/8a\/73\/8f\/8a738fcb1e1feb59ce4821482927124b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0442\u043a\u0430\u0442\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u0430\u0442\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u0440 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0435\u0451 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0430 \u0432\u0435\u0440\u0441\u0438\u044f, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0442\u043a\u0430\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c, \u0432\u0441\u0435 \u0443\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430, kubepkg \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043f\u0435\u0440\u0451\u0434. \u041e\u0442\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0440\u0442\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u0445\u0443\u0436\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e, \u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u0445\u0443\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u00ab\u043e\u0442\u043a\u0443\u0434\u0430\u00bb \u0438 \u00ab\u043a\u0443\u0434\u0430\u00bb.<\/p>\n<h3>\u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0436\u0438\u0432\u0443\u044e<\/h3>\n<p>\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a podinfo, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438. \u0415\u0433\u043e \u0441\u0431\u043e\u0440\u043a\u0430 1 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0442\u043a\u0430\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0436\u0434\u0430\u0442\u044c \u0434\u043e\u043b\u0433\u043e, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043c \u043f\u0430\u043a\u0435\u0442\u0443 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043d\u0435 \u0434\u043e\u043b\u044c\u0448\u0435 \u0434\u0432\u0443\u0445 \u043c\u0438\u043d\u0443\u0442, \u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 \u043f\u043e\u043b\u043c\u0438\u043d\u0443\u0442\u044b. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u043e\u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 podinfo \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u044f 2:<\/p>\n<pre><code>$ kubectl patch package podinfo --type merge -p '{\"spec\":{\"upgrade\":{\"timeout\":\"2m\"}}}'package.kubepkg.dev\/podinfo patched$ kubectl patch repository demo --type merge -p '{\"spec\":{\"interval\":\"30s\"}}'repository.kubepkg.dev\/demo patched<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443. \u0412 \u043d\u0435\u0439 podinfo \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0438\u043b\u0438 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<pre><code>$ grep -n -E 'build:|values:' podinfo\/recipe.yaml10:  build: 221:      values: {replicaCount: 2, faults: {unready: true}}$ kubepkg build podinfo --registry oci:\/\/demo.demo.svc:5000\/demo --plain-http -o distpublished oci:\/\/demo.demo.svc:5000\/demo\/podinfo, wrote dist\/podinfo-6.9.2-2.yaml$ kubepkg repo index dist --plain-http --merge \/site\/demo\/index.yaml --sign-key demo.key -o \/site\/demo\/index.yamlsigned \/site\/demo\/index.yaml.sigwrote \/site\/demo\/index.yaml: 1 packages, 2 versions<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u043c\u0438\u043d\u0443\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0435 \u043d\u043e\u0432\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435. \u041d\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u044b \u0441\u0442\u043e\u044f\u0442 \u043d\u0435\u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438, \u0430 \u043e\u0434\u0438\u043d \u0441\u0442\u0430\u0440\u044b\u0439 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b:<\/p>\n<pre><code>$ kubepkg listNAME            VERSION  REVISION  READY  REASONcdi             1.66.1   5         True   ReconciliationSucceededcert-manager    1.21.2   5         True   ReconciliationSucceededkubevirt        1.9.0    4         True   ReconciliationSucceededpodinfo         6.9.2    2         False  Progressingvirtualization  1.0.0    1         True   ReconciliationSucceeded$ kubectl -n podinfo get podsNAME                       READY   STATUS    RESTARTS   AGEpodinfo-84df66bbb8-bwpkg   0\/1     Running   0          7spodinfo-84df66bbb8-vlcwb   0\/1     Running   0          7spodinfo-c4fdfd856-kjts4    1\/1     Running   0          116s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0432\u0435 \u043c\u0438\u043d\u0443\u0442\u044b \u0441\u043f\u0443\u0441\u0442\u044f \u0441\u0440\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442. \u0421\u0431\u043e\u0440\u043a\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c, \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e\u0442\u043a\u0430\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 kubepkg \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0451 \u0441\u0430\u043c, \u043d\u0435 \u0434\u043e\u0436\u0438\u0434\u0430\u044f\u0441\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u0420\u0435\u0432\u0438\u0437\u0438\u044f 3 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043a\u0430\u043a \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430\u044f \u0441 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439, \u0430 \u0440\u0435\u0432\u0438\u0437\u0438\u044f 4 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 2:<\/p>\n<pre><code>$ kubepkg history podinfoREVISION  VERSION  PHASE       CREATED              NOTE1         6.9.2    Superseded  2026-10-18 08:33:16  2         6.9.2    Superseded  2026-10-18 08:34:34  3         6.9.2    Failed      2026-10-18 08:35:04  component podinfo failed: upgrade podinfo\/podinfo: resource Deployment\/podinfo\/podinfo not ready. status: InProgress, message: Pending termination: 1 context deadline exceeded4         6.9.2    Applied     2026-10-18 08:37:08  restored from 2$ kubectl get package podinfo -o jsonpath='{range .status.conditions[*]}{.type}={.status} {.reason}: {.message}{\"\\n\"}{end}'Ready=False UpgradeRolledBack: revision 3 failed (component podinfo failed: upgrade podinfo\/podinfo: resource Deployment\/podinfo\/podinfo not ready. status: InProgress, message: Pending termination: 1context deadline exceeded), restored revision 2; failed 1 time(s), trying again at 2026-10-18T08:37:35Z, or set kubepkg.dev\/retry to try now$ kubectl get package podinfo -o jsonpath='{.status.retry}{\"\\n\"}'{\"attempts\":1,\"nextAttempt\":\"2026-10-18T08:37:35Z\"}$ kubectl -n podinfo get podsNAME                      READY   STATUS    RESTARTS   AGEpodinfo-c4fdfd856-kdllf   1\/1     Running   0          10spodinfo-c4fdfd856-kjts4   1\/1     Running   0          3m59s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0430\u043a\u0435\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u0433\u043e\u0442\u043e\u0432\u044b\u043c, \u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435, \u043d\u043e \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043d\u043e\u0432\u0435\u0439\u0448\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e, \u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u0433 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c kubepkg \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0438 \u0441\u0430\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0442\u043e \u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 30 \u0441\u0435\u043a\u0443\u043d\u0434, \u0430 \u043f\u043e\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441 \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043f\u0430\u0443\u0437\u043e\u0439, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e 10 \u043c\u0438\u043d\u0443\u0442, \u0438 \u043f\u0438\u0448\u0435\u0442 \u0432 <code>status.retry<\/code>, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0438 \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f. \u0422\u0430\u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442, \u0441\u0430\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0431\u043e\u044f \u0438\u043b\u0438 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 3, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0435\u0451 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u043b\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f <a href=\"http:\/\/kubepkg.dev\/retry\"><code>kubepkg.dev\/retry<\/code><\/a> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443, \u0430 \u043e\u0442\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0434\u0435\u043b\u0430\u043b \u0441\u0430\u043c \u0447\u0435\u0440\u0435\u0437 <code>kubepkg rollback<\/code>, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442. \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u0435\u0449\u0451 \u043d\u0435\u0442. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u043d\u043e\u0432\u0430, \u043e\u0431\u0430 \u0440\u0430\u0437\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u0443 \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0443, \u043e\u0431\u0430 \u0440\u0430\u0437\u0430 \u0432\u0435\u0440\u043d\u0443\u043b \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0436\u0434\u0451\u0442 \u043c\u0438\u043d\u0443\u0442\u0443 \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438:<\/p>\n<pre><code>$ kubepkg history podinfoREVISION  VERSION  PHASE       CREATED              NOTE1         6.9.2    Superseded  2026-10-18 08:33:16  2         6.9.2    Superseded  2026-10-18 08:34:34  3         6.9.2    Failed      2026-10-18 08:35:04  component podinfo failed: upgrade podinfo\/podinfo: resource Deployment\/podinfo\/podinfo not ready. status: InProgress, message: Pending termination: 1 context deadline exceeded4         6.9.2    Superseded  2026-10-18 08:37:08  restored from 25         6.9.2    Failed      2026-10-18 08:37:35  component podinfo failed: upgrade podinfo\/podinfo: resource Deployment\/podinfo\/podinfo not ready. status: InProgress, message: Pending termination: 1 context deadline exceeded6         6.9.2    Applied     2026-10-18 08:39:38  restored from 4$ kubectl get package podinfo -o jsonpath='{.status.retry}{\"\\n\"}'{\"attempts\":2,\"nextAttempt\":\"2026-10-18T08:40:35Z\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u044d\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c. Helm \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0440\u0435\u043b\u0438\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u043c, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u0442\u043e\u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043c Deployment \u0438 StatefulSet. \u0427\u0430\u0440\u0442 KubeVirt \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0434\u0438\u043d \u0440\u0435\u0441\u0443\u0440\u0441 KubeVirt \u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u041f\u0430\u043a\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u0440\u0438 \u043a\u0430\u043a\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043e\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0433\u0434\u0430 \u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 KubeVirt \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 Available, \u0438 \u043f\u043e\u043a\u0430 \u043e\u043d\u043e \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u0430 \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u044f\u0442, \u0436\u0434\u0443\u0442.<\/p>\n<h2>CRD \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u0430<\/h2>\n<p>CRD \u0432 Kubernetes \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430. \u041e\u043d\u0438 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0432\u0435 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u044f\u0434\u043e\u043c, \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0435\u043b\u0438\u0437, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b, \u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 CRD \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0451\u043d. Helm \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u043e \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e: CRD \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 crds \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0412 kubepkg \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 CRD \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c. \u041f\u0430\u043a\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u043c\u0438 CRD \u043e\u043d \u0432\u043b\u0430\u0434\u0435\u0435\u0442, \u0438 \u043f\u043b\u0430\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0434\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u0414\u0432\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043b\u0430\u0434\u0435\u0442\u044c \u043e\u0434\u043d\u0438\u043c CRD, \u0430 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e kubepkg \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 CRD. CRD \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. \u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0435\u0433\u043e CRD \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0438 \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0445, \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c. \u0418 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e kubepkg \u0441\u043b\u0435\u0434\u0438\u0442, \u0447\u0442\u043e\u0431\u044b Helm \u043c\u043e\u043b\u0447\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u043b CRD, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u043f\u0430\u043b\u0438 \u0438\u0437 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0447\u0430\u0440\u0442\u0430.<\/p>\n<h2>\u0414\u043e\u0432\u0435\u0440\u0438\u0435<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/8d\/18\/29\/8d1829e1fe1789c08cb51568d7dc89a6.png\" alt=\"\u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u0434\u043e\u0432\u0435\u0440\u0438\u044f\" width=\"2590\" height=\"622\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/8d\/18\/29\/8d1829e1fe1789c08cb51568d7dc89a6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/8d\/18\/29\/8d1829e1fe1789c08cb51568d7dc89a6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u0434\u043e\u0432\u0435\u0440\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438, \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441\u0430\u043c \u0440\u0435\u0448\u0430\u0435\u0442, \u043a\u043e\u043c\u0443 \u0432\u0435\u0440\u0438\u0442\u044c. \u041d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u043d \u043f\u0440\u0438\u043c\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c. \u0414\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0435\u0441\u0442\u044c \u043a\u043e\u0440\u0435\u043d\u044c \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u043f\u043e \u0441\u0445\u0435\u043c\u0435 TUF, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a\u0438\u043c \u043a\u043b\u044e\u0447\u0430\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u0435\u0440\u0438\u0442 \u0438 \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c. \u041a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0443 \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u0432\u043d\u0435 \u0441\u0435\u0442\u0438, \u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0443\u0436\u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043b\u044e\u0431\u044b\u0435 \u0434\u0432\u0430 \u0438\u0437 \u0442\u0440\u0451\u0445, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0443\u043a\u0440\u0430\u0434\u0435\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442. \u0421\u0430\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0436\u0438\u0432\u0451\u0442 \u0432 CI, \u0438 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u0443\u044e\u0442, \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0442 \u0435\u0433\u043e \u043d\u0430 \u043d\u043e\u0432\u044b\u0439, \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b. \u0423 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0435\u0441\u0442\u044c \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0438 \u044d\u0442\u043e \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u0441\u0443\u043d\u0435\u0442 \u0438\u043c \u0441\u0442\u0430\u0440\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 \u043a\u043e\u0440\u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0440\u0443\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0435\u0451 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0422\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u0438\u0435 \u0443 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0432\u043e\u0432, \u0433\u0434\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u043b\u044e\u0434\u0438.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/7f\/02\/a1\/7f02a1ae2e6a6c9c466f5c856f6f43ae.png\" alt=\"\u041a\u043e\u0440\u0435\u043d\u044c \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043b\u044e\u0447\u0435\u0439\" width=\"1866\" height=\"1240\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/7f\/02\/a1\/7f02a1ae2e6a6c9c466f5c856f6f43ae.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/7f\/02\/a1\/7f02a1ae2e6a6c9c466f5c856f6f43ae.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u0440\u0435\u043d\u044c \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043b\u044e\u0447\u0435\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043d\u0434\u0435\u043a\u0441 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442 \u043f\u043e \u0445\u0435\u0448\u0443 \u0432\u0441\u0451, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u0431\u0440\u0430\u0437\u044b, \u0435\u0433\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0435\u0449\u0451 \u0442\u0440\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg sbom<\/code> \u043f\u0438\u0448\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (SBOM) \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 CycloneDX, \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg scan<\/code> \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 Trivy \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0437\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442\u044b, \u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0430\u043b\u0438\u0442\u044c CI, \u0435\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u0410 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441\u043b\u0435\u0434\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0451\u043d \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u043e\u0441\u044c \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u0438\u043d\u0434\u0435\u043a\u0441.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c. \u0427\u0430\u0440\u0442\u044b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u043e \u0442\u0435\u0433\u0443, \u0430 \u0442\u0435\u0433 \u0432 \u0447\u0443\u0436\u043e\u043c \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u0440\u0430\u0437. Admission webhook \u0432 kubepkg \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a \u0442\u0435\u0433\u0443 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0439 \u0445\u0435\u0448, \u0442\u0430\u043a \u0447\u0442\u043e \u0443\u0437\u043b\u044b \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0437, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441. \u0412 \u0441\u0442\u0440\u043e\u0433\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0431\u0440\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u043d\u0438 \u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. No pasaran!<\/p>\n<pre><code>Error from server: admission webhook \"pods.images.kubepkg.dev\" denied the request: no installed package pins docker.io\/library\/busybox:1.36; namespace cert-manager runs only images packages pin (kubepkg.dev\/image-policy=enforce)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0435\u0431\u0445\u0443\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0441\u0430\u043c. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e: kubepkg \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 cert-manager, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c, \u043a\u0442\u043e cert-manager \u0441\u0442\u0430\u0432\u0438\u0442.<\/p>\n<h2>\u0411\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/74\/a0\/f5\/74a0f584f8a3e72f7ac58795feeedafa.png\" alt=\"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435\" width=\"3243\" height=\"726\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/74\/a0\/f5\/74a0f584f8a3e72f7ac58795feeedafa.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/74\/a0\/f5\/74a0f584f8a3e72f7ac58795feeedafa.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442: \u0433\u043e\u0441\u0441\u0435\u043a\u0442\u043e\u0440, \u0431\u0430\u043d\u043a\u0438, \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0438, \u0441\u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u043a\u0430. \u0414\u043b\u044f \u043d\u0438\u0445 kubepkg \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0431\u0430\u043d\u0434\u043b, \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044f\u043c\u0438, \u0447\u0430\u0440\u0442\u044b \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0432\u0441\u0435\u0445 \u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0437\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 kubepkg \u0432 \u043d\u0451\u043c \u043e\u0442\u0440\u0435\u0437\u0430\u043d \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043c\u0438\u0440\u0430 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 Cilium \u0438 \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u0434\u043d\u044f\u0442\u044b \u0440\u0435\u0435\u0441\u0442\u0440-\u0437\u0435\u0440\u043a\u0430\u043b\u043e \u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430. \u0411\u0430\u043d\u0434\u043b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0441 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c \u0438\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre><code>$ kubepkg bundle create cert-manager kube-state-metrics --repo https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml --public-key index.pub -o platform-2026-10.tarwrote platform-2026-10.tar: 2 packages, 2 charts, 0 package trees, 5 images$ ls -lh platform-2026-10.tar-rw-r--r--. 1 root root 377M Oct 12 03:30 platform-2026-10.tar$ kubepkg bundle inspect platform-2026-10.tarcreated 2026-10-12T03:30:25ZPACKAGE             VERSION         REPOSITORYcert-manager        1.21.2 build 3  mainkube-state-metrics  2.20.0 build 3  mainIMAGE                                                                                                                                  PINNED BY   PACKAGESquay.io\/jetstack\/cert-manager-cainjector:v1.21.2@sha256:c85268c64f2e0e76684bf5fe8906caff34b82523561c6affe0fae3546bd87562               repository  cert-managerquay.io\/jetstack\/cert-manager-controller:v1.21.2@sha256:70f532fd9cfde0b09d55687200942399d89838bc2d5d5b45152eb799a15912b8               repository  cert-managerquay.io\/jetstack\/cert-manager-startupapicheck:v1.21.2@sha256:46e75b6866359ffb5d82624f41e3ed1c70b2994982702ced547ce5edb418a8f5          repository  cert-managerquay.io\/jetstack\/cert-manager-webhook:v1.21.2@sha256:a60e2dac46dbb8a7f3df95c54ce941012f54c2fe022f0ee55aaa1ab40ed957ae                  repository  cert-managerregistry.k8s.io\/kube-state-metrics\/kube-state-metrics:v2.20.0@sha256:42cfe3723a5f058171c627537fb57a3ea0f26e4380fa18555a95cb1a1b4cfc5b  repository  kube-state-metrics2 charts, 0 package trees<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d \u043f\u043e \u0445\u0435\u0448\u0443, \u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441, \u0430 \u043d\u0435 \u0441\u0430\u043c \u0431\u0430\u043d\u0434\u043b. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430. \u0411\u0430\u043d\u0434\u043b\u0443 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d \u0442\u0430\u043a\u043e\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0441\u0430\u043c \u043a \u0432\u0430\u043c \u043f\u0440\u0438\u0448\u0451\u043b. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0441\u0443\u043d\u0435\u043c \u0441\u044e\u0434\u0430 \u0431\u0430\u043d\u0434\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e \u043f\u0443\u0442\u0438 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u043b\u0438 \u043e\u0434\u0438\u043d \u0447\u0430\u0440\u0442, \u0434\u043e\u043f\u0438\u0441\u0430\u0432 \u0432 \u0435\u0433\u043e \u0430\u0440\u0445\u0438\u0432 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442:<\/p>\n<pre><code>$ kubepkg bundle import tampered.tar --public-key index.pub --mirror oci:\/\/demo.demo.svc:5000\/mirror --plain-http --site \/siteerror: the bundle does not check out: chart kube-state-metrics 2.20.0-3 in the bundle has digest sha256:ff78152558d651ae9564bdb4a2ec705d7e234be872e83753398596ff79fda8df, the package pins sha256:2bf8279f5f6195dfb6332dfb8c1251bdcf5a00754dd97102411a614f685d329e<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0434\u043c\u0435\u043d\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430, \u0438 \u0432 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u0438\u0434\u043d\u044b \u043e\u0431\u0430 \u0445\u0435\u0448\u0430, \u0442\u043e\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f, \u0438 \u0442\u043e\u0442, \u0447\u0442\u043e \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0431\u0430\u043d\u0434\u043b, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0435\u0433\u043e \u043d\u0435 \u0442\u0435\u043c \u043a\u043b\u044e\u0447\u043e\u043c:<\/p>\n<pre><code>$ kubepkg bundle import platform-2026-10.tar --public-key other.pub --mirror oci:\/\/demo.demo.svc:5000\/mirror --plain-http --site \/siteerror: the bundle does not check out: repository main: index is not signed by a trusted key<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043b\u044e\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435, kubepkg \u0431\u0435\u0440\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0438\u0437 \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u0430\u043d\u0434\u043b\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0443\u0440 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439. \u0421 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u0438\u043c\u043f\u043e\u0440\u0442 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 \u043f\u043e \u043c\u0435\u0441\u0442\u0430\u043c \u0438 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0438\u0448\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0443\u0437\u043b\u043e\u0432:<\/p>\n<pre><code>$ kubepkg bundle import platform-2026-10.tar --public-key index.pub --mirror oci:\/\/demo.demo.svc:5000\/mirror --plain-http --site \/site --node-config node-configverified and imported 2 packages: 2 charts, 0 package trees, 5 images into oci:\/\/demo.demo.svc:5000\/mirrorrepository files: \/site\/main\/; serve them over HTTP and point the cluster's repositories therenode settings for quay.io, registry.k8s.io: node-configoperator: helm upgrade kubepkg ... --set mirror=oci:\/\/demo.demo.svc:5000\/mirror$ find \/site node-config -type f\/site\/sbom.cdx.json\/site\/main\/index.yaml\/site\/main\/index.yaml.signode-config\/containerd\/certs.d\/quay.io\/hosts.tomlnode-config\/containerd\/certs.d\/registry.k8s.io\/hosts.tomlnode-config\/talos-registries.yaml$ cat node-config\/containerd\/certs.d\/quay.io\/hosts.tomlserver = \"https:\/\/quay.io\"[host.\"http:\/\/demo.demo.svc:5000\/v2\/mirror\/quay.io\"]  capabilities = [\"pull\", \"resolve\"]  override_path = true<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423\u0437\u043b\u044b \u0442\u044f\u043d\u0443\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0440\u0435\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 kubepkg, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0437\u0435\u0440\u043a\u0430\u043b\u043e\u043c \u043d\u0443\u0436\u043d\u044b \u0438 \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438: containerd \u043f\u043e \u043d\u0438\u043c \u0438\u0434\u0451\u0442 \u0437\u0430 \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438 <a href=\"http:\/\/quay.io\">quay.io<\/a> \u0432 \u0437\u0435\u0440\u043a\u0430\u043b\u043e, \u0430 \u0434\u043b\u044f Talos \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0430\u0442\u0447 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u044b. \u0427\u0430\u0440\u0442\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <a href=\"http:\/\/quay.io\">quay.io<\/a>, \u0445\u0435\u0448\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0438 \u043f\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b \u0438\u043d\u0434\u0435\u043a\u0441. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u0443\u0437\u043b\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0438\u0434\u0435\u043b\u0438, \u043e\u0442\u0440\u0435\u0437\u0430\u043d \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 \u0437\u0435\u0440\u043a\u0430\u043b\u043e \u0438 \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441 \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">helm upgrade kubepkg oci:\/\/ghcr.io\/kuberoot-dev\/charts\/kubepkg -n kubepkg-system --reuse-values \\  --set mirror=oci:\/\/demo.demo.svc:5000\/mirror \\  --set 'repositories[0].name=main' \\  --set 'repositories[0].url=http:\/\/demo.demo.svc:8000\/main\/index.yaml' \\  --set-file 'repositories[0].publicKeys[0]=index.pub'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438: \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0435\u043c\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.<\/p>\n<pre><code>$ kubepkg repo listNAME  PRIORITY  PACKAGES  READY  URLmain  0         49        True   http:\/\/demo.demo.svc:8000\/main\/index.yaml$ kubepkg repo add public https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml --public-key index.pub --priority -1repository public added$ kubepkg repo listNAME    PRIORITY  PACKAGES  READY                URLmain    0         49        True                 http:\/\/demo.demo.svc:8000\/main\/index.yamlpublic  -1        0         False (FetchFailed)  https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml$ kubepkg repo remove publicrepository public removed<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 main \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043f\u0440\u0438\u043d\u044f\u0442, \u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u041f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043a\u0435\u0442 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d \u0432\u0437\u044f\u043b\u0441\u044f:<\/p>\n<pre><code>$ kubepkg install kube-state-metrics --yesACTION   PACKAGE             FROM  TO              REPOSITORY  WHYinstall  kube-state-metrics  -     2.20.0 build 3  main        requested1 packages requested; follow them with \"list\"$ kubepkg listNAME                VERSION  REVISION  READY  REASONcert-manager        1.21.2   2         True   ReconciliationSucceededkube-state-metrics  2.20.0   1         True   ReconciliationSucceeded$ python3 -c 'import json,urllib.request; [print(r) for r in json.load(urllib.request.urlopen(\"http:\/\/demo.demo.svc:5000\/v2\/\\\\_catalog\"))[\"repositories\"]]'mirror\/ghcr.io\/kuberoot-dev\/kubepkg-packages\/cert-manager\/cert-managermirror\/ghcr.io\/kuberoot-dev\/kubepkg-packages\/kube-state-metrics\/kube-state-metricsmirror\/quay.io\/jetstack\/cert-manager-cainjectormirror\/quay.io\/jetstack\/cert-manager-controllermirror\/quay.io\/jetstack\/cert-manager-startupapicheckmirror\/quay.io\/jetstack\/cert-manager-webhookmirror\/registry.k8s.io\/kube-state-metrics\/kube-state-metrics<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>cert-manager, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0441\u0442\u043e\u044f\u043b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u0441\u0432\u0435\u0436\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0437\u0435\u0440\u043a\u0430\u043b\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0440\u0435\u0432\u0438\u0437\u0438\u044e 2. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u0437\u0435\u0440\u043a\u0430\u043b\u0435 \u043b\u0435\u0436\u0430\u0442 \u043f\u043e\u0434 \u043f\u0443\u0442\u044f\u043c\u0438 \u0441\u0432\u043e\u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0440\u0435\u0435\u0441\u0442\u0440\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u0430 \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u0432\u0438\u0437\u0438\u0439.<\/p>\n<h2>\u0412\u0437\u044f\u0442\u044c \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0442\u043e\u0438\u0442<\/h2>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u0443\u0436\u0435 \u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u043e\u0438\u0442. cert-manager, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 <code>helm install<\/code> \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 <code>kubectl apply<\/code>, \u0441\u0442\u0435\u043a \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u041d\u0438\u0447\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0440\u043e\u0434\u0435. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg adopt<\/code> \u0431\u0435\u0440\u0451\u0442 \u0442\u0430\u043a\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u043b\u0438\u0437, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0448\u043b\u0430, \u0438 \u0441\u0430\u043c\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435:<\/p>\n<pre><code>$ kubepkg adopt cert-manageradopt cert-manager 1.21.2 build 2 from mainCOMPONENT     RELEASE                    FOUND                                                     THENcert-manager  cert-manager\/cert-manager  cert-manager v1.21.2 (app v1.21.2), revision 2, deployed  upgrade in place to the package's chart, keeping its 2 top-level values<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u043b\u0438\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0434\u043e \u0447\u0430\u0440\u0442\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. Deployment \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u043f\u043e\u0434\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u043d\u0443\u0436\u0434\u044b, \u0430 \u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u0435\u0441\u0442\u044c \u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u043e\u0442\u043a\u0430\u0442, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 CRD. \u041e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0431\u0435\u0437 Helm, \u0442\u043e\u0436\u0435 \u0437\u0430\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0438\u043c\u0451\u043d \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u043e \u043a \u0442\u0438\u0445\u043e\u043c\u0443 \u0437\u0430\u0445\u0432\u0430\u0442\u0443 \u0447\u0443\u0436\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<h2>Helm, werf, Flux \u0438 Argo CD<\/h2>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0430 \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u0441\u0442\u0430\u0432\u0438\u0442 \u0447\u0430\u0440\u0442\u044b \u0441\u0430\u043c \u0447\u0435\u0440\u0435\u0437 Helm SDK \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0441\u0435\u0431\u044f. \u0421 werf \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 Nelm, \u0434\u0432\u0438\u0436\u043e\u043a \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f werf. \u0421 Flux \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f HelmRelease, \u0441 Argo CD \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f Application:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/99\/4d\/c5\/994dc5cf5ee12e8108911788d67c157d.png\" alt=\"\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 kubepkg \u0441\u043e\u0437\u0434\u0430\u043b \u0432 Argo CD\" width=\"2880\" height=\"1600\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/99\/4d\/c5\/994dc5cf5ee12e8108911788d67c157d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/99\/4d\/c5\/994dc5cf5ee12e8108911788d67c157d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 kubepkg \u0441\u043e\u0437\u0434\u0430\u043b \u0432 Argo CD<\/figcaption><\/div>\n<\/figure>\n<p>\u0421 Nelm \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f, \u0438 \u043f\u0440\u043e \u043d\u0435\u0451 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. Nelm \u0432\u044b\u0440\u043e\u0441 \u0438\u0437 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 Helm, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u0447\u0430\u0440\u0442\u044b \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0440\u0435\u043b\u0438\u0437\u044b \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0442\u043e\u0447\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u043b\u0438\u0437\u0430 \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0435\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441 CRD. \u041f\u043e\u043a\u0430 \u0438\u0434\u0451\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, Nelm \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0438 \u043b\u043e\u0433\u0430\u043c\u0438 \u043f\u043e\u0434\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0441\u0442\u0440\u044f\u043b\u043e, \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u0432\u0438\u0434\u043d\u043e \u0441\u0440\u0430\u0437\u0443, \u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u043a\u043e\u043f\u043e\u043a \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u0414\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u0440\u043e\u0434\u0435 KubeVirt \u0438\u043b\u0438 Cilium, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u0442\u0440\u0443\u0434\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c, \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430.<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u043e\u0434\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, <code>backend: werf<\/code>, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a Nelm \u0443\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0431\u0440\u0430\u0437\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d \u0442\u0430\u043c \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u0435. \u0427\u0430\u0440\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0434\u043b\u044f Helm, \u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0440\u0435\u043b\u0438\u0437\u0430 \u0447\u0435\u0440\u0435\u0437 Nelm. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 \u0441 Helm, \u0438\u0445 \u0432\u0438\u0434\u043d\u043e \u0438 \u0432 <code>nelm release list<\/code>, \u0438 \u0432 <code>helm list<\/code>, \u0430 \u043e\u0442\u043a\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0441 Helm. \u0417\u0430\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e Nelm \u0443\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u0440\u0435\u043b\u0438\u0437.<\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441, \u043f\u043e\u0447\u0435\u043c\u0443 kubepkg \u043d\u0435 \u043f\u0438\u0448\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 werf, \u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 Nelm \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u041f\u0440\u043e\u0435\u043a\u0442 werf \u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0434\u0438\u043d \u0440\u0435\u043b\u0438\u0437 \u0432 \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d, \u0430 \u043f\u0430\u043a\u0435\u0442 kubepkg \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u0445 \u0438\u043c\u0451\u043d, \u043a\u0430\u043a \u0442\u0430 \u0436\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0433\u0434\u0435 KubeVirt \u0438 CDI \u0436\u0438\u0432\u0443\u0442 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u0432\u0438\u0436\u043a\u0430, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442: \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b kubepkg \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0447\u0430\u0440\u0442\u0430\u043c\u0438 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435, \u0438 \u043f\u0440\u043e\u0435\u043a\u0442 werf \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445 \u043a\u0430\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0435\u0432\u0438\u0437\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0441 \u043b\u044e\u0431\u044b\u043c \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u044b \u0438 \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c: Flux \u0438 Argo CD \u043d\u0435 \u0445\u0440\u0430\u043d\u044f\u0442 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u043d\u0438\u043c\u0438 \u043e\u0442\u043a\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0438 kubepkg \u043f\u0440\u044f\u043c\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0443\u0442\u044c, \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubepkg render<\/code> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u0438\u0448\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Flux, Argo CD \u0438\u043b\u0438 helmfile, \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0447\u0435\u0440\u0435\u0437 dependsOn, \u0432\u043e\u043b\u043d\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 needs. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442\u0441\u044f \u0432 Git \u0438 \u0436\u0438\u0432\u0451\u0442 \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0435\u0437 kubepkg. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u043e\u0442\u043a\u0430\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f CRD, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442: \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 Git \u043e\u0431\u044a\u0435\u043a\u0442\u044b Package, \u043f\u0443\u0441\u0442\u044c \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 Argo CD \u0438\u043b\u0438 Flux, \u0430 kubepkg \u0440\u0435\u0448\u0430\u0435\u0442, \u043a\u0430\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e.<\/p>\n<h2>\u041c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432<\/h2>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 kubepkg \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Argo CD, Flux, OCM \u0438 Karmada. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u044d\u0442\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0442\u0430\u043a, \u043d\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0447\u0442\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0434\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u0441\u0442\u043e\u0438\u0442 cert-manager 1.21 \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f 1.0, \u0438 \u043a\u0430\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043e\u043b\u043d\u0430\u043c\u0438, \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u044f \u0440\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/9e\/5f\/af\/9e5faf0e0dab64149564f8a3472bf53f.png\" alt=\"\u0425\u0430\u0431 \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b\" width=\"1272\" height=\"782\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/9e\/5f\/af\/9e5faf0e0dab64149564f8a3472bf53f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/9e\/5f\/af\/9e5faf0e0dab64149564f8a3472bf53f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0425\u0430\u0431 \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 kubepkg \u0435\u0441\u0442\u044c \u0445\u0430\u0431. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043f\u043e \u043c\u0435\u0442\u043a\u0430\u043c \u0438 \u043f\u0438\u0448\u0435\u0442 \u0432 \u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u044b Repository \u0438 Package \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e PackageSet. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 kubepkg, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u043e\u0442\u043a\u0430\u0442\u044b \u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0445\u0430\u0431 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u0425\u0430\u0431 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0435 \u043e\u043d, \u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435.<\/p>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0431\u043e\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u0442\u0438\u0442\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b-\u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0438, \u043f\u043e\u0442\u043e\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0438\u043b \u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438.<\/p>\n<h3>\u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0436\u0438\u0432\u0443\u044e<\/h3>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u0432\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0425\u0430\u0431 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0430\u043c \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0443 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c self, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c edge:<\/p>\n<pre><code>$ kubepkg cluster add self --kubeconfig hub.kubeconfig --label env=prod --label ring=canary$ kubepkg cluster add edge --kubeconfig edge.kubeconfig --label env=prod$ kubepkg cluster listNAME  KUBERNETES  READY  LABELS                STATUSedge  v1.35.6     True   env=prod              kubepkg is installedself  v1.35.6     True   env=prod,ring=canary  kubepkg is installed<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0430\u0431\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0434\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0442\u043e\u044f\u0442\u044c kube-state-metrics, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0430\u0445, \u043f\u043e\u0442\u043e\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0437\u0430 \u0440\u0430\u0437:<\/p>\n<pre><code class=\"yaml\">apiVersion: kubepkg.dev\/v1kind: PackageSetmetadata:  name: prodspec:  clusterSelector: {matchLabels: {env: prod}}  rollout:    canary: {matchLabels: {ring: canary}}    maxInProgress: 1  repositories:    - name: fleet      spec:        url: https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml        publicKeys: [...]  packages:    - name: kube-state-metrics      spec:        version: \"2.20.0\"        upgrade: {timeout: 90s}        components: {kube-state-metrics: {values: {replicas: 1}}}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043a\u0430 \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u0441\u0442\u0430\u043b \u0433\u043e\u0442\u043e\u0432 \u043d\u0430 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0435, edge \u0447\u0435\u0441\u0442\u043d\u043e \u0436\u0434\u0451\u0442, \u0438 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u0443 \u043d\u0435\u0433\u043e \u0442\u0430\u043a \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u0436\u0434\u0451\u0442 \u043a\u0430\u043d\u0430\u0440\u0435\u0435\u043a. \u041f\u043e\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0434\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439, \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435: \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0435 \u0443\u0436\u0435 \u0434\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438, \u0430 \u043d\u0430 edge \u0435\u0449\u0451 \u043e\u0434\u043d\u0430, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043b\u043e\u043c\u0430\u0435\u043c \u043d\u0430\u0431\u043e\u0440: \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u043e\u0431\u0440\u0430\u0437 \u0441 \u0442\u0435\u0433\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041d\u0430 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0437\u0430 \u043f\u043e\u043b\u0442\u043e\u0440\u044b \u043c\u0438\u043d\u0443\u0442\u044b \u0438 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u0440\u0430\u0441\u043a\u0430\u0442\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code>$ kubepkg set status prodprod: 0 of 2 clusters ready, 1 updatedrollout paused: stopped after a failure on self: kube-state-metrics: revision 3 failed (component kube-state-metrics failed: upgrade kube-state-metrics\/kube-state-metrics: resource Deployment\/kube-state-metrics\/kube-state-metrics not ready. status: InProgress, message:\u2026; change the set to go onCLUSTER  UPDATED  KUBE-STATE-METRICSself     yes      2.20.0edge     no       2.20.0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043e edge \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u0448\u043b\u043e \u0432\u043e\u043e\u0431\u0449\u0435, \u043e\u043d \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0435\u0436\u043d\u0435\u043c \u043e\u0431\u0440\u0430\u0437\u0435. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u044d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0438 \u0440\u0430\u0441\u043a\u0430\u0442\u043a\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0438\u043c:<\/p>\n<pre><code>$ kubepkg set status prodprod: 2 of 2 clusters readyCLUSTER  UPDATED  KUBE-STATE-METRICSself     yes      2.20.0edge     yes      2.20.0$ kubepkg set listSET   CLUSTER  UPDATED  READY  STATUSprod  self     yes      1\/1    -prod  edge     yes      1\/1    -<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435. \u041a\u043e\u0433\u0434\u0430 edge \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442 \u0438\u0437 \u043f\u0440\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u0435\u043d\u0438\u0432 \u0435\u043c\u0443 \u043c\u0435\u0442\u043a\u0443, \u043f\u0430\u043a\u0435\u0442 \u043d\u0435 \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f: Deployment \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u0439 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f, \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430.<\/p>\n<h2>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c<\/h2>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u0434\u0430\u0451\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 Prometheus: \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0440\u0435\u0432\u0438\u0437\u0438\u044e, \u0438\u0441\u0445\u043e\u0434\u044b \u0440\u0435\u0432\u0438\u0437\u0438\u0439, \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432. \u0427\u0430\u0440\u0442 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e \u0441\u0442\u0430\u0432\u0438\u0442 ServiceMonitor, \u0430\u043b\u0435\u0440\u0442\u044b \u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Grafana:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/75\/49\/79\/75497918a792f1977397b75d301421ae.png\" alt=\"\u0414\u0430\u0448\u0431\u043e\u0440\u0434 kubepkg \u0432 Grafana\" width=\"2880\" height=\"1800\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/75\/49\/79\/75497918a792f1977397b75d301421ae.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/75\/49\/79\/75497918a792f1977397b75d301421ae.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0430\u0448\u0431\u043e\u0440\u0434 kubepkg \u0432 Grafana<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043b\u0435\u0440\u0442 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0430. \u0415\u0441\u043b\u0438 \u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0435\u0441\u0442\u044c \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0430 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u0438\u0445\u043e \u0441\u043b\u043e\u043c\u0430\u043b\u0441\u044f, \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u043d\u0443\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u0442\u044c. \u0410\u043b\u0435\u0440\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435, \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439.<\/p>\n<h2>\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043a\u0430\u043a \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442<\/h2>\n<p>\u0412\u0441\u0451 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e kubepkg \u0434\u0435\u043b\u0430\u043b\u0441\u044f. \u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Kubernetes \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043b\u044e\u0441 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u0432\u043c\u0435\u0441\u0442\u0435. \u0412 kubepkg \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0441\u0432\u043e\u0438\u0445 \u0447\u0430\u0440\u0442\u043e\u0432, \u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"yaml\">apiVersion: kubepkg.dev\/v1kind: Recipemetadata:  name: mydistrospec:  version: 2.0.0  package:    variants:      - name: default        requires:          - {package: cert-manager, version: \"~1.21\"}          - {package: kube-state-metrics, version: \"~2.20\"}          - {package: virtualization, version: \"~1.0\"}      - name: minimal        requires:          - {package: cert-manager, version: \"~1.21\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 2.0 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e 2.1, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 cert-manager 1.22, \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442 cert-manager \u043d\u0430 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0434\u0430\u044e\u0442 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0432\u0440\u043e\u0434\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 kubepkg \u043d\u0435\u0442 \u0443\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0439, \u043a\u0430\u043a \u0432 apt \u0438\u043b\u0438 npm: \u0442\u043e\u0447\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u043c\u0435\u0441\u0442\u0435, \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430, \u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0430\u043c\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443, \u0430 \u043d\u0435 \u043f\u0430\u043a\u0435\u0442\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043e\u043c\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0438\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u043a\u043b\u0430\u0434\u0443\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u0441\u0435\u043a\u0440\u0435\u0442, \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0434\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u0427\u0430\u0440\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u044e\u0442 \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u0438\u0445 \u0441\u0445\u0435\u043c\u0430, \u0438 \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0412\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u0447\u0443\u0436\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443<\/h2>\n<p>kubepkg \u0437\u0430\u0434\u0443\u043c\u0430\u043d \u043a\u0430\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u043e \u0438 \u0432 \u043b\u044e\u0431\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u043c\u0443, \u0431\u0443\u0434\u044c \u0442\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Kubernetes, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043b\u0438 IDP. \u0424\u043e\u0440\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b kubepkg \u043f\u043e\u0434 \u0441\u0432\u043e\u0435\u0439 API-\u0433\u0440\u0443\u043f\u043f\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"http:\/\/packages.example.org\"><code>packages.example.org<\/code><\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0438\u0434\u0435\u043b\u0438 \u0435\u0451 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 API, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434. \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u0432 \u0435\u0451 \u0440\u0435\u0435\u0441\u0442\u0440. \u0410 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u0434\u0430 \u0432\u0441\u0451, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 kubepkg, \u043b\u0435\u0436\u0438\u0442 \u0432 Go-\u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 \u0441\u0432\u043e\u0439 CLI \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430\u043c\u0438.<\/p>\n<p>API \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 1.0 \u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d (\u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0441\u043b\u043e\u043f\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430 \u043f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430). Breaking changes \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 2.0, \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 API \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0435\u0441\u044c \u0446\u0438\u043a\u043b 1.x, \u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.<\/p>\n<h2>\u041a\u0430\u043a kubepkg \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 kuberoot<\/h2>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0438 \u0441\u0430\u043c\u044b\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c kubepkg \u0441\u0442\u0430\u043b kuberoot. \u0422\u0430\u043c \u0443 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043d\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0431\u044b \u0435\u0433\u043e \u0447\u0430\u0440\u0442\u043e\u043c \u0438 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0431\u044b \u0437\u0430 \u043d\u0438\u043c: \u0443\u0437\u0435\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 \u043d\u0451\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432, \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u0440\u0443\u0447\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 kubepkg \u0432 kuberoot \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u043f\u043e\u0434\u043e\u043c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0430 \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u0441\u0430\u043c\u043e\u0433\u043e \u0443\u0437\u043b\u0430, \u0440\u044f\u0434\u043e\u043c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c API. \u0415\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 kinit, \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430, \u0438 \u0444\u043b\u0430\u0433\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u0436\u0430\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0435, \u0447\u0442\u043e \u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435:<\/p>\n<pre><code class=\"yaml\">- name: kubepkg-operator  after: apiserver  args:  - \/usr\/bin\/kubepkg-operator  - --backend=helm  - --values-secret=kube-system\/kuberoot-platform-values  - --registry-secret=kube-system\/kuberoot-registry-credentials  - --image-policy=enforce  - --webhook-namespace=kube-system  - --webhook-service=kubepkg-webhook  - '{{if eq .Store.Kind \"etcd\"}}--leader-elect{{end}}'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c\u0443 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0443 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0431\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0438 \u043e\u0434\u0438\u043d \u043f\u043e\u0434 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. \u0412 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0443\u0437\u043b\u0435, \u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0434\u0438\u043d, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u044b\u0431\u043e\u0440\u0430 \u043b\u0438\u0434\u0435\u0440\u0430 Kubernetes (\u043e\u0431\u044a\u0435\u043a\u0442 Lease). \u0412\u0435\u0431\u0445\u0443\u043a \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 \u0443\u0437\u043b\u0435, \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 Service \u0431\u0435\u0437 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e \u0441\u0430\u043c \u0443\u0437\u0435\u043b.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 kinit \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. CRD kubepkg \u043b\u0435\u0436\u0430\u0442 \u0432 \u043e\u0431\u0440\u0430\u0437\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0442\u0443\u0434\u0430 \u0436\u0435 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043a\u043b\u0430\u0434\u0451\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043a\u043b\u044e\u0447 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0442\u0430\u0440\u0442\u0435 kinit \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 Repository \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, CoreDNS, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 DNS \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"yaml\">apiVersion: kubepkg.dev\/v1kind: Repositorymetadata:  name: mainspec:  url: https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml  publicKeys:    - |      -----BEGIN PUBLIC KEY-----      ...---apiVersion: kubepkg.dev\/v1kind: Packagemetadata:  name: corednsspec:  version: \"~1.14\"  components:    coredns:      values:        service:          clusterIP: \"10.96.0.10\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410\u0434\u0440\u0435\u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u043a\u043b\u044e\u0447 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u044f\u0434\u0440\u0430, \u0435\u0441\u043b\u0438 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e kinit \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <code>kubepkg install kuberoot-&lt;\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432&gt; --yes<\/code> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043f\u043e\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0435\u0451 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0442. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440.<\/p>\n<h3>\u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b kuberoot \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/h3>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 kuberoot \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u0438 \u0441\u043e\u0441\u0442\u0430\u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0440\u0435\u0446\u0435\u043f\u0442\u0430. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 edge \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e CoreDNS, metrics-server \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0431\u0440\u0430\u043d \u043f\u043e\u0432\u0435\u0440\u0445 edge:<\/p>\n<pre><code class=\"yaml\">apiVersion: kubepkg.dev\/v1kind: Recipemetadata:  name: kuberoot-observabilityspec:  package:    variants:      - name: default        requires:          - {package: kuberoot-edge, version: \"~0.2\"}          - {package: victoria-metrics, version: \"~1.153\"}          - {package: victoria-logs, version: \"~1.53\"}          - {package: perses-operator, version: \"~0.5\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>AI-\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u0442\u043e\u0436\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 edge, \u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442, \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441, \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 <code>ai-gpu<\/code>, <code>ai-inference<\/code>, <code>ai-training<\/code> \u0438 <code>ai-rag<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441, \u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0432\u0435\u0441\u044c \u043d\u0430\u0431\u043e\u0440. \u041f\u043e\u043b\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043d\u0430 DRBD, \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0436\u0435 \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442, <code>kuberoot-platform-full<\/code>, \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u044b.<\/p>\n<h3>\u0427\u0442\u043e \u043f\u0430\u043a\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u0443\u0437\u043b\u0435<\/h3>\n<p>\u0423\u0437\u0435\u043b kuberoot \u043d\u0435 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Linux: \u043d\u0430 \u043d\u0451\u043c \u043d\u0435\u0442 systemd, udev \u0438 D-Bus, \u043c\u043e\u0434\u0443\u043b\u0438 \u044f\u0434\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f. \u0427\u0430\u0440\u0442 Piraeus \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435, \u0438 \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0435\u0433\u043e \u0441\u0430\u0442\u0435\u043b\u043b\u0438\u0442\u044b LINSTOR \u043d\u0430 \u0443\u0437\u043b\u0430\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0443\u0442\u0441\u044f. \u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445, \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u043a\u0440\u0435\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 kinit \u043a\u043b\u0430\u0434\u0451\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440:<\/p>\n<pre><code class=\"yaml\">linstorNode:  drbdLoaded: true  systemd: false  hostNetwork: true<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0434\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u041f\u0430\u043a\u0435\u0442 Piraeus \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043e\u0434\u0438\u043d \u043d\u0430 \u0432\u0441\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b: \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u043d\u0430 kuberoot \u0432\u0438\u0434\u0438\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u0430\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0430\u0442\u0435\u043b\u043b\u0438\u0442\u043e\u0432 \u043f\u043e\u0434 \u0443\u0437\u043b\u044b \u0431\u0435\u0437 systemd, \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f DRBD \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437.<\/p>\n<h3>\u0427\u0442\u043e kuberoot \u043d\u0430\u0448\u0451\u043b \u0432 kubepkg<\/h3>\n<p>\u0421\u0430\u043c\u043e\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, \u0447\u0442\u043e \u0434\u0430\u043b kuberoot, \u044d\u0442\u043e \u0442\u0440\u0438 \u0440\u0430\u0443\u043d\u0434\u0430 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u043d\u0435 \u043d\u0430 \u0442\u0435\u0441\u0442\u0430\u0445 kubepkg, \u0430 \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432.<\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 \u0443\u0437\u043b\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0443\u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u0438\u0437 \u0441\u0435\u043a\u0440\u0435\u0442\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u0410 \u0440\u0430\u0437 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u043a\u0440\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043d\u0435 \u0437\u0430\u0442\u0435\u0440\u0435\u0432 \u0447\u0443\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0435\u043a\u0440\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb, \u0430 \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0443. \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u043e\u043c\u0443, \u043a\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u043e\u0434, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 ReplicaSet, \u0438 \u0438\u0445 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u043a\u0430\u0437 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c \u043d\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435 \u043f\u043e\u0434\u0430. Cilium, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u043c <code>helm install<\/code> \u0434\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 kubepkg \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0440\u0435\u043b\u0438\u0437 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 failed. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u043e \u0440\u0435\u043b\u0438\u0437 \u0432 pending-install \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u0434\u043e\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043e\u043b\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u043f\u0430\u043a\u0435\u0442\u044b \u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p>\u0421\u0430\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u043a\u0430 \u0441\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0442\u0435\u0441\u0442\u0430\u0445 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 Kubernetes. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u043c\u0435\u0447\u0430\u043b \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d, \u043a\u0443\u0434\u0430 \u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 CoreDNS \u0438 metrics-server \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u0432 kube-system. \u0422\u0435\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043e\u0432 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u043e\u0434\u043e\u043c, \u0443\u043f\u0430\u043b \u0442\u0430\u043a:<\/p>\n<pre><code>admission webhook \"pods.images.kubepkg.dev\" denied the request: no installed package pinsregistry.k8s.io\/pause:3.10.2; namespace kube-system runs only images packages pin<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442, \u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0443\u044e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0418\u0437 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0435\u0440\u0438\u0438 \u0432\u044b\u0448\u043b\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0445\u0435\u043c\u0435 \u0447\u0430\u0440\u0442\u0430: \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u0441\u0445\u0435\u043c\u044b mlflow \u0438 JupyterHub \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u043b\u0438 \u043a\u043b\u044e\u0447 <code>linstorNode<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c \u043d\u0438 \u043a \u0447\u0435\u043c\u0443, \u0438 \u0432 \u0440\u0435\u0446\u0435\u043f\u0442\u0430\u0445 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0430\u0442\u0447\u0438, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0445 \u043d\u0435\u0442.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0432\u0430 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0432\u043e\u0448\u043b\u0438 \u0432 \u0432\u0435\u0440\u0441\u0438\u044e 1.3. \u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0443 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 Grafana: \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0442\u0430\u043c \u043d\u0430 Perses, \u0430 Grafana \u0431\u044b\u043b\u0430 \u0431\u044b \u0441\u0430\u043c\u044b\u043c \u0442\u044f\u0436\u0451\u043b\u044b\u043c \u043f\u043e\u0434\u043e\u043c \u043d\u0430 \u0443\u0437\u043b\u0435. \u0420\u0430\u043d\u044c\u0448\u0435 \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442 \u043c\u043e\u0433 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c VictoriaMetrics, \u043d\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0451, \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c Grafana \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0438\u0448\u044c \u0432\u0442\u043e\u0440\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0440\u0435\u0446\u0435\u043f\u0442\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"yaml\">requires:  - package: victoria-metrics    version: \"~1.153\"    components:      victoria-metrics:        values:          grafana: {enabled: false}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442\u0430 \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0440\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u043b \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435, \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0438\u0445 \u0432\u0441\u0435\u0445. \u0415\u0441\u043b\u0438 \u0434\u0432\u0430 \u043c\u0435\u0442\u0430\u043f\u0430\u043a\u0435\u0442\u0430 \u043f\u0440\u043e\u0441\u044f\u0442 \u0443 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u043e\u0435, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0430 \u043f\u0430\u043a\u0435\u0442\u0430, \u0430 \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f \u043c\u043e\u043b\u0447\u0430. \u0412\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043a\u0430\u0441\u0430\u043b\u043e\u0441\u044c \u0443\u043f\u0430\u0432\u0448\u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a: \u0440\u0430\u043d\u044c\u0448\u0435 \u043e\u043d\u0438 \u0441\u0430\u043c\u0438 \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u043b\u0438\u0441\u044c, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u043b\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430, \u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043b\u0435\u0434\u0438\u0442, \u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b kuberoot \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u0435, \u043f\u0430\u043a\u0435\u0442 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0443\u043f\u0430\u0432\u0448\u0443\u044e \u0440\u0435\u0432\u0438\u0437\u0438\u044e \u0441 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0439 \u043f\u0430\u0443\u0437\u043e\u0439, \u043e\u0442 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u0441\u0435\u043a\u0443\u043d\u0434 \u0434\u043e \u0434\u0435\u0441\u044f\u0442\u0438 \u043c\u0438\u043d\u0443\u0442, \u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0440\u0430\u0437\u0443.<\/p>\n<h2>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h2>\n<p>kubepkg \u044d\u0442\u043e MVP, \u0438 \u044f \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u043e\u0432\u0435\u0440\u044f\u0442 \u043f\u0440\u043e\u0434 \u043a\u0440\u0443\u043f\u043d\u043e\u0433\u043e \u0431\u0430\u043d\u043a\u0430, \u043f\u0443\u0442\u044c \u043d\u0435\u0431\u043b\u0438\u0437\u043a\u0438\u0439. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u043e\u043a\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e \u044f \u0441\u0430\u043c, \u0430 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u0432 \u043b\u044e\u0434\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0442. \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0443\u0434\u0438\u0442. \u0427\u0430\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445, \u043d\u043e \u043d\u0435 \u0433\u043e\u0434\u0430\u043c\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0434\u043b\u044f Kubernetes \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043d\u0435 \u0432\u044b\u0434\u0443\u043c\u044b\u0432\u0430\u044f \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438 \u043d\u0435 \u043b\u043e\u043c\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u0449\u0438\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0430 \u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c. \u0412\u0441\u0451 \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0: \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432 <a href=\"https:\/\/github.com\/kuberoot-dev\/kubepkg\">kuberoot-dev\/kubepkg<\/a>, \u0440\u0435\u0446\u0435\u043f\u0442\u044b \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/kuberoot-dev\/kubepkg-recipes\">kuberoot-dev\/kubepkg-recipes<\/a>, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 <a href=\"http:\/\/kuberoot-dev.github.io\/kubepkg\">kuberoot-dev.github.io\/kubepkg<\/a>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0438 \u0443\u0437\u043d\u0430\u0451\u0442\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u0441 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c\u0438, \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438, \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0448\u0435\u043d\u043e\u043c \u0438\u043b\u0438 \u0441 \u0442\u0443\u0445\u043b\u044b\u043c\u0438 \u043f\u043e\u043c\u0438\u0434\u043e\u0440\u0430\u043c\u0438. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0441 \u0414\u0430\u0433\u0433\u0430\u043d\u043e\u043c, \u0441\u043f\u043e\u0440 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u044e (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u044e) \u0437\u0430\u0434\u043d\u0438\u0446\u0443 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0436\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c.<\/p>\n<\/div>\n<p>\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\/1098992\/\">https:\/\/habr.com\/ru\/articles\/1098992\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423 Linux \u0435\u0441\u0442\u044c apt, dnf \u0438 pacman, \u0438 \u043d\u0438\u043a\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u0438\u0442, \u043a\u0430\u043a \u0436\u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0438\u0445. \u0423 Kubernetes \u0437\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e. \u0415\u0441\u0442\u044c Helm, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0434\u0438\u043d \u0447\u0430\u0440\u0442, \u0435\u0441\u0442\u044c Argo CD \u0438 Flux, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u043b\u043e \u0441\u0438\u043d\u043a\u0430\u044e\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 Git, \u043d\u043e \u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u043b \u0431\u044b, \u0447\u0442\u043e cert-manager \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e KubeVirt \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0447\u0442\u043e CRD, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u0438\u043c \u0440\u0435\u043b\u0438\u0437\u043e\u043c, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430 \u0441\u043d\u0435\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c. \u041a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u043d\u0430 Kubernetes, \u043f\u0438\u0448\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 \u0441\u0430\u043c, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e.\u041f\u0440\u043e\u0435\u043a\u0442, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f kubepkg, \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0441\u0442\u0430\u0432\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 Helm-\u0447\u0430\u0440\u0442\u044b \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438 Debian, \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0438 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b, \u0437\u0430\u0447\u0435\u043c \u0432\u0441\u0451 \u044d\u0442\u043e \u0437\u0430\u0442\u0435\u044f\u043b, \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0447\u0438\u0442\u0430\u044e \u0432\u0430\u0436\u043d\u044b\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a K8s \u043a\u0430\u043a \u043a \u044f\u0434\u0440\u0443 Linux \u0438 \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043c\u043e\u0439 \u0442\u0443\u043b\u043a\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Kubernetes. \u0412 \u043d\u0435\u0439 \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u043b \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0433\u043e  \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f K8s, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a kubepkg \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u0438 \u0447\u0442\u043e \u043e\u043d \u0443\u043c\u0435\u0435\u0442. \u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441 \u0436\u0438\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043d\u0430\u043d\u0442\u0430 Cozystack.\u0421\u043d\u043e\u0432\u0430 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043c\u043d\u043e\u044e. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b Aenix \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0431\u044b \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438:)\u041e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u0441\u044f kubepkg\u0418\u0441\u0442\u043e\u0440\u0438\u044f kubepkg\u041a\u0430\u043a \u0432\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c, \u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0442\u044c. \u041c\u044d\u0442\u0442 \u0414\u0430\u0433\u0433\u0430\u043d \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043c\u043e\u044e \u0434\u0430\u0432\u043d\u044e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0431\u0435\u0434\u0430 Kubernetes \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438, \u0430 \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 KubePkg. \u0418 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435.\u0421\u0430\u043c \u043a\u043e\u0434 \u044f \u043f\u0438\u0441\u0430\u043b \u043d\u0435 \u0441 \u043d\u0443\u043b\u044f (\u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0441\u0430\u043c), \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0440\u0435\u0448\u0438\u043b \u0432\u0437\u044f\u0442\u044c cozypkg, \u0442\u0443\u043b\u0437\u0443 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Cozystack: \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u0430 \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438 \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439. cozypkg \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0435\u0448\u0430\u043b \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0434\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0431\u044b\u043b \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u043a \u043d\u0435\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u044f \u0432\u0437\u044f\u043b \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u043d\u0430 \u043d\u0451\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0438 \u043e\u0442 \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u0432 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c \u043a\u0443\u0431-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u0442\u0430\u043a \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u0443\u044e \u043a\u0443\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u0435\u0440\u0441\u0438\u0438 1.3, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c API \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 GitHub-\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 kuberoot-dev, \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 kuberoot, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d \u0438 \u0434\u0435\u043b\u0430\u043b\u0441\u044f.\u0427\u0435\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 HelmHelm \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0438 \u043e\u043d\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. Helm \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438: \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043d\u0443\u0436\u0435\u043d cert-manager, Helm \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442, \u043f\u043e\u043a\u0430 \u043f\u043e\u0434 \u043d\u0435 \u0443\u043f\u0430\u0434\u0451\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u0440\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 CRD. \u041e\u043d \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a\u0430\u043a\u043e\u0439 API \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Prometheus Operator, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043f\u0438\u0445\u043d\u0443\u043b \u0435\u0433\u043e \u0442\u0443\u0434\u0430 \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439. \u041e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435. \u0418 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043d\u0435\u043d\u0438\u044f \u043e CRD, \u043a\u0440\u043e\u043c\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u00ab\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c\u00bb, \u0445\u043e\u0442\u044f \u0438\u043c\u0435\u043d\u043d\u043e CRD \u0432 Kubernetes \u0441\u0430\u043c\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0432\u0435\u0449\u044c: \u043e\u043d\u0438 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0438\u0439 \u0438\u0445 \u0440\u0435\u043b\u0438\u0437, \u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 CRD \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430.\u041a\u0430\u0436\u0434\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0438 \u0434\u044b\u0440\u044b \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443. \u0423 Deckhouse \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438, \u0443 OpenShift \u0435\u0441\u0442\u044c OLM, \u0443 Rancher \u0441\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0437\u044f\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435. kubepkg \u0437\u0430\u0434\u0443\u043c\u0430\u043d \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b. \u041e\u043d \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0438 Helm, \u043d\u0438 Argo CD, \u043d\u0438 Flux, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0438\u0445 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c\u0438.\u041f\u043e\u0447\u0435\u043c\u0443 apt \u0434\u043b\u044f Kubernetes \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u0441\u044f\u0418\u0434\u0435\u044f \u043d\u0435 \u043d\u043e\u0432\u0430, \u0438 \u044f \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439, \u043a\u043e\u043c\u0443 \u043e\u043d\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443. \u0421\u0430\u043c Helm \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 2015 \u0433\u043e\u0434\u0443 \u043f\u043e\u0434 \u0434\u0435\u0432\u0438\u0437\u043e\u043c \u00ab\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f Kubernetes\u00bb, \u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0438\u043c \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0432\u0435\u0434\u044c \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0438 \u0432\u0435\u0440\u0441\u0438\u0438. \u041d\u043e apt \u0446\u0435\u043d\u0435\u043d \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0430\u0440\u0445\u0438\u0432\u0430, \u0430 \u0437\u043d\u0430\u043d\u0438\u0435\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442\u044b \u0436\u0438\u0432\u0443\u0442 \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f Helm \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b. \u0417\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 \u0435\u0433\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e.CoreOS \u0435\u0449\u0451 \u0432 2016 \u0433\u043e\u0434\u0443 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 KPM, \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0440\u0435\u0435\u0441\u0442\u0440\u043e\u043c, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0440\u043e\u0441\u043b\u0438 App Registry \u0438 \u0440\u0430\u0437\u0434\u0435\u043b Applications \u0432 Quay. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a CoreOS \u043a\u0443\u043f\u0438\u043b Red Hat, KPM \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438, \u0430 \u0432 2022 \u0433\u043e\u0434\u0443 Quay.io \u0443\u0431\u0440\u0430\u043b \u0438 \u0441\u0430\u043c\u0438 Applications. \u0412 2018 \u0433\u043e\u0434\u0443 Microsoft, Docker \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 CNAB, \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u0430\u043d\u0434\u043b\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u043e \u0435\u0433\u043e \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Duffle \u0434\u0430\u0432\u043d\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0430\u0440\u0445\u0438\u0432\u0435, \u0430 \u0438\u0437 \u0436\u0438\u0432\u044b\u0445 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 Porter, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u0441\u043b\u044b\u0448\u0430\u043b. \u0412 D2iQ \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 KUDO, \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0435\u0433\u043e \u0440\u0435\u043b\u0438\u0437 \u0432\u044b\u0448\u0435\u043b \u0432\u0435\u0441\u043d\u043e\u0439 2021 \u0433\u043e\u0434\u0430. Glasskube \u0432 2024 \u0433\u043e\u0434\u0443 \u0433\u0440\u043e\u043c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043b \u0441\u0435\u0431\u044f \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f Kubernetes \u0438 \u0441\u043e\u0431\u0440\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0437\u0432\u0451\u0437\u0434 \u043d\u0430 GitHub, \u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0430\u0440\u0445\u0438\u0432\u0435. \u0414\u0430\u0436\u0435 Kubeapps, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043b \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u043f\u043e\u0432\u0435\u0440\u0445 Helm-\u0447\u0430\u0440\u0442\u043e\u0432, \u0432 \u0430\u0432\u0433\u0443\u0441\u0442\u0435 2025 \u0433\u043e\u0434\u0430 \u0443\u0448\u0451\u043b \u0432 \u0430\u0440\u0445\u0438\u0432, \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0444\u043e\u0440\u043a SAP.\u0412\u044b\u0436\u0438\u043b\u0438 \u0442\u0435, \u0443 \u043a\u043e\u0433\u043e \u0437\u0430 \u0441\u043f\u0438\u043d\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430. OLM \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 OpenShift, \u0430 kapp-controller \u0438\u0437 Carvel, \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u0435, \u0432\u044b\u0440\u043e\u0441 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Tanzu. \u041d\u043e \u043e\u0431\u0430 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0432\u043e\u0438\u0445 \u0432\u0435\u043d\u0434\u043e\u0440\u043e\u0432, \u0438 \u0437\u0430 \u0438\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0438\u043c\u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u043d\u0430, \u0438 \u043e\u043d\u0430 \u043d\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u041d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043b \u0432 \u043d\u0435\u0433\u043e \u0441\u043e\u0444\u0442. \u0410\u0432\u0442\u043e\u0440\u044b cert-manager, Cilium \u0438\u043b\u0438 KubeVirt \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0444\u043e\u0440\u043c\u0430\u0442 \u0440\u0430\u0434\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043a\u0430 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0445 \u0438\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0436\u0438\u0432\u0451\u0442 \u0440\u043e\u0432\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 \u043f\u0435\u0440\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0447\u0443\u0436\u0438\u0435 \u0440\u0435\u043b\u0438\u0437\u044b, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u0442\u0430\u0451\u0442 \u0438\u043b\u0438 \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043b\u0430\u043d\u044b, \u0432\u0441\u0451 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. Helm-\u0447\u0430\u0440\u0442 \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0430\u043b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438: \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f Kubernetes \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0435\u0433\u043e \u0441\u0430\u043c, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435, \u0438 \u043d\u0430 Artifact Hub \u0442\u0430\u043a\u0438\u0445 \u0447\u0430\u0440\u0442\u043e\u0432 \u0442\u044b\u0441\u044f\u0447\u0438.\u041e\u0442\u0441\u044e\u0434\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e kubepkg. \u041f\u0430\u043a\u0435\u0442 \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 Helm-\u0447\u0430\u0440\u0442, \u0430 \u0432\u0441\u0451, \u0447\u0435\u0433\u043e Helm \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043b\u0435\u0436\u0438\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438. \u042f \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0448\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c, \u0440\u0435\u0446\u0435\u043f\u0442 \u0431\u0435\u0440\u0451\u0442 \u0440\u0435\u043b\u0438\u0437 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u0430 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 \u0435\u0441\u043b\u0438 \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u0447\u0430\u0440\u0442 \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442, \u043a\u0430\u043a KubeVirt, \u0440\u0435\u0446\u0435\u043f\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0435\u0433\u043e \u0438\u0437 \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432, \u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0447\u0430\u0440\u0442. \u0421\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u043b\u0435\u0436\u0438\u0442 \u0432 OCI-\u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437 kubepkg, \u0445\u043e\u0442\u044c \u0441\u0430\u043c\u0438\u043c Helm, \u0445\u043e\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Flux \u0438\u043b\u0438 Argo CD, \u0442\u0430\u043a \u0447\u0442\u043e, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 kubepkg \u0437\u0430\u0432\u0442\u0440\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442, \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438. \u0426\u0435\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 Helm \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0438 \u0432\u0441\u0451 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435, \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f CRD, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0447\u0430\u0440\u0442\u0430, \u0430 \u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e. \u041a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e, \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0434\u0430\u043b\u044c\u0448\u0435.\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u0430\u043a\u0435\u0442\u0418\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u0430\u043a\u0435\u0442\u0427\u0442\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u0447\u0430\u0440\u0442\u043e\u043c, \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435, \u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\u041f\u0430\u043a\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0440\u0442 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 KubeVirt: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0430 \u043f\u043e\u0442\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441 KubeVirt, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e. \u0412\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432 \u043f\u0435\u0440\u0432\u044b\u0439, \u0438 kubepkg \u0441\u0442\u0430\u0432\u0438\u0442 \u0438\u0445 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438.\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 cert-manager \u043d\u0435 \u043d\u0438\u0436\u0435 1.20 \u0438 \u043d\u0435 \u0432\u044b\u0448\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u043c\u0430\u0436\u043e\u0440\u043d\u043e\u0439. \u0410 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 API monitoring.coreos.com\/v1. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0430\u043a\u0435\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0451 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u043b\u0438\u0431\u043e \u0441\u0430\u043c\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 API \u0432 \u043d\u0451\u043c \u0443\u0436\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e Prometheus Operator, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0442\u0440\u0438 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u0442\u043e\u0436\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 kubepkg \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437.\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 Helm-\u0447\u0430\u0440\u0442\u0430\u043c\u0438 \u0432 OCI-\u0440\u0435\u0435\u0441\u0442\u0440\u0435. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435, \u0447\u0442\u043e kubepkg \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u044d\u0442\u0438 \u0447\u0430\u0440\u0442\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043c Helm, Flux, Argo CD \u0438\u043b\u0438 werf (\u0410\u043b\u0435\u043a\u0441\u0435\u0439, \u0418\u043b\u044c\u044f, \u0418\u0432\u0430\u043d, \u0414\u043c\u0438\u0442\u0440\u0438\u0439, \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u0432\u0435\u0442!).\u041a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435\u041e\u0431\u044a\u0435\u043a\u0442\u044b kubepkg \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0443 kubepkg \u043d\u0435\u0442, \u0432\u0441\u0451 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0436\u0438\u0432\u0451\u0442 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0438 \u0438\u0445 \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0442\u044b\u0440\u0435.Repository \u044d\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0430\u0434\u0440\u0435\u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438 \u043a\u043b\u044e\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442. Package \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435: \u0438\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432\u0430\u0448\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0447\u0430\u0440\u0442\u043e\u0432. PackageSource \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u044b\u0431\u0440\u0430\u043b \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432. \u0410 PackageRevision \u044d\u0442\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0445\u0435\u0448\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0447\u0430\u0440\u0442\u0430 \u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.\u0412\u044b \u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e Package, \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440. \u041e\u043d \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 CRD, \u0438 \u0435\u0441\u043b\u0438 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u0432\u0438\u0437\u0438\u044e \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c, \u0447\u0435\u0440\u0435\u0437 Helm SDK, \u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0434\u0430\u0442\u044c \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 Nelm \u0438\u0437 werf, Flux \u0438\u043b\u0438 Argo CD.\u041f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c Helm-\u0447\u0430\u0440\u0442\u043e\u043c, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 kubepkg-recipes, \u0432 \u043d\u0451\u043c \u0441\u0435\u0439\u0447\u0430\u0441 49 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043e\u0442 cert-manager \u0438 Cilium \u0434\u043e vLLM \u0438 Milvus.helm install kubepkg oci:\/\/ghcr.io\/kuberoot-dev\/charts\/kubepkg \\  &#8212;namespace kubepkg-system &#8212;create-namespace &#8212;waitcurl -fsSLO https:\/\/raw.githubusercontent.com\/kuberoot-dev\/kubepkg-recipes\/main\/keys\/index.pubkubepkg repo add main https:\/\/kuberoot-dev.github.io\/kubepkg-recipes\/index.yaml &#8212;public-key index.pub\u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u044d\u0442\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c.\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 kubepkg plan \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442 \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-500148","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500148","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=500148"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500148\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}