{"id":299396,"date":"2020-02-28T03:00:09","date_gmt":"2020-02-28T03:00:09","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=299396"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=299396","title":{"rendered":"\u0423\u0447\u0438\u043c\u0441\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u0427\u0430\u0441\u0442\u044c 3. Helm"},"content":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/490302\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m-\/vr\/tx\/m-vrtxtrajsojffpookrbcljlmo.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u0447\u0430\u0441\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 &quot;\u0423\u0447\u0438\u043c\u0441\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b&quot;, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e Helm 3. \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/488796\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 Kubernetes \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 2 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u0431\u0435\u043a\u0435\u043d\u0434\u0430 \u0438 \u0448\u043b\u044e\u0437\u0430) \u0438 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u0432 Google Kubernetes Engine. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c Helm-\u0447\u0430\u0440\u0442 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 GitHub Pages \u0438 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 GKE \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Helm.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u041f\u043b\u0430\u043d \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439:<\/p>\n<p>  <\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/487922\/\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 Spring Boot, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 Docker<\/a><\/p>\n<p>  <\/p>\n<p><strong><em>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430: Java 11, Spring Boot, Docker, image optimization<\/em><\/strong><\/p>\n<p>  <\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/488796\/\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Kubernetes \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0434\u0435\u043f\u043b\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Google Kubernetes Engine<\/a><\/p>\n<p>  <\/p>\n<p><strong><em>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430: Kubernetes, GKE, resource management, autoscaling, secrets<\/em><\/strong><\/p>\n<p>  <\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0447\u0430\u0440\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Helm 3 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c<\/p>\n<p>  <\/p>\n<p><strong><em>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430: Helm 3, chart deployment<\/em><\/strong><\/p>\n<p>  <\/li>\n<li>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Jenkins \u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u0434\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/p>\n<p>  <\/p>\n<p><strong><em>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430: Jenkins configuration, plugins, separate configs repository<\/em><\/strong><\/p>\n<p>  <\/li>\n<\/ol>\n<p>  <\/p>\n<p>Helm \u2014 \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes. \u0412 Helm \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0447\u0430\u0440\u0442\u0430 \u2014 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 yaml-\u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0447\u0430\u0440\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u0432 \u0430\u0440\u0445\u0438\u0432 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0437\u0430\u043d\u0438\u0437\u043c\u0430 Helm-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0430\u0440\u0442\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>Helm \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Kubernetes \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0432\u043e\u0439\u0441\u0442\u0432. \u042d\u0442\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <em>values.yaml<\/em>, \u0438 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\u0439 Kubernetes-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0447\u0430\u0440\u0442 \u043c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u0440\u0442\u044b, \u043d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 GitHub \u043f\u043e <a href=\"https:\/\/github.com\/Anshelen\/microservices-deploy\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"struktura-charta\">\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0447\u0430\u0440\u0442\u0430<\/h2>\n<p>  <\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0447\u0430\u0440\u0442 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm create &lt;chart-name&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 Helm. \u041d\u0430\u0448 \u0436\u0435 \u0447\u0430\u0440\u0442 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f msvc-chart \u0438 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">. \u2514\u2500\u2500 msvc-chart     \u251c\u2500\u2500 charts     \u251c\u2500\u2500 Chart.yaml     \u251c\u2500\u2500 templates     \u2502   \u251c\u2500\u2500 backend.yaml     \u2502   \u251c\u2500\u2500 gateway.yaml     \u2502   \u251c\u2500\u2500 _helpers.tpl     \u2502   \u251c\u2500\u2500 NOTES.txt     \u2502   \u251c\u2500\u2500 secrets.yaml     \u2502   \u251c\u2500\u2500 service-account.yaml     \u2502   \u251c\u2500\u2500 tests     \u2502   \u2502   \u2514\u2500\u2500 interaction-test.yaml     \u2502   \u2514\u2500\u2500 urls-config.yaml     \u251c\u2500\u2500 values.schema.json     \u2514\u2500\u2500 values.yaml<\/code><\/pre>\n<p>  <\/p>\n<ul>\n<li>\n<p><strong><em>charts\/<\/em><\/strong> \u2014 \u0432 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u0440\u0442\u044b. \u042d\u0442\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0443\u0441\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0440\u0442\u043e\u0432.<\/p>\n<p>  <\/li>\n<li>\n<p><strong><em>Chart.yaml<\/em><\/strong> \u2014 \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0447\u0430\u0440\u0442\u0435 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>  <\/li>\n<li>\n<p>*<strong>templates\/*.yaml*<\/strong> \u2014 \u0444\u0430\u0439\u043b\u044b \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Kuberenetes.<\/p>\n<p>  <\/li>\n<li>\n<p><strong><em>templates\/NOTES.txt<\/em><\/strong> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u043e \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0447\u0430\u0440\u0442\u0430.<\/p>\n<p>  <\/li>\n<li>\n<p>*<strong>templates\/tests\/*.yaml*<\/strong> \u2014 \u0444\u0430\u0439\u043b\u044b \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 Helm.<\/p>\n<p>  <\/li>\n<li>\n<p><strong><em>templates\/_helpers.tpl<\/em><\/strong> \u2014 \u0444\u0430\u0439\u043b \u0441\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0448\u0430\u0431\u043e\u043d\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0447\u0430\u0440\u0442\u0435. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 tpl.<\/p>\n<p>  <\/li>\n<li>\n<p><strong><em>values.yaml<\/em><\/strong> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0447\u0430\u0440\u0442\u0430 \u0441 \u0438\u0445 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>  <\/li>\n<li>\n<p><strong><em>values.schema.json<\/em><\/strong> \u2014 JSON-\u0441\u0445\u0435\u043c\u0430 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438\u0437 <em>values.yaml<\/em>.<\/p>\n<p>  <\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"valuesyaml\">values.yaml<\/h2>\n<p>  <\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0447\u0430\u0440\u0442\u0430 \u2014 \u0444\u0430\u0439\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 <em>values.yaml<\/em>. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441 \u0438\u0445 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0447\u0430\u0440\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0435\u043c\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">backend:   deployment:     name:     replicas: 2   container:     name:     resources: {} #      limits: #        memory: 1024Mi #        cpu: 500m #      requests: #        memory: 512Mi #        cpu: 100m   service:     name:     port: 8080   image:     name: anshelen\/microservices-backend     tag: latest     pullPolicy: IfNotPresent   hpa:     enabled: false     name:     minReplicas: 1     maxReplicas: 3     targetCPUUtilizationPercentage: 50  gateway:   deployment:     name:     replicas: 2   container:     name:     resources: {} #      limits: #        memory: 1024Mi #        cpu: 500m #      requests: #        memory: 512Mi #        cpu: 100m   service:     name:     port: 80 #   Can be one of ClusterIP, NodePort or LoadBalancer     type: LoadBalancer   image:     name: anshelen\/microservices-gateway     tag: latest     pullPolicy: IfNotPresent   hpa:     enabled: false     name:     minReplicas: 1     maxReplicas: 3     targetCPUUtilizationPercentage: 50  secrets:   secret: default-secret  serviceAccount:   # Specifies whether a service account should be created   create: true   # The name of the service account to use.   # If not set and create is true, a name is generated using the release and   # chart names   name: <\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0434\u0440\u0443\u0433\u0438\u0435 \u0436\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 (\u2116 <em>gateway.service.type<\/em>). \u0422\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0438\u0431\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043b\u043e\u043a \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 Kubernetes-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e (\u2116 <em>gateway.container.resources<\/em>).<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b <em>values.schema.json<\/em> \u0441 JSON-\u0441\u0445\u0435\u043c\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0447\u0430\u0440\u0442\u0430. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c, \u043e\u0434\u043d\u0430\u043a\u043e, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0443\u0434\u043e\u0432\u0438\u0449\u043d\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">values.schema.json<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"json\">{   &quot;$schema&quot;: &quot;https:\/\/json-schema.org\/draft-07\/schema#&quot;,   &quot;properties&quot;: {     &quot;backend&quot;: {       &quot;properties&quot;: {         &quot;deployment&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;replicas&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;container&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;resources&quot;: {               &quot;properties&quot;: {                 &quot;limits&quot;: {                   &quot;properties&quot;: {                     &quot;memory&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;number&quot;]                     },                     &quot;cpu&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;number&quot;]                     }                   },                   &quot;type&quot;: &quot;object&quot;                 },                 &quot;requests&quot;: {                   &quot;properties&quot;: {                     &quot;memory&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]                     },                     &quot;cpu&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]                     }                   },                   &quot;type&quot;: &quot;object&quot;                 }               },               &quot;type&quot;: &quot;object&quot;             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;service&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;port&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;image&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: &quot;string&quot;             },             &quot;tag&quot;: {               &quot;type&quot;: &quot;string&quot;             },             &quot;pullPolicy&quot;: {               &quot;enum&quot;: [&quot;IfNotPresent&quot;, &quot;Always&quot;, &quot;Never&quot;]             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;hpa&quot;: {           &quot;properties&quot;: {             &quot;enabled&quot;: {               &quot;type&quot;: &quot;boolean&quot;             },             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;minReplicas&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             },             &quot;maxReplicas&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             },             &quot;targetCPUUtilizationPercentage&quot;: {               &quot;minimum&quot;: 1,               &quot;maximum&quot;: 99,               &quot;type&quot;: &quot;integer&quot;             }           },           &quot;type&quot;: &quot;object&quot;         }       },       &quot;type&quot;: &quot;object&quot;     },     &quot;gateway&quot;: {       &quot;properties&quot;: {         &quot;deployment&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;replicas&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;container&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;resources&quot;: {               &quot;properties&quot;: {                 &quot;limits&quot;: {                   &quot;properties&quot;: {                     &quot;memory&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;number&quot;]                     },                     &quot;cpu&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;number&quot;]                     }                   },                   &quot;type&quot;: &quot;object&quot;                 },                 &quot;requests&quot;: {                   &quot;properties&quot;: {                     &quot;memory&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]                     },                     &quot;cpu&quot;: {                       &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]                     }                   },                   &quot;type&quot;: &quot;object&quot;                 }               },               &quot;type&quot;: &quot;object&quot;             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;service&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;port&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             },             &quot;type&quot;: {               &quot;enum&quot;: [&quot;ClusterIP&quot;, &quot;NodePort&quot;, &quot;LoadBalancer&quot;]             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;image&quot;: {           &quot;properties&quot;: {             &quot;name&quot;: {               &quot;type&quot;: &quot;string&quot;             },             &quot;tag&quot;: {               &quot;type&quot;: &quot;string&quot;             },             &quot;pullPolicy&quot;: {               &quot;enum&quot;: [&quot;IfNotPresent&quot;, &quot;Always&quot;, &quot;Never&quot;]             }           },           &quot;type&quot;: &quot;object&quot;         },         &quot;hpa&quot;: {           &quot;properties&quot;: {             &quot;enabled&quot;: {               &quot;type&quot;: &quot;boolean&quot;             },             &quot;name&quot;: {               &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]             },             &quot;minReplicas&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             },             &quot;maxReplicas&quot;: {               &quot;minimum&quot;: 1,               &quot;type&quot;: &quot;integer&quot;             },             &quot;targetCPUUtilizationPercentage&quot;: {               &quot;minimum&quot;: 1,               &quot;maximum&quot;: 99,               &quot;type&quot;: &quot;integer&quot;             }           },           &quot;type&quot;: &quot;object&quot;         }       },       &quot;type&quot;: &quot;object&quot;     },     &quot;secrets&quot;: {       &quot;properties&quot;: {         &quot;secret&quot;: {           &quot;type&quot;: [&quot;number&quot;, &quot;string&quot;]         }       },       &quot;type&quot;: &quot;object&quot;     },     &quot;createAccount&quot;: {       &quot;properties&quot;: {         &quot;create&quot;: {           &quot;type&quot;: &quot;boolean&quot;         },         &quot;name&quot;: {           &quot;type&quot;: [&quot;string&quot;, &quot;null&quot;]         }       },       &quot;type&quot;: &quot;object&quot;     }   },   &quot;title&quot;: &quot;Values&quot;,   &quot;type&quot;: &quot;object&quot; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"mehanizm-shablonov\">\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 Helm \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 Kubernetes.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u0430\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d. \u0412 Helm \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 (<code>Release<\/code>), \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 (<code>Values<\/code>) \u0438\u043b\u0438 \u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0447\u0430\u0440\u0442\u0430 (<code>Chart<\/code>). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <em>secrets.secret<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c <code>{{ .Values.secrets.secret }}<\/code>. <\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 &quot;\u043a\u043e\u043d\u0432\u0435\u0435\u0440&quot; (&quot;pipeline&quot;) \u2014 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: <code>{{ .Chart.AppVersion | quote }}<\/code>. \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>define<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.someFragment&quot; -}} ... {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>include<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{ include &quot;msvc-chart.someFragment&quot; . }}<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>{{-<\/code> \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 <code>{{<\/code> \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0441\u0442\u0443 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b. \u0427\u0430\u0441\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432 \u043b\u0443\u0447\u0448\u0435 \u0438\u0445 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 <code>{{- include &quot;msvc-chart.someFragment&quot; . | nindent 4 }}<\/code> \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f \u0440\u043e\u0432\u043d\u043e 4 \u043f\u0440\u043e\u0431\u0435\u043b\u0430.<\/p>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423239\/\">\u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"_helperstpl\">_helpers.tpl<\/h2>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Helm \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0434\u0435\u043b\u0435\u043d\u043e \u043c\u0435\u0442\u043a\u0430\u043c \u0438 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Kubernetes \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f, \u0430 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0440\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u043a\u043e\u043d\u0444\u0438\u043b\u0438\u043a\u0442\u043e\u0432 \u0438\u043c\u0435\u043d. \u0422\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0447\u0430\u0440\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0432 \u043e\u0434\u043d\u043e\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0430 \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442, \u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0430 \u0438\u043c\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 <code>Release.Name<\/code>.<\/p>\n<p>  <\/p>\n<h4 id=\"metki\">\u041c\u0435\u0442\u043a\u0438<\/h4>\n<p>  <\/p>\n<p>\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.selectorLabels&quot; -}} app.kubernetes.io\/name: {{ .Chart.Name }} app.kubernetes.io\/instance: {{ .Release.Name }} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p><code>.Chart.Name<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u0438\u043c\u044f \u0447\u0430\u0440\u0442\u0430 (&#8216;msvc-chart&#8217; \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435). \u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u043a \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c\u0438, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/helm.sh\/docs\/topics\/chart_best_practices\/labels\/\">\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f\u043c<\/a> Helm.<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u044f \u0447\u0430\u0440\u0442\u0430 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.chart&quot; -}} {{- printf &quot;%s-%s&quot; .Chart.Name .Chart.Version | replace &quot;+&quot; &quot;_&quot; | trunc 63 | trimSuffix &quot;-&quot; -}} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0447\u0430\u0440\u0442\u0430 \u0441 \u0435\u0433\u043e \u0432\u0435\u0440\u0441\u0438\u0435\u0439, \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0434\u043b\u0438\u043d\u0443 63 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043c\u0435\u0442\u043e\u043a \u0432 Kubernetes) \u0438 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u0441\u0443\u0444\u0444\u0438\u043a\u0441. \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c\u0438 \u0432 Helm. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438 \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u043c\u0435\u043d Kubernetes-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 DNS \u0441\u0438\u0441\u0442\u0435\u043c\u044b).<\/p>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043a\u0438, \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432-Kubernetes:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.labels&quot; -}} helm.sh\/chart: {{ include &quot;msvc-chart.chart&quot; . }} {{ include &quot;msvc-chart.selectorLabels&quot; . }} {{- if .Chart.AppVersion }} app.kubernetes.io\/version: {{ .Chart.AppVersion | quote }} {{- end }} app.kubernetes.io\/managed-by: {{ .Release.Service }} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0442\u043e\u0433\u043e, \u043f\u0440\u0438 \u0438\u043c\u0435\u043d\u0438 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 &#8216;msvc-project&#8217;, \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u043a \u043d\u0430\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm.sh\/chart: msvc-chart-1.0.0 app.kubernetes.io\/name: msvc-chart app.kubernetes.io\/instance: msvc-project app.kubernetes.io\/version: 1.0.0 app.kubernetes.io\/managed-by: Helm<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"imena-obektov-kubernetes\">\u0418\u043c\u0435\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Kubernetes<\/h4>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0435 \u0438\u043c\u0435\u043b\u0438 \u0434\u0435\u043b\u0430 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Kubernetes \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c ServiceAccount. \u042d\u0442\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u044f\u043c\u0438 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438. \u041f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438 \u043b\u043e\u0433\u0438\u043d\u0430, \u043d\u0438 \u043f\u0430\u0440\u043e\u043b\u044f, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043a\u0435\u043d. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c ServiceAccount \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 ServiceAccount \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u0442\u044c Jenkins \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440.<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c: <\/p>\n<p>  <\/p>\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <em>serviceAccount.create=true<\/em>, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <em>serviceAccount.name<\/em>. \u0418\u043d\u0430\u0447\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f.<\/li>\n<li>\u0415\u0441\u043b\u0438 <em>serviceAccount.create=false<\/em>, \u0442\u043e \u0438\u043c\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>serviceAccount.name<\/em> \u0438\u043b\u0438 \u0436\u0435 &#8216;default&#8217;, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e.<\/li>\n<\/ul>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.serviceAccountName&quot; -}} {{- if .Values.serviceAccount.create -}}     {{ default (printf &quot;%s-%s&quot; .Release.Name .Chart.Name | trunc 63 | trimSuffix &quot;-&quot;) .Values.serviceAccount.name }} {{- else -}}     {{ default &quot;default&quot; .Values.serviceAccount.name }} {{- end -}} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>if<\/code> \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>default<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u0435\u0441\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0432\u0435\u043d <code>null<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0418\u043c\u0435\u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Kubernetes \u0431\u0443\u0434\u0443\u0442 \u043b\u0438\u0431\u043e \u0437\u0430\u0434\u0430\u043d\u044b \u044f\u0432\u043d\u043e, \u043b\u0438\u0431\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u0438 \u0438\u043c\u0435\u043d\u0438 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u0438 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430 \u0448\u043b\u044e\u0437\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.gateway.defaultName&quot; -}} {{- printf &quot;gateway-%s&quot; .Release.Name -}} {{- end -}}  {{- define &quot;msvc-chart.gateway.deployment.name&quot; -}} {{- default (include &quot;msvc-chart.gateway.defaultName&quot; .) .Values.gateway.deployment.name | trunc 63 | trimSuffix &quot;-&quot; -}} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"obnovlenie-podov-pri-izmenenii-konfiguracionnyh-svoystv\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043e\u0432 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432<\/h4>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u0415\u0441\u043b\u0438 \u043c\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044e, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u0430, \u0442\u043e Helm \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0442\u043e\u043b\u044c\u043a\u043e Kubernetes-\u043e\u0431\u044a\u0435\u043a\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u0430. \u0410 \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435, \u0442\u043e \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0414\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043f\u043e\u0434\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b. \u0412 Helm \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 <em>checksum\/config<\/em>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043f\u043e\u0434. \u0418 \u0435\u0441\u043b\u0438 Helm \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0443\u043c\u043c\u0430 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c, \u0442\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>  <\/p>\n<p>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- define &quot;msvc-chart.propertiesHash&quot; -}} {{- $secrets := include (print $.Template.BasePath &quot;\/secrets.yaml&quot;) . | sha256sum -}} {{- $urlConfig := include (print $.Template.BasePath &quot;\/urls-config.yaml&quot;) . | sha256sum -}} {{ print $secrets $urlConfig | sha256sum }} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>print<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 <code>$.Template.BasePath<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 (<em>_helpers.tpl<\/em>). \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 <code>include<\/code> \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u043c, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0445\u0435\u0448-\u0441\u0443\u043c\u043c\u0443 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>$secrets<\/code>. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u0441 ConfigMap, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u043e\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  <\/p>\n<p>\u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0447\u0442\u043e \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <code>include<\/code> \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c &#8216;. &#8216;, \u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c &#8216;\\$&#8217; \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Template. \u0412 Helm \u043f\u043e\u0434 &#8216;. &#8216; \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (scope), \u0430 &#8216;\\$&#8217; \u2014 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u0441\u044b\u043b\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0414\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0445\u0441\u044f <a href=\"https:\/\/helm.sh\/docs\/chart_template_guide\/control_structures\/\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>.<\/p>\n<p>  <\/p>\n<h2 id=\"shablony\">\u0428\u0430\u0431\u043b\u043e\u043d\u044b<\/h2>\n<p>  <\/p>\n<h4 id=\"secret-secretsyaml\">Secret (secrets.yaml)<\/h4>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apiVersion: v1 kind: Secret metadata:   name: {{ include &quot;msvc-chart.secrets.defaultName&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }} type: Opaque stringData:   secret: {{ .Values.secrets.secret }}<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"configmap-urls-configyaml\">ConfigMap (urls-config.yaml)<\/h4>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apiVersion: v1 kind: ConfigMap metadata:   name: {{ include &quot;msvc-chart.urlConfig.defaultName&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }} data:   BACKEND_URL: &quot;http:\/\/{{ include &quot;msvc-chart.backend.service.name&quot; . }}:{{ .Values.backend.service.port }}\/&quot; <\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"serviceaccount-service-accountyaml\">ServiceAccount (service-account.yaml)<\/h4>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{{- if .Values.serviceAccount.create -}} apiVersion: v1 kind: ServiceAccount metadata:   name: {{ include &quot;msvc-chart.serviceAccountName&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}  ---  apiVersion: rbac.authorization.k8s.io\/v1 kind: RoleBinding metadata:   name: &quot;{{ include &quot;msvc-chart.serviceAccountName&quot; . }}-binding&quot;   labels:       {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }} subjects: - kind: ServiceAccount   name: {{ include &quot;msvc-chart.serviceAccountName&quot; . }}   namespace: {{ .Release.Namespace }} roleRef:   kind: ClusterRole   name: admin   apiGroup: rbac.authorization.k8s.io {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <em>serviceAccount.create=true<\/em>, \u0442\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0438 \u0434\u0430\u0435\u043c \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c.<\/p>\n<p>  <\/p>\n<h4 id=\"deployments-backendyaml-i-gatewayyaml\">Deployments (backend.yaml \u0438 gateway.yaml)<\/h4>\n<p>  <\/p>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 <em>gateway.yaml<\/em> \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0441\u043b\u043e\u044e \u0448\u043b\u044e\u0437\u0430, \u0430 \u0432 <em>backend.yaml<\/em> \u2014 \u0441\u043b\u043e\u044e \u0431\u0435\u043a\u0435\u043d\u0434\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430, \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 HorizontalPodAutoscaler&#8217;\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0433\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <em>gateway.container.resources.requests.cpu<\/em> \u2014 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 Kubernetes \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  <\/p>\n<p><strong>gateway.yaml<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1 kind: Deployment metadata:   name: {{ include &quot;msvc-chart.gateway.deployment.name&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}     tier: gateway spec:   replicas: {{ .Values.gateway.deployment.replicas }}   selector:     matchLabels:       {{- include &quot;msvc-chart.selectorLabels&quot; . | nindent 6 }}       tier: gateway   strategy:     rollingUpdate:       maxSurge: 25%       maxUnavailable: 25%     type: RollingUpdate   template:     metadata:       annotations:         checksum\/config: {{ include &quot;msvc-chart.propertiesHash&quot; . }}       labels:         {{- include &quot;msvc-chart.selectorLabels&quot; . | nindent 8 }}         tier: gateway     spec:       serviceAccountName: {{ include &quot;msvc-chart.serviceAccountName&quot; . }}       containers:         - name: {{ include &quot;msvc-chart.gateway.container.name&quot; . }}           image: &quot;{{ .Values.gateway.image.name }}:{{ .Values.gateway.image.tag }}&quot;           imagePullPolicy: {{ .Values.gateway.image.pullPolicy }}           envFrom:             - configMapRef:                 name: {{ include &quot;msvc-chart.urlConfig.defaultName&quot; . }}           env:             - name: SECRET               valueFrom:                 secretKeyRef:                   name: {{ include &quot;msvc-chart.secrets.defaultName&quot; . }}                   key: secret           readinessProbe:             httpGet:               path: \/actuator\/health               port: 8080             initialDelaySeconds: 5             periodSeconds: 3           ports:             - containerPort: 8080               protocol: TCP           resources:             {{- toYaml .Values.gateway.container.resources | nindent 12 }}  ---  apiVersion: v1 kind: Service metadata:   name: {{ include &quot;msvc-chart.gateway.service.name&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}     tier: gateway spec:   type: {{ .Values.gateway.service.type }}   ports:     - port: {{ .Values.gateway.service.port }}       protocol: TCP       targetPort: 8080       name: http   selector:     {{- include &quot;msvc-chart.selectorLabels&quot; . | nindent 4 }}     tier: gateway  ---  {{- if .Values.gateway.hpa.enabled -}} apiVersion: autoscaling\/v1 kind: HorizontalPodAutoscaler metadata:   name: {{ include &quot;msvc-chart.gateway.hpa.name&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}     tier: gateway spec:   scaleTargetRef:     apiVersion: apps\/v1     kind: Deployment     name: {{ include &quot;msvc-chart.gateway.deployment.name&quot; . }}   minReplicas: {{ .Values.gateway.hpa.minReplicas }}   maxReplicas: {{ .Values.gateway.hpa.maxReplicas }}   targetCPUUtilizationPercentage: {{ .Values.gateway.hpa.targetCPUUtilizationPercentage }} {{- end -}}<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0449\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 &quot;checksum\/config&quot;, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0432\u044b\u0448\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430 \u043a ServiceAccount (<em>spec.template.spec.serviceAccountName<\/em>). \u0412 \u0431\u043b\u043e\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>toYaml<\/em> \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <em>backend.container.resources<\/em> \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <em>values.yaml<\/em> \u0432 \u0448\u0430\u0431\u043b\u043e\u043d.<\/p>\n<p>  <\/p>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0430 \u0431\u0435\u043a\u0435\u043d\u0434\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">backend.yaml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">apiVersion: apps\/v1 kind: Deployment metadata:   name: {{ include &quot;msvc-chart.backend.deployment.name&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}     tier: backend spec:   replicas: {{ .Values.backend.deployment.replicas }}   selector:     matchLabels:       {{- include &quot;msvc-chart.selectorLabels&quot; . | nindent 6 }}       tier: backend   strategy:     rollingUpdate:       maxSurge: 25%       maxUnavailable: 25%     type: RollingUpdate   template:     metadata:       labels:         {{- include &quot;msvc-chart.selectorLabels&quot; . | nindent 8 }}         tier: backend     spec:       serviceAccountName: {{ include &quot;msvc-chart.serviceAccountName&quot; . }}       containers:         - name: {{ include &quot;msvc-chart.backend.container.name&quot; . }}           image: &quot;{{ .Values.backend.image.name }}:{{ .Values.backend.image.tag }}&quot;           imagePullPolicy: {{ .Values.backend.image.pullPolicy }}           ports:             - containerPort: 8080               protocol: TCP           readinessProbe:             httpGet:               path: \/actuator\/health               port: 8080             initialDelaySeconds: 5             periodSeconds: 3           resources:             {{- toYaml .Values.backend.container.resources | nindent 12 }}  ---  apiVersion: v1 kind: Service metadata:   name: {{ include &quot;msvc-chart.backend.service.name&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}     tier: backend spec:   ports:     - port: {{ .Values.backend.service.port }}       protocol: TCP       targetPort: 8080       name: http   selector:     {{- include &quot;msvc-chart.selectorLabels&quot; . | nindent 4 }}     tier: backend  ---  {{- if .Values.backend.hpa.enabled -}} apiVersion: autoscaling\/v1 kind: HorizontalPodAutoscaler metadata:   name: {{ include &quot;msvc-chart.backend.hpa.name&quot; . }}   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}     tier: backend spec:   scaleTargetRef:     apiVersion: apps\/v1     kind: Deployment     name: {{ include &quot;msvc-chart.backend.deployment.name&quot; . }}   minReplicas: {{ .Values.backend.hpa.minReplicas }}   maxReplicas: {{ .Values.backend.hpa.maxReplicas }}   targetCPUUtilizationPercentage: {{ .Values.backend.hpa.targetCPUUtilizationPercentage }} {{- end -}}<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h2 id=\"notestxt\">NOTES.txt<\/h2>\n<p>  <\/p>\n<p>\u0424\u0430\u0439\u043b <em>NOTES.txt<\/em> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0447\u0430\u0440\u0442\u0430, \u043b\u0438\u0431\u043e \u0436\u0435 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 (<code>helm status &lt;name&gt;<\/code>).<\/p>\n<p>  <\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0448\u043b\u044e\u0437\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">1. Get the application URL by running these commands: {{- if contains &quot;NodePort&quot; .Values.gateway.service.type }}   export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath=&quot;{.spec.ports[0].nodePort}&quot; services {{ include &quot;msvc-chart.gateway.service.name&quot; . }})   export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath=&quot;{.items[0].status.addresses[0].address}&quot;)   echo http:\/\/$NODE_IP:$NODE_PORT {{- else if contains &quot;LoadBalancer&quot; .Values.gateway.service.type }}      NOTE: It may take a few minutes for the LoadBalancer IP to be available.            You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include &quot;msvc-chart.gateway.service.name&quot; . }}'   export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include &quot;msvc-chart.gateway.service.name&quot; . }} -o jsonpath=&quot;{.status.loadBalancer.ingress[0].ip}&quot;)   echo http:\/\/$SERVICE_IP:{{ .Values.gateway.service.port }} {{- else if contains &quot;ClusterIP&quot; .Values.gateway.service.type }}   export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l &quot;app.kubernetes.io\/name= {{ .Chart.Name }},app.kubernetes.io\/instance={{ .Release.Name }},tier=gateway&quot; -o jsonpath=&quot;{.items[0].metadata.name}&quot;)   echo &quot;Visit http:\/\/127.0.0.1:8080 to use your application&quot;   kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:8080 {{- end }} 2. Get service account token:   export TOKEN=$(kubectl get serviceaccount {{ include &quot;msvc-chart.serviceAccountName&quot; . }} -n {{ .Release.Namespace }} -o go-template --template='{{`{{range .secrets}}{{.name}}{{&quot;\\n&quot;}}{{end}}`}}')   export TOKEN_DECODED=$(kubectl get secrets &quot;$TOKEN&quot; -n {{ .Release.Namespace }} -o go-template --template '{{`{{index .data &quot;token&quot;}}`}}' | base64 -d)   echo $TOKEN_DECODED<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"chartyaml\">Chart.yaml<\/h2>\n<p>  <\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0447\u0430\u0440\u0442\u0435. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u2014 <em>version<\/em> \u0438 <em>appVersion<\/em>. <em>version<\/em> \u2014 \u0432\u0435\u0440\u0441\u0438\u044f \u0447\u0430\u0440\u0442\u0430, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0435\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. <em>appVersion<\/em> \u2014 \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0447\u0430\u0440\u0442\u0430. \u041f\u043e\u043b\u0435 <em>type<\/em> \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#8216;application&#8217; \u0438 &#8216;library&#8217; \u2014 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0430\u0440\u0442\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apiVersion: v2 name: msvc-chart version: 1.0.0 description: Microservices project type: application sources:   - https:\/\/github.com\/Anshelen\/microservices-backend   - https:\/\/github.com\/Anshelen\/microservices-gateway   - https:\/\/github.com\/Anshelen\/microservices-deploy maintainers:   - name: Anton Shelenkov     email: anshelen@yandex.ru     url: https:\/\/shelenkov.herokuapp.com appVersion: 1.0.0<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"testy\">\u0422\u0435\u0441\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>Helm \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u041e\u043d\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>helm test &lt;name&gt;<\/code> \u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 \u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c (\u2116 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445). \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c Kubernetes-\u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0435 \u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 http-\u0437\u0430\u043f\u0440\u043e\u0441. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0448\u0442\u0430\u0442\u043d\u043e, \u0442\u043e \u0442\u0435\u0441\u0442 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0448 \u0442\u0435\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0434\u0435\u043b\u0430\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0448\u043b\u044e\u0437\u0430. \u0422\u0435\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 Kubernetes-\u043e\u0431\u044a\u0435\u043a\u0442\u0430 Job \u2014 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u043d\u0430\u0434 \u043f\u043e\u0434\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u0438, Job \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 3 \u0440\u0430\u0437\u0430 (\u043e\u043f\u0446\u0438\u044f <em>backoffLimit<\/em>). \u041e\u0431\u0440\u0430\u0449\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 helm.sh\/hook \u0438 helm.sh\/hook-delete-policy. \u041e\u043d\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 Helm, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0438 \u0447\u0442\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0430.<\/p>\n<p>  <\/p>\n<p><strong>interaction-test.yaml<\/strong>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">apiVersion: batch\/v1 kind: Job metadata:   name: &quot;{{ .Release.Name }}-interaction-test&quot;   labels:     {{- include &quot;msvc-chart.labels&quot; . | nindent 4 }}   annotations:     &quot;helm.sh\/hook&quot;: test     &quot;helm.sh\/hook-delete-policy&quot;: hook-succeeded,hook-failed spec:   template:     spec:       containers:       - name: test         image: busybox         command: ['wget']         args:  ['{{ include &quot;msvc-chart.gateway.service.name&quot; . }}:{{ .Values.gateway.service.port }}\/']       restartPolicy: Never   backoffLimit: 3<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"rabota-s-helm\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 Helm<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Helm \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u0432\u0430\u0436\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: <strong><em>\u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 Helm, \u0430 \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e kubectl<\/em><\/strong>. Helm \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0435\u043a\u0440\u0435\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 kubectl, \u0442\u043e Helm \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0438 \u044d\u0442\u043e \u0447\u0440\u0435\u0432\u0430\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<h4 id=\"ustanovka-charta\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0430\u0440\u0442\u0430<\/h4>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0447\u0430\u0440\u0442\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f Kubernetes-\u043e\u0431\u044a\u0435\u043a\u0442\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm install --dry-run --debug &lt;name&gt; &lt;chart-folder&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0447\u0430\u0440\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u0432 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044e \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <code>&lt;name&gt;<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm install &lt;name&gt; &lt;chart-folder&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044e \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 values.yaml, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u0438 <code>--set &lt;key&gt;=&lt;value&gt;<\/code>. \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 yaml-\u0444\u0430\u0439\u043b\u0435 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043e\u043f\u0446\u0438\u0435\u0439 <code>-f &lt;overriden-values.yaml&gt;<\/code>. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>-n &lt;namespace&gt;<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0430\u0440\u0442.<\/p>\n<p>  <\/p>\n<h4 id=\"obnovlenie-installyacii\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438<\/h4>\n<p>  <\/p>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm upgrade &lt;name&gt; &lt;chart-folder&gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043f\u0446\u0438\u0438 <code>-f &lt;file&gt;<\/code> \u0438 <code>--set &lt;key&gt;=&lt;value&gt;<\/code>. \u0414\u0435\u0444\u043e\u043b\u0442\u043d\u043e Helm \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <code>--reuse-values<\/code>. \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Helm \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <a href=\"https:\/\/github.com\/helm\/helm\/issues\/7509\">\u0431\u0430\u0433<\/a>, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>--set<\/code> \u0438 <code>--reuse-values<\/code> \u043d\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u0445, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm install &lt;name&gt; &lt;chart-folder&gt; helm upgrade &lt;name&gt; &lt;chart-folder&gt; --set key=value --reuse-values<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043e\u0431\u043e\u0439\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0447\u0430\u0440\u0442, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm install &lt;name&gt; &lt;chart-folder&gt; --set _=null<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"poluchenie-informacii-ob-installyaciyah\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f\u0445<\/h4>\n<p>  <\/p>\n<p><code>helm list<\/code> \u2014 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 Helm&#8217;\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  <code>helm status &lt;name&gt;<\/code> \u2014 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438.<br \/>  <code>helm history &lt;name&gt;<\/code> \u2014 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438. \u041f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0447\u0430\u0440\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0435\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438.<br \/>  <code>helm get values &lt;name&gt;<\/code> \u2014 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438. \u0417\u0430\u0434\u0430\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>--revision n<\/code>, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u044d\u0442\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f n-\u043d\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438.<br \/>  <code>helm show values &lt;chart-folder&gt;<\/code> \u2014 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u0447\u0430\u0440\u0442\u0430. \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0444\u0430\u0439\u043b <em>values.yaml<\/em>.<br \/>  <code>helm get manifest &lt;name&gt;<\/code> \u2014 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 Helm&#8217;\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<h4 id=\"prochie-komandy\">\u041f\u0440\u043e\u0447\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/h4>\n<p>  <\/p>\n<p><code>helm rollback &lt;name&gt; &lt;revision-num&gt;<\/code> \u2014 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0435\u0432\u0438\u0437\u0438\u0438.<br \/>  <code>helm uninstall &lt;name&gt;<\/code> \u2014 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<h2 id=\"publikaciya-repozitoriya\">\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>Helm-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0440\u0442\u043e\u0432. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u043b\u0438 \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 S3-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u041c\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c GitHub Pages.<\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b index.yaml \u0441\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0447\u0430\u0440\u0442\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0438\u0445 \u0430\u0440\u0445\u0438\u0432\u044b. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u2014 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0430\u0440\u0445\u0438\u0432\u044b \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. <\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043d\u0430\u0448\u0435\u043c GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0430\u043f\u043a\u0443 docs \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm package msvc-chart\/ -d docs\/ helm repo index docs\/ --url https:\/\/&lt;github-username&gt;.github.io\/&lt;github-repo-name&gt;\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u043f\u0430\u043a\u0443\u0435\u0442 \u043d\u0430\u0448 \u0447\u0430\u0440\u0442 \u0432 \u0430\u0440\u0445\u0438\u0432 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442 \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 docs. \u0412\u0442\u043e\u0440\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u0439\u043b index.yaml \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435. \u0412 \u043e\u043f\u0446\u0438\u0438 url \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043f\u043a\u0438 \u0441 \u0430\u0440\u0445\u0438\u0432\u0430\u043c\u0438. \u041e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0447\u0430\u0440\u0442\u0430 \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u0430\u043b\u0435\u0435 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0443\u0448\u0438\u043c, \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c GitHub Pages, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u0433\u0440\u0430\u0444\u0435 &#8216;Source&#8217; \u043e\u043f\u0446\u0438\u044e &#8216;master branch \/docs folder&#8217;.<\/p>\n<p>  <\/p>\n<h2 id=\"deploy-sistemy\">\u0414\u0435\u043f\u043b\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h2>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043d\u0430\u0448\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 GKE, \u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Helm.<\/p>\n<p>  <\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 \u0438 \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a \u0442\u0435\u043a\u0443\u0449\u0438\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl create namespace msvc-ns kubectl config set-context --current --namespace=msvc-ns<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0432\u043e\u0442 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u0414\u0430\u043b\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430\u0448 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 Helm \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c msvc-repo \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0430\u0440\u0442\u043e\u0432 (URL \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Helm-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439):<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm repo add msvc-repo https:\/\/anshelen.github.io\/microservices-deploy\/ helm repo update<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0430\u0440\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm install msvc-project msvc-repo\/msvc-chart \\ --set backend.container.resources.requests.cpu=50m \\ --set backend.hpa.enabled=true \\ --set gateway.container.resources.requests.cpu=50m \\ --set gateway.hpa.enabled=true \\ --set secrets.secret=secret<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0442\u0435\u0441\u0442\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm test msvc-project <\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm upgrade msvc-project msvc-repo\/msvc-chart \\ --set secrets.secret=new-secret \\ --reuse-values<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043f\u0443\u0441\u0442\u044f \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0448\u043b\u044e\u0437\u0443 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442 \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d.<\/p>\n<p>  <\/p>\n<h2 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 Helm-\u0447\u0430\u0440\u0442 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0435\u0433\u043e \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 GKE. \u0421 Helm \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0448\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0432 Git \u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u044f\u0434 \u0440\u0443\u0447\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u2014 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437, \u0437\u0430\u043f\u0443\u0448\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0440\u0435\u0435\u0441\u0442\u0440 Docker, \u043f\u0440\u0438\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Helm. <\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u0434\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Jenkins \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/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\/post\/490302\/\"> https:\/\/habr.com\/ru\/post\/490302\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/490302\/\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m-\/vr\/tx\/m-vrtxtrajsojffpookrbcljlmo.png\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u0447\u0430\u0441\u0442\u044c \u0432 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 &quot;\u0423\u0447\u0438\u043c\u0441\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b&quot;, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e Helm 3. \u0412 <a href=\"https:\/\/habr.com\/ru\/post\/488796\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 Kubernetes \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0443\u0447\u0435\u0431\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 2 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u0431\u0435\u043a\u0435\u043d\u0434\u0430 \u0438 \u0448\u043b\u044e\u0437\u0430) \u0438 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043b\u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u0432 Google Kubernetes Engine. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c Helm-\u0447\u0430\u0440\u0442 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 GitHub Pages \u0438 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 GKE \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Helm.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-299396","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299396","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=299396"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299396\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=299396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=299396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=299396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}