{"id":35226,"date":"2019-10-31T22:03:05","date_gmt":"2019-10-31T19:03:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\/"},"modified":"2019-10-31T22:03:05","modified_gmt":"2019-10-31T19:03:05","slug":"gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","title":{"rendered":"\u00c9 f\u00e1cil e pr\u00e1tico configurar um cluster Kubernetes? Apresentamos o addon-operator","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00c9 f\u00e1cil e pr\u00e1tico configurar um cluster Kubernetes? Apresentamos o addon-operator\" src=\"\/wp-content\/uploads\/8df3959f765d5d1bc8d427d3258aacc4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSeguindo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">shell-operator<\/a><\/noindex> apresentamos seu irm\u00e3o mais velho \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\">addon-operator<\/a><\/noindex>. \u00c9 um projeto Open Source usado para instalar componentes de sistema em clusters Kubernetes, que podem ser chamados genericamente de complementos.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Por que precisamos de complementos?<\/h2>\n<p>\nN\u00e3o \u00e9 segredo que o Kubernetes n\u00e3o \u00e9 um produto tudo-em-um, e para construir um cluster 'maduro' ser\u00e3o necess\u00e1rios v\u00e1rios complementos. O addon-operator ajuda a instalar, configurar e manter esses complementos atualizados.<\/p>\n<p>A necessidade de componentes adicionais em um cluster \u00e9 abordada em <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">na apresenta\u00e7\u00e3o<\/a><\/noindex> colegas <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/driusha\/\" class=\"user_link\">driusha<\/a><\/noindex>. Resumindo, a situa\u00e7\u00e3o com Kubernetes atualmente \u00e9 que para uma instala\u00e7\u00e3o simples 'para brincar', podemos nos contentar com os componentes padr\u00e3o, para os desenvolvedores e testes podemos adicionar Ingress, mas para uma instala\u00e7\u00e3o completa, que podemos considerar 'seu ambiente de produ\u00e7\u00e3o est\u00e1 pronto', \u00e9 necess\u00e1rio adicionar uma dezena de complementos: algo para monitoramento, algo para logs, n\u00e3o esquecer do ingress e do cert-manager, alocar grupos de n\u00f3s, adicionar pol\u00edticas de rede, temperar com configura\u00e7\u00f5es de sysctl e pod autoscaler...<\/p>\n<p><img decoding=\"async\" alt=\"\u00c9 f\u00e1cil e pr\u00e1tico configurar um cluster Kubernetes? Apresentamos o addon-operator\" src=\"\/wp-content\/uploads\/ab3bed8ee8b29d4e51905e45c908f078.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Qual \u00e9 a especificidade ao trabalhar com eles?<\/h2>\n<p>\nComo a pr\u00e1tica mostra, uma simples instala\u00e7\u00e3o n\u00e3o \u00e9 suficiente. Para um funcionamento confort\u00e1vel do cluster, os complementos precisar\u00e3o ser atualizados, desativados (removidos do cluster), e algo pode precisar ser testado antes da instala\u00e7\u00e3o no cluster de produ\u00e7\u00e3o.<\/p>\n<p>Ent\u00e3o, talvez s\u00f3 o Ansible seja suficiente aqui? Talvez. Mas <b>complementos completos geralmente n\u00e3o funcionam sem configura\u00e7\u00f5es<\/b>. Essas configura\u00e7\u00f5es podem variar dependendo da variante do cluster (aws, gce, azure, bare-metal, do, ...). Algumas configura\u00e7\u00f5es n\u00e3o podem ser definidas com anteced\u00eancia \u2014 elas precisam ser obtidas do cluster. E o cluster n\u00e3o \u00e9 est\u00e1tico: para algumas configura\u00e7\u00f5es, ser\u00e1 necess\u00e1rio acompanhar as altera\u00e7\u00f5es. E aqui o Ansible j\u00e1 n\u00e3o \u00e9 suficiente: \u00e9 necess\u00e1rio um programa que viva no cluster, ou seja, um Kubernetes Operator.<\/p>\n<p>Aqueles que tentaram na pr\u00e1tica <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, dir\u00e3o que as tarefas de instala\u00e7\u00e3o e atualiza\u00e7\u00e3o de complementos e a supervis\u00e3o das configura\u00e7\u00f5es podem ser perfeitamente resolvidas com <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\/blob\/master\/HOOKS.md\">ganchos<\/a><\/noindex> para shell-operator. \u00c9 poss\u00edvel escrever um script que far\u00e1 um suposto <code>kubectl apply<\/code> e monitorar, por exemplo, o ConfigMap, onde as configura\u00e7\u00f5es ser\u00e3o armazenadas. Isso \u00e9 basicamente o que foi implementado no addon-operator.<\/p>\n<h2>Como isso \u00e9 organizado no addon-operator?<\/h2>\n<p>\nAo criar uma nova solu\u00e7\u00e3o, partimos dos seguintes princ\u00edpios:<\/p>\n<ul>\n<li> O instalador de complementos deve suportar <b>a template e a configura\u00e7\u00e3o declarativa<\/b>. N\u00e3o fazemos scripts m\u00e1gicos que instalam complementos. O Addon-operator utiliza Helm para a instala\u00e7\u00e3o de complementos. Para a instala\u00e7\u00e3o, \u00e9 necess\u00e1rio criar um chart e destacar os values que ser\u00e3o utilizados para a configura\u00e7\u00e3o. <\/li>\n<li> As configura\u00e7\u00f5es podem <b>ser geradas durante a instala\u00e7\u00e3o<\/b>, elas podem <b>ser obtidas do cluster<\/b>, ou <b>receber atualiza\u00e7\u00f5es<\/b>, monitorando os recursos do cluster. Essas opera\u00e7\u00f5es podem ser implementadas com o uso de hooks.<\/li>\n<li> As configura\u00e7\u00f5es podem <b>armazenar no cluster<\/b>. Para armazenar as configura\u00e7\u00f5es no cluster, cria-se um ConfigMap\/addon-operator e o Addon-operator monitora as altera\u00e7\u00f5es desse ConfigMap. O Addon-operator fornece aos hooks acesso \u00e0s configura\u00e7\u00f5es por meio de acordos simples.<\/li>\n<li> <b>O complemento depende das configura\u00e7\u00f5es<\/b>. Se as configura\u00e7\u00f5es mudarem, o Addon-operator publica o chart do Helm com novos values. A combina\u00e7\u00e3o do chart do Helm, dos values para ele e dos hooks chamamos de m\u00f3dulo (mais detalhes abaixo).<\/li>\n<li> <b>Stageamento<\/b>. N\u00e3o h\u00e1 scripts m\u00e1gicos de release. O mecanismo de atualiza\u00e7\u00f5es \u00e9 an\u00e1logo ao de um aplicativo comum \u2014 agrupar complementos e o addon-operator em uma imagem, taguear e implantar.<\/li>\n<li> <b>Controle de resultado<\/b>. O Addon-operator \u00e9 capaz de fornecer m\u00e9tricas para o Prometheus.<\/li>\n<\/ul>\n<p><\/p>\n<h2>O que \u00e9 um complemento no addon-operator?<\/h2>\n<p>\nUm complemento pode ser considerado qualquer coisa que adicione novas funcionalidades ao cluster. Por exemplo, a instala\u00e7\u00e3o do Ingress \u00e9 um excelente exemplo de complemento. Isso pode ser qualquer operador ou controlador com seu pr\u00f3prio CRD: prometheus-operator, cert-manager, kube-controller-manager, etc. Ou algo pequeno, mas que simplifica a opera\u00e7\u00e3o \u2014 por exemplo, um copiados de secrets, que copia secrets de registry para novos namespaces, ou um afinador de sysctl, que ajusta par\u00e2metros sysctl em novos n\u00f3s.<\/p>\n<p>Para implementar complementos, o Addon-operator oferece v\u00e1rias conceitos:<\/p>\n<ul>\n<li> <b>Chart Helm<\/b> \u00e9 utilizado para instalar diferentes softwares no cluster \u2014 por exemplo, Prometheus, Grafana, nginx-ingress. Se o componente necess\u00e1rio possui um Helm-chart, ser\u00e1 muito simples instal\u00e1-lo com o Addon-operator.<\/li>\n<li> <b>Armazenamento de values<\/b>. Os Helm-charts geralmente t\u00eam muitas configura\u00e7\u00f5es diferentes, que podem mudar ao longo do tempo. O Addon-operator suporta o armazenamento dessas configura\u00e7\u00f5es e \u00e9 capaz de monitorar suas altera\u00e7\u00f5es para reinstalar o Helm-chart com novos valores.<\/li>\n<li> <b>Hooks<\/b> \u2014 s\u00e3o arquivos execut\u00e1veis que o Addon-operator inicia em resposta a eventos e que t\u00eam acesso ao armazenamento de valores. O hook pode monitorar mudan\u00e7as no cluster e atualizar os valores no armazenamento de valores. Ou seja, com os hooks \u00e9 poss\u00edvel realizar a descoberta, coletando valores do cluster na inicializa\u00e7\u00e3o ou de acordo com um cronograma, ou fazer uma descoberta cont\u00ednua, coletando valores do cluster em resposta a mudan\u00e7as no cluster.<\/li>\n<li> <b>M\u00f3dulo<\/b> \u2014 \u00e9 a combina\u00e7\u00e3o de um gr\u00e1fico Helm, um armazenamento de valores e hooks. M\u00f3dulos podem ser habilitados ou desabilitados. Desabilitar um m\u00f3dulo significa remover todas as vers\u00f5es do gr\u00e1fico Helm. Os m\u00f3dulos podem se incluir dinamicamente, por exemplo, se todos os m\u00f3dulos necess\u00e1rios estiverem habilitados ou se a descoberta nos hooks encontrar os par\u00e2metros necess\u00e1rios \u2014 isso \u00e9 feito com um script auxiliar denominado enabled.<\/li>\n<li> <b>Hooks Globais<\/b>. Estes s\u00e3o hooks \"por conta pr\u00f3pria\", n\u00e3o est\u00e3o inclu\u00eddos em m\u00f3dulos e t\u00eam acesso ao armazenamento global de valores, cujos valores est\u00e3o dispon\u00edveis para todos os hooks nos m\u00f3dulos.<\/li>\n<\/ul>\n<p>\nComo essas partes funcionam juntas? Vamos considerar a imagem da documenta\u00e7\u00e3o:<\/p>\n<p><img decoding=\"async\" alt=\"\u00c9 f\u00e1cil e pr\u00e1tico configurar um cluster Kubernetes? Apresentamos o addon-operator\" src=\"\/wp-content\/uploads\/c9bb8e5ae78aa5df0d6c4fbf353e4236.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExistem dois cen\u00e1rios de funcionamento:<\/p>\n<ol>\n<li> Um hook global \u00e9 acionado por um evento \u2014 por exemplo, ao alterar um recurso no cluster. Este hook processa as altera\u00e7\u00f5es e grava novos valores no armazenamento global de valores. O Addon-operator detecta que o armazenamento global foi alterado e inicia todos os m\u00f3dulos. Cada m\u00f3dulo, por meio de seus hooks, determina se deve ser habilitado e atualiza seu pr\u00f3prio armazenamento de valores. Se o m\u00f3dulo estiver habilitado, o Addon-operator inicia a instala\u00e7\u00e3o do gr\u00e1fico Helm. O gr\u00e1fico Helm tem acesso aos valores do armazenamento do m\u00f3dulo e do armazenamento global.<\/li>\n<li> O segundo cen\u00e1rio \u00e9 mais simples: um hook de m\u00f3dulo \u00e9 acionado por um evento, altera os valores no armazenamento de valores do m\u00f3dulo. O Addon-operator percebe isso e inicia o gr\u00e1fico Helm com os valores atualizados.<\/li>\n<\/ol>\n<p>\nUm complemento pode ser implementado como um \u00fanico hook ou como um gr\u00e1fico Helm, ou <b>at\u00e9 mesmo como v\u00e1rios m\u00f3dulos dependentes<\/b> \u2014 isso depende da complexidade do componente a ser instalado no cluster e do n\u00edvel necess\u00e1rio de flexibilidade nas configura\u00e7\u00f5es. Por exemplo, no reposit\u00f3rio (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">\/examples<\/a><\/noindex>) h\u00e1 um complemento sysctl-tuner, que \u00e9 implementado tanto como um simples m\u00f3dulo com hook e gr\u00e1fico Helm, quanto com o uso de armazenamento de valores, o que permite adicionar configura\u00e7\u00f5es atrav\u00e9s da edi\u00e7\u00e3o do ConfigMap.<\/p>\n<h2>Entrega de atualiza\u00e7\u00f5es<\/h2>\n<p>\nAlgumas palavras sobre a organiza\u00e7\u00e3o das atualiza\u00e7\u00f5es dos componentes que o Addon-operator instala.<\/p>\n<p>Para rodar o Addon-operator em um cluster, \u00e9 necess\u00e1rio <b>compilar uma imagem com as extens\u00f5es<\/b> na forma de arquivos de gancho e gr\u00e1ficos Helm, adicionar o arquivo bin\u00e1rio <code>addon-operator<\/code> e tudo que for necess\u00e1rio para os ganchos: <code>bash<\/code>, <code>kubectl<\/code>, <code>jq<\/code>, <code>python<\/code> e assim por diante. Depois, essa imagem pode ser implantada no cluster como um aplicativo normal e provavelmente voc\u00ea vai querer organizar algum tipo de esquema de versionamento. Se houver poucos clusters, o mesmo m\u00e9todo usado para aplicativos pode funcionar: nova vers\u00e3o, nova tag, ir por todos os clusters e corrigir a imagem nos Pod\u2019s. No entanto, ao implantar em um n\u00famero significativo de clusters, a ideia de autoatualiza\u00e7\u00e3o atrav\u00e9s do canal se torna mais apropriada. <\/p>\n<p>N\u00f3s configuramos assim:<\/p>\n<ul>\n<li>O canal \u00e9 essencialmente um identificador que pode ser definido de qualquer forma (por exemplo, dev\/stage\/ea\/stable).<\/li>\n<li>O nome do canal \u00e9 a tag da imagem. Quando \u00e9 necess\u00e1rio implantar atualiza\u00e7\u00f5es no canal, uma nova imagem \u00e9 compilada e tagueada com o nome do canal.<\/li>\n<li>Quando uma nova imagem aparece no registro, o Addon-operator \u00e9 reiniciado e iniciado com a nova imagem.<\/li>\n<\/ul>\n<p>\nIsso n\u00e3o \u00e9 uma boa pr\u00e1tica, como mencionado em <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/images\/#updating-images\">documenta\u00e7\u00e3o do Kubernetes<\/a><\/noindex>. Isso n\u00e3o \u00e9 recomendado, mas estamos falando sobre <i>um aplicativo normal que vive em um \u00fanico cluster<\/i>. No caso do Addon-operator, o aplicativo \u00e9 um conjunto de Deployments espalhados pelos clusters, e a autoatualiza\u00e7\u00e3o ajuda bastante e simplifica a vida. <\/p>\n<p>Os canais ajudam tamb\u00e9m <b>nos testes<\/b>: se houver um cluster auxiliar, ele pode ser configurado para o canal <code>stage<\/code> e implantar atualiza\u00e7\u00f5es nele antes de lan\u00e7ar nos canais <code>ea<\/code> e <code>stable<\/code>. Se ocorrer um erro com o cluster no canal <code>ea<\/code> , ele pode ser alternado para <code>stable<\/code>, enquanto a investiga\u00e7\u00e3o do problema com esse cluster est\u00e1 em andamento. Se o cluster estiver fora de suporte ativo, ele \u00e9 alternado para seu canal \"congelado\" \u2014 por exemplo, <code>freeze-2019-03-20<\/code>.<\/p>\n<p>Al\u00e9m das atualiza\u00e7\u00f5es de ganchos e gr\u00e1ficos Helm, pode ser necess\u00e1rio <b>atualizar tamb\u00e9m um componente de terceiros<\/b>. Por exemplo, se voc\u00ea notar um erro no node-exporter e at\u00e9 mesmo pensar em como corrig\u00ed-lo. Em seguida, voc\u00ea abre um PR e aguarda a nova vers\u00e3o para passar por todos os clusters e aumentar a vers\u00e3o da imagem. Para n\u00e3o esperar um tempo indeterminado, voc\u00ea pode compilar seu pr\u00f3prio node-exporter e alternar para ele at\u00e9 que o PR seja aceito.<\/p>\n<p>Na verdade, isso pode ser feito sem o Addon-operator, mas com o Addon-operator, o m\u00f3dulo para instala\u00e7\u00e3o do node-exporter ficar\u00e1 vis\u00edvel em um \u00fanico reposit\u00f3rio, o Dockerfile para construir sua pr\u00f3pria imagem pode ser mantido aqui, e todos os participantes do processo ficam mais f\u00e1ceis de entender o que est\u00e1 acontecendo... E se houver v\u00e1rios clusters, torna-se mais f\u00e1cil tanto testar seu PR quanto aplicar uma nova vers\u00e3o!<\/p>\n<p>Esta organiza\u00e7\u00e3o de atualiza\u00e7\u00e3o de componentes funciona com sucesso para n\u00f3s, mas \u00e9 poss\u00edvel implementar qualquer outro esquema adequado \u2014 afinal, <b>neste caso, o Addon-operator \u00e9 um simples arquivo bin\u00e1rio.<\/b>.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>\nOs princ\u00edpios implementados no Addon-operator permitem estabelecer um processo transparente de cria\u00e7\u00e3o, teste, instala\u00e7\u00e3o e atualiza\u00e7\u00e3o de complementos no cluster, semelhante aos processos de desenvolvimento de aplicativos normais.<\/p>\n<p>Complementos para o Addon-operator no formato de m\u00f3dulos (Helm-chart + hooks) podem ser disponibilizados ao p\u00fablico. N\u00f3s, da empresa Flant, planejamos disponibilizar durante o ver\u00e3o nossas cria\u00e7\u00f5es na forma desses complementos. Junte-se ao desenvolvimento no GitHub (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/shell-operator\">shell-operator<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\"><b>addon-operator<\/b><\/a><\/noindex>), tente criar seu pr\u00f3prio complemento com base em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/tree\/master\/examples\">exemplos<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/addon-operator\/blob\/master\/README.md\">documenta\u00e7\u00e3o<\/a><\/noindex>, aguarde novidades no Habr e no nosso <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/c\/%D0%A4%D0%BB%D0%B0%D0%BD%D1%82\">canal no YouTube<\/a><\/noindex>!<\/p>\n<h2>P.S.<\/h2>\n<p>\nConfira tamb\u00e9m em nosso blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Expandindo e complementando o Kubernetes (vis\u00e3o geral e v\u00eddeo da apresenta\u00e7\u00e3o)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447442\/\">Apresentamos o shell-operator: criar operadores para Kubernetes ficou ainda mais f\u00e1cil<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u043b\u0435\u0434 \u0437\u0430 shell-operator \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0442\u0430 \u2014 addon-operator. \u042d\u0442\u043e Open Source-\u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f? \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e Kubernetes \u044d\u0442\u043e \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0432\u0441\u0451-\u0432-\u043e\u0434\u043d\u043e\u043c, \u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0433\u043e\u00bb \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. Addon-operator \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35226","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0413\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e? \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c addon-operator | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:03:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:03:05+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\u00c9 f\u00e1cil e conveniente preparar um cluster Kubernetes? Anunciamos o addon-operator | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0413\u043e\u0442\u043e\u0432\u0438\u0442\u044c Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e? \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u043c addon-operator | ProHoster","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/gotovit-kubernetes-klaster-prosto-i-udobno-anonsiruem-addon-operator","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:03:05+00:00","article:modified_time":"2019-10-31T19:03:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35226","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 22:25:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:07:29","updated":"2026-01-21 22:25:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=35226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35226\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=35226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=35226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=35226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}