{"id":315446,"date":"2020-12-24T09:00:31","date_gmt":"2020-12-24T09:00:31","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=315446"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=315446","title":{"rendered":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e Tarantool Cartridge \u0432 Kubernetes"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/51\/nc\/3l\/51nc3lhzs07-creucuc4g5mztsg.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0418\u0432\u0430\u043d, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/tarantool\/cartridge\">Tarantool Cartridge<\/a> \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/github.com\/tarantool\/tarantool-operator\">Tarantool Operator<\/a>. \u041c\u044b \u043f\u0440\u043e\u0439\u0434\u0435\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<li>\u0423\u043f\u0430\u043a\u0443\u0435\u043c \u0435\u0433\u043e \u0432 docker<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 kubernetes \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/li>\n<li>\u041c\u0430\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<li>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/li>\n<li>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/li>\n<li>\u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/li>\n<li>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435<\/li>\n<\/ul>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"ustanavlivaem-instrumenty\">\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/h2>\n<p>  <\/p>\n<p>\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<ol>\n<li>\n<p><strong>cartridge-cli<\/strong> \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 cartridge-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 2.3.0 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435.<br \/>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <a href=\"https:\/\/github.com\/tarantool\/cartridge-cli#installation\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <em>cartridge<\/em>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ cartridge version --- Tarantool Cartridge CLI v2.3.0 linux\/amd64 commit: 06a5dad<\/code><\/pre>\n<p>  <\/li>\n<li>\n<p><strong>kubectl<\/strong> \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 kubernetes. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u043b\u0438\u0437 \u0432\u0435\u0440\u0441\u0438\u0438 <em>1.16<\/em> \u0438\u043b\u0438 \u0432\u044b\u0448\u0435.<br \/>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/kubernetes.io\/ru\/docs\/tasks\/tools\/install-kubectl\/\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl version --client --- Client Version: version.Info{Major:&quot;1&quot;, Minor:&quot;16&quot;, GitVersion:&quot;v1.16.0&quot;, GitCommit:&quot;2bd9643cee5b3b3a5ecbd3af49d09018f0773c77&quot;, GitTreeState:&quot;clean&quot;, BuildDate:&quot;2019-09-18T14:36:53Z&quot;,     GoVersion:&quot;go1.12.9&quot;, Compiler:&quot;gc&quot;, Platform:&quot;linux\/amd64&quot;}<\/code><\/pre>\n<p>  <\/li>\n<li>\n<p><strong>helm<\/strong> \u2014 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Kubernetes.<br \/>  \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0440\u0435\u043b\u0438\u0437 \u0432\u0435\u0440\u0441\u0438\u0438 <em>3.3.x<\/em>. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/helm.sh\/docs\/intro\/install\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm version --- version.BuildInfo{Version:&quot;v3.3.1&quot;, GitCommit:&quot;249e5215cde0c3fa72e27eb7a30e8d55c9696144&quot;, GitTreeState:&quot;clean&quot;, GoVersion:&quot;go1.14.7&quot;}<\/code><\/pre>\n<p>  <\/li>\n<li>\n<p><strong>minikube<\/strong> \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes. \u041d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0432\u0435\u0440\u0441\u0438\u0438 1.12 \u0438 \u0432\u044b\u0448\u0435. \u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/kubernetes.io\/ru\/docs\/tasks\/tools\/install-minikube\/\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ minikube version --- minikube version: v1.12.3 commit: 2243b4b97c131e3244c5f014faedca0d846599f5-dirty<\/code><\/pre>\n<p>  <\/li>\n<li>\n<p><strong>kind<\/strong> (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u2014 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e minikube. \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <a href=\"https:\/\/kind.sigs.k8s.io\/docs\/user\/quick-start\/#installation\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kind version kind v0.9.0 go1.15.2 linux\/amd64<\/code><\/pre>\n<p>  <\/li>\n<\/ol>\n<p>  <\/p>\n<h2 id=\"sozdaem-prilozhenie\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>test-app<\/code> \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <code>cartridge-cli<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ cartridge create --name test-app ---    \u2022 Create application test-app    \u2022 Generate application files    \u2022 Initialize application git repository    \u2022 Application &quot;test-app&quot; created successfully<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>test-app<\/code> \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ ls test-app --- ...  instances.yaml test-app-scm-1.rockspec ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0438 \u0443\u043c\u0435\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 HTTP GET \u0437\u0430\u043f\u0440\u043e\u0441 <code>\/hello<\/code>. <\/p>\n<p>  <\/p>\n<p><strong>NOTE<\/strong> \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e cartridge \u0432 <em>test-app-scm-1.rockspec<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">dependencies = {     ...     'cartridge == 2.3.0-1',     ... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f <strong>cartridge<\/strong> \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c <strong>&gt;= 2.3.0<\/strong>. \u0421 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 cartridge \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 DNS-\u0430\u0434\u0440\u0435\u0441\u0443 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Kubernetes. \u0414\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043d\u0438\u0436\u0435 2.3.0 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u0442\u044c \u043f\u043e <a href=\"https:\/\/github.com\/tarantool\/tarantool-operator\/blob\/master\/examples\/kv\/key-value-store\/init.lua#L27-L71\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"sobiraem-prilozhenie\">\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0435\u0440\u0435\u043c docker-\u043e\u0431\u0440\u0430\u0437 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cartridge-cli:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ cartridge pack docker --tag vanyarock01\/test-app:0.1.0-0-g68f6117 --- ... Running in 0ffbd57a0edf Removing intermediate container 0ffbd57a0edf  ---&gt; aceef7a3be63  ---&gt; aceef7a3be63 Successfully built aceef7a3be63 Successfully tagged test-app:0.1.0-0-g68f6117    \u2022 Created result image test-app:0.1.0-0-g68f6117    \u2022 Application was successfully packed<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0432 registry:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ docker push vanyarock01\/test-app:0.1.0-0-g68f6117 --- The push refers to repository [docker.io\/vanyarock01\/test-app] b327b35afe0a: Pushed  de30ed3f758d: Pushed  3c8808fbd85d: Pushed  291f6e44771a: Pushed  0.1.0-0-g275baa8: digest: sha256:5b3b92a615b34c7f132e72e2d61f692cf2091ca28be27bbbfed98106398d1c19 size: 1160<\/code><\/pre>\n<p>  <\/p>\n<p><strong>NOTE<\/strong> <em>\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0447\u0435\u0440\u0435\u0437 <code>docker login<\/code> \u0438 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0446\u0435\u043b\u0435\u0432\u043e\u043c\u0443 registry<\/em>.<\/p>\n<p>  <\/p>\n<h2 id=\"sozdaem-klaster-kubernetes\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes<\/h2>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440.<\/p>\n<p>  <\/p>\n<h3 id=\"minikube\">Minikube<\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes \u0432\u0435\u0440\u0441\u0438\u0438 1.16.4 \u0441 \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e RAM 4Gb (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b).<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ minikube start --kubernetes-version v1.16.4 --memory 4096 ---   minikube v1.12.3 on Ubuntu 18.10   Automatically selected the docker driver. Other choices: kvm2, virtualbox   Starting control plane node minikube in cluster minikube   Creating docker container (CPUs=2, Memory=4096MB) ...   Preparing Kubernetes v1.16.4 on Docker 19.03.8 ...   Verifying Kubernetes components...   Enabled addons: default-storageclass, storage-provisioner   Done! kubectl is now configured to use &quot;minikube&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0434\u043e\u0436\u0434\u0430\u0432\u0448\u0438\u0441\u044c \u0441\u0442\u0430\u0442\u0443\u0441\u0430 Ready.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl get nodes --- NAME       STATUS   ROLES    AGE   VERSION minikube   Ready    master   21m   v1.16.4<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"kind---alternativa-minikube\">Kind \u2014 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 minikube<\/h3>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kind create cluster  --image kindest\/node:v1.16.4 --- Creating cluster &quot;kind&quot; ...  \u2713 Ensuring node image (kindest\/node:v1.16.4)    \u2713 Preparing nodes     \u2713 Writing configuration    \u2713 Starting control-plane \ufe0f   \u2713 Installing CNI    \u2713 Installing StorageClass   Set kubectl context to &quot;kind-kind&quot; You can now use your cluster with:  kubectl cluster-info --context kind-kind  Not sure what to do next?   Check out https:\/\/kind.sigs.k8s.io\/docs\/user\/quick-start\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl get nodes --- NAME                 STATUS   ROLES    AGE   VERSION kind-control-plane   Ready    master   48s   v1.16.4<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"zapuskaem-prilozhenie\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u043c \u0447\u0435\u0440\u0435\u0437 <code>helm<\/code>. \u0427\u0430\u0440\u0442\u044b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm repo add tarantool https:\/\/tarantool.github.io\/tarantool-operator<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0434\u0432\u0430 \u0447\u0430\u0440\u0442\u0430: <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm search repo tarantool --- NAME                            CHART VERSION   APP VERSION DESCRIPTION                   tarantool\/tarantool-operator    0.0.8           1.16.0      kubernetes tarantool operator tarantool\/cartridge             0.0.8           1.0         A Helm chart for tarantool <\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0430\u0440\u0442 <code>tarantool\/tarantool-operator<\/code> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 tarantool cartridge. <\/p>\n<p>  <\/p>\n<p>\u0427\u0430\u0440\u0442 <code>tarantool\/cartridge<\/code> \u2014 \u044d\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 tarantool cartridge. \u0421 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e\u0442 \u0447\u0430\u0440\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u0442 example-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 3 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432. \u0427\u0430\u0440\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u0440\u0435 \u0441 tarantool-operator&#8217;\u043e\u043c. <\/p>\n<p>  <\/p>\n<p><strong>NOTE<\/strong> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0447\u0430\u0440\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0447\u0430\u0440\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 0.0.8, \u0441\u0442\u0430\u0432\u044c\u0442\u0435 cartridge \u0447\u0430\u0440\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 0.0.8.<\/p>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c <em>tarantool-operator<\/em> \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d <em>tarantool<\/em>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install tarantool-operator tarantool\/tarantool-operator --namespace tarantool --create-namespace --version 0.0.8 --- NAME: tarantool-operator LAST DEPLOYED: Sun Sep 13 23:29:28 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 1 TEST SUITE: None<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043e\u0436\u0434\u0435\u043c\u0441\u044f, \u043f\u043e\u043a\u0430 \u043f\u043e\u0434 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u0432 <strong>\u0440\u0430\u0431\u043e\u0447\u0435\u0435<\/strong> \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl get pods -n tarantool --- NAME                                 READY   STATUS    RESTARTS   AGE tarantool-operator-xxx-yyy   0\/1     Pending   0          3s<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u043f\u043e\u043a\u0430 \u043f\u043e\u0434 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u043e\u0435 Tarantool Operator \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>  <\/p>\n<h3 id=\"tarantool-operator\">Tarantool Operator<\/h3>\n<p>  <\/p>\n<p>\u042d\u0442\u043e kubernetes-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043c\u0435\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 Tarantool Cartridge.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043b\u044f \u043d\u0430\u0441?<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a join \u0443\u0437\u043b\u0430 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0430. \u041a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0438 \u0435\u0441\u043b\u0438 \u0435\u043c\u0443 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043e\u043d \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 Tarantool Operator \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Kubernetes Operator. \u041e\u043d \u043f\u0440\u0435\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u044d\u0442\u0438 \u0441\u0441\u044b\u043b\u043a\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/extend-kubernetes\/operator\/\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442 kubernetes.io<\/a><\/li>\n<li><a href=\"https:\/\/coreos.com\/operators\/\">\u041e\u0431\u0437\u043e\u0440 \u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 (CoreOS)<\/a><\/li>\n<li><a href=\"https:\/\/habr.com\/ru\/company\/lamoda\/blog\/446648\/\">\u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043f\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0442 Lamoda<\/a><\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u043d\u0430\u0448 \u043f\u043e\u0434 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <em>Running<\/em>. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 helm \u0447\u0430\u0440\u0442\u0430 <em>tarantool\/cartridge<\/em>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>  <\/p>\n<h3 id=\"podnimaem-klaster-tarantool-cartridge\">\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Tarantool Cartridge<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043d\u044f\u043b\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. <\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0430\u0440\u0442\u0430 <code>tarantool\/cartridge<\/code>. \u042d\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0430\u0448\u0435 example-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 3 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Tarantool Cartrdige, \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438. <\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0434\u0430\u0434\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>values.yaml<\/code>. \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0435\u0441\u0442\u044c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\"># \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u044b \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. ClusterEnv: dev ClusterName: test-app  # Docker-\u043e\u0431\u0440\u0430\u0437, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b image:   repository: vanyarock01\/test-app   tag: 0.1.0-0-g68f6117   pullPolicy: IfNotPresent  # \u0422\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0430\u044f \u0432 \u0441\u0435\u0431\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 # \u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432. \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 RoleConfig  # \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432: # routers \u0438 storages RoleConfig:   - RoleName: routers  # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432     ReplicaCount: 1    # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435     ReplicaSetCount: 1 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432 \u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0440\u043e\u043b\u0438     DiskSize: 1Gi      # \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430     CPUallocation: 0.1 # \u0427\u0430\u0441\u0442\u044c vCPUs \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440     MemtxMemoryMB: 256 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e RAM \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440     RolesToAssign:     # \u0420\u043e\u043b\u0438 cartridge       - app.roles.custom       - vshard-router    - RoleName: storages     ReplicaCount: 2     ReplicaSetCount: 1     DiskSize: 1Gi     CPUallocation: 0.1     MemtxMemoryMB: 256     RolesToAssign:       - app.roles.custom       - vshard-storage<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 Tarantool Cartridge, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>test-app<\/code>.<\/li>\n<li>\u0412 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0434\u0432\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0430: <code>routers<\/code> \u0438 <code>storages<\/code>.<\/li>\n<li>\u0412 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435 <code>routers<\/code> \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0430\u043d\u0441 Tarantool&#8217;a.<\/li>\n<li>\u0412 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435 <code>storages<\/code> \u0434\u0432\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 Tarantool&#8217;a \u2014 \u043c\u0430\u0441\u0442\u0435\u0440 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430.<\/li>\n<li>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u0440\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <code>RolesToAssign<\/code>.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install -f values.yaml test-app tarantool\/cartridge --namespace tarantool --version 0.0.8 --- NAME: test-app LAST DEPLOYED: Mon Sep 14 10:46:50 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 1<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043e\u0436\u0434\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">kubectl -n tarantool get pods NAME                         READY   STATUS    RESTARTS   AGE routers-0-0                  0\/1     Running   0          10s storages-0-0                 1\/1     Running   0          10s ... tarantool-operator-xxx-yyy   1\/1     Running   0          2m<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u0440\u043e\u043a\u0438\u043d\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0434\u043e\u0432 \u0438 \u0437\u0430\u0439\u0434\u0435\u043c \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434.<\/p>\n<p>  <\/p>\n<p><code>kubectl port-forward -n tarantool routers-0-0 8081:8081<\/code><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c webUI \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Tarantool Cartridge \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"http:\/\/localhost:8081\">http:\/\/localhost:8081<\/a>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uy\/m0\/xw\/uym0xwl4xmgj0toaj0y0khyml78.png\"><\/p>\n<p>  <\/p>\n<h2 id=\"upravlyaem-klasterom\">\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c<\/h2>\n<p>  <\/p>\n<h3 id=\"dobavlyaem-novuyu-repliku\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0443<\/h3>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u041c\u0435\u043d\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 <em>values.yaml<\/em>.<\/li>\n<li>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435: <code>helm upgrade<\/code>.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0417\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <em>ReplicaCount<\/em>. \u0412\u044b\u0441\u0442\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0440\u0430\u0432\u043d\u044b\u043c 3 \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0430 <code>storages<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">- RoleName: storages   ReplicaCount: 3   ReplicaSetCount: 1   DiskSize: 1Gi   CPUallocation: 0.10   MemtxMemoryMB: 256   RolesToAssign: custom.vshard-storage<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm upgrade -f values.yaml test-app tarantool\/cartridge --namespace tarantool --version 0.0.8 --- Release &quot;test-app&quot; has been upgraded. Happy Helming! NAME: test-app LAST DEPLOYED: Tue Sep 15 10:35:55 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 2<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0443\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <strong>Running<\/strong> \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 webUI cartridge.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v_\/eq\/ou\/v_eqoupy3obgxttywu7bgzj_d2m.png\"><\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u0435 <code>storages<\/code> 3 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430, 1 \u043c\u0430\u0441\u0442\u0435\u0440 \u0438 2 \u0440\u0435\u043f\u043b\u0438\u043a\u0438. <\/p>\n<p>  <\/p>\n<h3 id=\"dobavlyaem-shard-replikaset\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0448\u0430\u0440\u0434 (\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442)<\/h3>\n<p>  <\/p>\n<p>\u0417\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <em>ReplicaSetCount<\/em>.<\/p>\n<p>  <\/p>\n<p>\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432 <code>routers<\/code> \u0434\u043e 2:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">- RoleName: routers   ReplicaCount: 1   ReplicaSetCount: 2   DiskSize: 1Gi   CPUallocation: 0.10   MemtxMemoryMB: 256   RolesToAssign: custom.vshard-router<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">helm upgrade -f values.yaml test-app tarantool\/cartridge --namespace tarantool --- Release &quot;test-app&quot; has been upgraded. Happy Helming! NAME: test-app LAST DEPLOYED: Tue Sep 15 10:37:57 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 3<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043e\u0436\u0434\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f: <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fj\/pa\/xm\/fjpaxmsmu-5cvesjbdfdqa1qhic.png\"><\/p>\n<p>  <\/p>\n<h3 id=\"obnovlyaem-versiyu-prilozheniya\">\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430 <em>\/hello<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 HTTP GET \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 &quot;Hello world!&quot;.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043f\u0440\u043e\u043a\u0438\u043d\u0435\u043c \u043f\u043e\u0440\u0442\u044b \u0434\u043e \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl port-forward -n tarantool routers-0-0 8081:8081 --- Forwarding from 127.0.0.1:8081 -&gt; 8081 Forwarding from [::1]:8081 -&gt; 8081<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ curl http:\/\/localhost:8081\/hello --- Hello world!<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 &quot;Hello world, new version of the app!&quot;. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>init<\/code>, \u0432 \u0440\u043e\u043b\u0438 <code>app\/roles\/custom.lua<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d <em>httpd:route<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"lua\">local function init(opts) -- luacheck: no unused args     ...      -- \u043d\u043e\u0432\u044b\u0439 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442     httpd:route({method = 'GET', path = '\/v2\/hello'}, function()         return {body = 'Hello world, new version of the app!'}     end)      ... end<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ cartridge pack docker --tag vanyarock01\/test-app:0.1.0-1-g4577716  ---  ... Successfully tagged vanyarock01\/test-app:0.1.0-1-g4577716    \u2022 Created result image vanyarock01\/test-app:0.1.0-1-g4577716    \u2022 Application was successfully packed<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043e\u0431\u0440\u0430\u0437\u0430 \u0432 docker registry:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ docker push vanyarock01\/test-app:0.1.0-1-g4577716<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 <strong>image.tag<\/strong> \u0432 <code>values.yaml<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">image:   repository: vanyarock01\/test-app   tag: 0.1.0-1-g4577716   pullPolicy: IfNotPresent<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Kubernetes:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm upgrade -f values.yaml test-app tarantool\/cartridge --namespace tarantool --version 0.0.8 --- Release &quot;test-app&quot; has been upgraded. Happy Helming! NAME: test-app LAST DEPLOYED: Tue Sep 15 10:45:53 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 4<\/code><\/pre>\n<p>  <\/p>\n<p>Tarantool Operator \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f <strong>OnDelete<\/strong>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0448\u043b\u043e \u0434\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0437, \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u0436\u0435\u0441\u0442\u043a\u043e &quot;\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c&quot;:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl delete pods -l tarantool.io\/cluster-id=test-app -n tarantool --- pod &quot;routers-0-0&quot; deleted pod &quot;routers-1-0&quot; deleted pod &quot;storages-0-0&quot; deleted pod &quot;storages-0-1&quot; deleted pod &quot;storages-0-2&quot; deleted<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u043e\u0436\u0434\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl port-forward -n tarantool routers-0-0 8081:8081 --- Forwarding from 127.0.0.1:8081 -&gt; 8081 Forwarding from [::1]:8081 -&gt; 8081 ...<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">curl http:\/\/localhost:8081\/v2\/hello --- Hello world, new version of the app!<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"zapusk-neskolkih-klasterov-tarantool-cartridge-v-raznyh-namespace\">\u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Tarantool Cartridge \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 namespace<\/h3>\n<p>  <\/p>\n<p>Tarantool Operator \u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Tarantool Cartridge \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0432\u043e\u0435\u043c namespace. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Cartridge \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 namespace&#8217;\u0430\u0445, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445. <\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e namespace&#8217;\u043e\u0432, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 namespace \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install tarantool-operator tarantool\/tarantool-operator --namespace NS_1 --create-namespace --version 0.0.8  $ helm install tarantool-operator tarantool\/tarantool-operator --namespace NS_2 --create-namespace --version 0.0.8<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u0438 \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442 \u043f\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0432 namespace&#8217;\u044b NS_1 \u0438 NS_2. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Tarantool Cartridge. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install -f values.yaml cartridge tarantool\/cartridge --namespace NS_1 --version 0.0.8  $ helm install -f values.yaml cartridge tarantool\/cartridge --namespace NS_2 --version 0.0.8<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0432\u0430 namespace, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Tarantool Cartridge. \u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0432\u043e\u0438\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c, \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<h3 id=\"udalyaem-klaster\">\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c Cartridge-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm uninstall test-app --namespace tarantool --- release &quot;test-app&quot; uninstalled <\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435 \u043f\u043e\u0434\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442, \u0441\u0440\u0435\u0434\u0438 \u043f\u043e\u0434\u043e\u0432 \u0432 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0435 <em>tarantool<\/em> \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e operator.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl -n tarantool get pods --- NAME                                  READY   STATUS    RESTARTS   AGE tarantool-operator-7dc948c89b-pb9r4   1\/1     Running   0          9m45s<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438 Tarantool Operator \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm uninstall tarantool-operator --namespace tarantool --- release &quot;tarantool-operator&quot; uninstalled<\/code><\/pre>\n<p>  <\/p>\n<p><strong>NOTE<\/strong> helm uinstall \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 (Persistent Volumes). \u0427\u0442\u043e\u0431\u044b \u0438\u0445 \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl delete pvc --all -n tarantool --- persistentvolumeclaim &quot;www-routers-0-0&quot; deleted persistentvolumeclaim &quot;www-routers-1-0&quot; deleted persistentvolumeclaim &quot;www-storages-0-0&quot; deleted<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"troubleshooting\">Troubleshooting<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<h3 id=\"nehvatka-cpu\">\u041d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 CPU<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <code>helm install\/upgrade<\/code> \u043f\u043e\u0434\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <strong>Pending<\/strong>.<\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl get pods -n tarantool --- NAME                                  READY   STATUS    RESTARTS   AGE routers-0-0                           0\/1     Pending   0          20m routers-1-0                           0\/1     Pending   0          20m storages-0-0                          0\/1     Pending   0          20m tarantool-operator-5bd6d895c4-xhjsg   1\/1     Running   0          23m<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0434\u0432\u0438\u0441\u0448\u0438\u0445 \u043f\u043e\u0434\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl -n tarantool describe pods routers-0-0 --- Events:   Type     Reason             Age                    From                Message   ----     ------             ----                   ----                -------   Warning  FailedScheduling   34m                    default-scheduler   0\/2 nodes are available: 2 Insufficient cpu.   Warning  FailedScheduling   34m                    default-scheduler   0\/2 nodes are available: 2 Insufficient cpu.   Normal   NotTriggerScaleUp  3m33s (x175 over 34m)  cluster-autoscaler  pod didn't trigger scale-up (it wouldn't fit if a new node is added):<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 CPU. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <em>values.yaml<\/em>, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>CPUallocation<\/strong> \u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432. \u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0432 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<h3 id=\"nehvatka-mesta-na-diskah\">\u041d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445<\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <code>helm install\/upgrade<\/code> \u043f\u043e\u0434\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <strong>ContainerCreating<\/strong>.<br \/>  \u0421\u043d\u043e\u0432\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 <code>kubectl -n tarantool describe pods routers-0-0<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">Events:   Type     Reason                  Age                  From                                              Message   ----     ------                  ----                 ----                                              -------   Warning  FailedScheduling        7m44s                default-scheduler                                 pod has unbound immediate PersistentVolumeClaims   Warning  FailedScheduling        7m44s                default-scheduler                                 pod has unbound immediate PersistentVolumeClaims   Normal   Scheduled               7m42s                default-scheduler                                 Successfully assigned tarantool\/routers-0-0 to kubernetes-cluster-3010-default-group-0   Normal   SuccessfulAttachVolume  7m37s                attachdetach-controller                           AttachVolume.Attach succeeded for     volume &quot;pvc-e0d3f30a-7dcc-4a67-a69d-4670dc77d556&quot;   Warning  FailedMount             67s (x9 over 7m5s)   kubelet, kubernetes-cluster-3010-default-group-0  MountVolume.MountDevice failed for volume &quot;pvc-e0d3f30a-7dcc-4a67-a69d-4670dc77d556&quot; : rpc error: code = Internal desc = Unable to find Device path for volume   Warning  FailedMount             66s (x3 over 5m38s)  kubelet, kubernetes-cluster-3010-default-group-0  Unable to attach or mount volumes: unmounted volumes=[www], unattached volumes=[www default-token-jrz94]: timed out waiting for the condition<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u0434\u0438\u0441\u043a\u043e\u0432 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>DiskSize<\/strong> \u0432 \u0444\u0430\u0439\u043b\u0435 <em>values.yaml<\/em> \u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0441\u0435\u0442\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"kastomizaciya\">\u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u0435\u0439\u0441\u043e\u0432 \u0432\u0430\u043c \u0445\u0432\u0430\u0442\u0438\u0442 helm \u0447\u0430\u0440\u0442\u0430 <em>tarantool\/cartridge<\/em>. \u041d\u043e \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0440\u0442, \u0432\u043d\u0435\u0441\u044f \u0432 \u043d\u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438, \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 helm \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 deployment.yaml \u0438 kubectl.<\/p>\n<p>  <\/p>\n<h3 id=\"sidecar-konteynery\">Sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/h3>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435? \u0412 \u0441\u0440\u0435\u0434\u0435 Kubernetes \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b. \u0422\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 sidecar.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.magalix.com\/blog\/the-sidecar-pattern\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 Kubernetes \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u0430\u0440\u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u0434\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u043c \u0442\u0430\u0440\u0430\u043d\u0442\u0443\u043b\u0430 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 nginx \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/access-application-cluster\/communicate-containers-same-pod-shared-volume\/\">\u0434\u0430\u043d\u043d\u043e\u0439<\/a> \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0430\u0440\u0442 <em>tarantool\/cartridge<\/em>. \u041d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/github.com\/tarantool\/tarantool-operator\/tree\/master\/examples\/kv\/helm-chart\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 nginx \u0432 \u0448\u0430\u0431\u043b\u043e\u043d ReplicasetTemplate, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <em>templates\/deployment.yaml<\/em>.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">containers: - name: pim-storage   image: &quot;{{ $.Values.image.repository }}:{{ $.Values.image.tag }}&quot;   ... - name: nginx-container   image: nginx   volumeMounts:     - name: www       mountPath: &quot;\/data&quot;<\/code><\/pre>\n<p>  <\/p>\n<p><strong>NOTE<\/strong> \u0432\u0430\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 pim-storage. \u0418\u043d\u0430\u0447\u0435 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0442\u0430\u043a \u043a\u0430\u043a Tarantool Operator \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0443\u0442\u044c \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0447\u0430\u0440\u0442\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install -f values.yaml test-app tarantool-operator\/examples\/kv\/helm-chart\/ --namespace tarantool --- NAME: test-app LAST DEPLOYED: Wed Sep 30 11:25:12 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u043e\u0432. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl -n tarantool get pods --- NAME                                  READY   STATUS    RESTARTS   AGE routers-0-0                           2\/2     Running   0          113s routers-1-0                           2\/2     Running   0          113s storages-0-0                          2\/2     Running   0          113s tarantool-operator-7dc948c89b-fnq28   1\/1     Running   0          30m<\/code><\/pre>\n<p>  <\/p>\n<p><code>READY 2\/2<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0434\u0430 \u0433\u043e\u0442\u043e\u0432\u043e 2 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"ustanovka-v-zakrytom-konture\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435<\/h2>\n<p>  <\/p>\n<p>\u0412 enterprise-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0434\u0438\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0446\u0435\u043b\u044f\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <\/p>\n<h3 id=\"dostavka-instrumentov\">\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h3>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0443\u0440 helm \u0447\u0430\u0440\u0442\u044b <em>tarantool-operator<\/em> \u0438 <em>cartridge<\/em>, docker-\u043e\u0431\u0440\u0430\u0437 tarantool-operator \u0438 \u043e\u0431\u0440\u0430\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0447\u0430\u0440\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/tarantool\/tarantool-operator\/releases\/download\/tarantool-operator-0.0.8\/tarantool-operator-0.0.8.tgz\"><strong>tarantool-operator<\/strong> v0.0.8<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/tarantool\/tarantool-operator\/releases\/download\/cartridge-0.0.8\/cartridge-0.0.8.tgz\"><strong>cartridge<\/strong> v0.0.8<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0435\u0440 \u043e\u0431\u0440\u0430\u0437 <em>tarantool-operator<\/em>. \u0421\u043f\u0435\u0440\u0432\u0430 \u0437\u0430\u0431\u0435\u0440\u0435\u043c \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0437 docker.hub:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ docker pull tarantool\/tarantool-operator:0.0.8 --- 0.0.8: Pulling from tarantool\/tarantool-operator Digest: sha256:e3b46c2a0231bd09a8cdc6c86eac2975211b2c597608bdd1e8510ee0054a9854 Status: Downloaded newer image for tarantool\/tarantool-operator:0.0.8 docker.io\/tarantool\/tarantool-operator:0.0.8<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0443\u043f\u0430\u043a\u0443\u0435\u043c \u0432 \u0430\u0440\u0445\u0438\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ docker save tarantool\/tarantool-operator:0.0.8 | gzip &gt; tarantool-operator-0.0.8.tar.gz<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0430\u0440\u0445\u0438\u0432\u0430 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0443\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 docker:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ docker load &lt; tarantool-operator-0.0.8.tar.gz --- Loaded image: tarantool\/tarantool-operator:0.0.8<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0437 \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u0438\u0437 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 docker registry. \u042f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044b\u0439 \u043d\u0430 <code>localhost:5000<\/code> \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0434\u043b\u044f Kubernetes docker registry. <\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ docker tag tarantool\/tarantool-operator:0.0.8 localhost:5000\/tarantool-operator:0.0.8 $ docker push localhost:5000\/tarantool-operator:0.0.8 --- The push refers to repository [localhost:5000\/tarantool-operator] 9ace38e69165: Pushed  e38e5e822ecf: Pushed  b6533bbd0bc5: Pushed  eb29745b8228: Pushed  0.0.8: digest: sha256:c0cfdc769f545ab106115ef5ee8d924778aea78b08454fbfed4a5b8e42afa5aa size: 1155<\/code><\/pre>\n<p>  <\/p>\n<p><strong>NOTE<\/strong> <em>\u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 docker-\u043e\u0431\u0440\u0430\u0437 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u0430, \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435<\/em>.<\/p>\n<p>  <\/p>\n<h3 id=\"ustanovka-tarantool-operator\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Tarantool Operator<\/h3>\n<p>  <\/p>\n<p>\u041e\u043f\u0438\u0448\u0435\u043c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 <code>operator_values.yaml<\/code>, \u0443\u043a\u0430\u0437\u0430\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0437 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">image:   repository: localhost:5000\/tarantool-operator   tag: 0.0.8   pullPolicy: IfNotPresent<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0443\u0442\u044c \u0434\u043e \u0447\u0430\u0440\u0442\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install tarantool-operator -f operator_values.yaml .\/tarantool-operator-0.0.8.tgz --namespace tarantool --create-namespace --- NAME: tarantool-operator LAST DEPLOYED: Tue Dec  1 14:53:47 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 1 TEST SUITE: None<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0448\u0435\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl -n tarantool get pods --- NAME                                  READY   STATUS    RESTARTS   AGE tarantool-operator-7c867cb467-vthf4   1\/1     Running   0          7s<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"ustanovka-tarantool-cartridge-prilozheniya\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Tarantool Cartridge \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b \u0432 \u0441\u0432\u043e\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c docker registry. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>values.yaml<\/code> \u0443\u043a\u0430\u0437\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">... image:   repository: localhost:5000\/test-app   tag: 0.1.0-0-g68f6117   pullPolicy: IfNotPresent ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e <code>values.yaml<\/code> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Tarantool Cartridge \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u0418 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0443\u0442\u044c \u0434\u043e \u0447\u0430\u0440\u0442\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ helm install -f values.yaml test-app .\/cartridge- .tgz --namespace tarantool --- NAME: test-app LAST DEPLOYED: Tue Dec  1 15:52:41 2020 NAMESPACE: tarantool STATUS: deployed REVISION: 1<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u043e\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$ kubectl -n tarantool get pods --- NAME                                  READY   STATUS    RESTARTS   AGE routers-0-0                           1\/1     Running   0          8m30s storages-0-0                          1\/1     Running   0          8m30s storages-1-0                          1\/1     Running   0          8m30s tarantool-operator-7c867cb467-vthf4   1\/1     Running   0          67m<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li>\u0421\u043a\u0430\u0447\u0430\u0442\u044c Tarantool \u043c\u043e\u0436\u043d\u043e \u043d\u0430 <a href=\"https:\/\/www.tarantool.io\/ru\/download?utm_source=habr&amp;utm_medium=articles&amp;utm_campaign=2020\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a>.<\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043c\u043e\u0449\u044c \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/t.me\/tarantoolru?utm_source=habr&amp;utm_medium=articles&amp;utm_campaign=2020\">Telegram-\u0447\u0430\u0442\u0435<\/a>.<\/li>\n<li>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043a\u0430\u043a \u043d\u0430 Tarantool \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u044d\u0448 \u0432 \u0431\u0430\u043d\u043a\u0435 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/533420\/?utm_source=habr&amp;utm_medium=articles&amp;utm_campaign=2020\">\u0442\u0443\u0442<\/a>.<\/li>\n<\/ul>\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\/company\/mailru\/blog\/533308\/\"> https:\/\/habr.com\/ru\/company\/mailru\/blog\/533308\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/51\/nc\/3l\/51nc3lhzs07-creucuc4g5mztsg.jpeg\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0418\u0432\u0430\u043d, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c <a href=\"https:\/\/github.com\/tarantool\/cartridge\">Tarantool Cartridge<\/a> \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/github.com\/tarantool\/tarantool-operator\">Tarantool Operator<\/a>. \u041c\u044b \u043f\u0440\u043e\u0439\u0434\u0435\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<li>\u0423\u043f\u0430\u043a\u0443\u0435\u043c \u0435\u0433\u043e \u0432 docker<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 kubernetes \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/li>\n<li>\u041c\u0430\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<li>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/li>\n<li>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/li>\n<li>\u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/li>\n<li>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0432 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435<\/li>\n<\/ul>\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-315446","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315446","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=315446"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315446\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}