Skip to content

Commit d6e0c00

Browse files
authored
Merge pull request #20083 from joao-luna-98/translate-operator
Adding content/pt/docs/concepts/extend-kubernetes/operator.md
2 parents f7ff11c + ac787cc commit d6e0c00

File tree

2 files changed

+141
-0
lines changed

2 files changed

+141
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Extendendo o Kubernetes
3+
weight: 110
4+
---
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
title: Padrão Operador
3+
content_template: templates/concept
4+
weight: 30
5+
---
6+
7+
{{% capture overview %}}
8+
9+
Operadores são extensões de software para o Kubernetes que
10+
fazem uso de [*recursos personalizados*](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
11+
para gerir aplicações e os seus componentes. Operadores seguem os
12+
princípios do Kubernetes, notavelmente o [ciclo de controle](/docs/concepts/#kubernetes-control-plane).
13+
14+
{{% /capture %}}
15+
16+
17+
{{% capture body %}}
18+
19+
## Motivação
20+
21+
O padrão Operador tem como objetivo capturar o principal objetivo de um operador
22+
humano que gere um serviço ou um conjunto de serviços. Operadores humanos
23+
responsáveis por aplicações e serviços específicos têm um conhecimento
24+
profundo da forma como o sistema é suposto se comportar, como é instalado
25+
e como deve reagir na ocorrência de problemas.
26+
27+
As pessoas que executam cargas de trabalho no Kubernetes habitualmente gostam
28+
de usar automação para cuidar de tarefas repetitivas. O padrão Operador captura
29+
a forma como pode escrever código para automatizar uma tarefa para além do que
30+
o Kubernetes fornece.
31+
32+
## Operadores no Kubernetes
33+
34+
O Kubernetes é desenhado para automação. *Out of the box*, você tem bastante
35+
automação embutida no núcleo do Kubernetes. Pode usar
36+
o Kubernetes para automatizar instalações e executar cargas de trabalho,
37+
e pode ainda automatizar a forma como o Kubernetes faz isso.
38+
39+
O conceito de {{< glossary_tooltip text="controlador" term_id="controller" >}} no
40+
Kubernetes permite a extensão do comportamento sem modificar o código do próprio
41+
Kubernetes.
42+
Operadores são clientes da API do Kubernetes que atuam como controladores para
43+
um dado [*Custom Resource*](/docs/concepts/api-extension/custom-resources/)
44+
45+
## Exemplo de um Operador {#exemplo}
46+
47+
Algumas das coisas que um operador pode ser usado para automatizar incluem:
48+
49+
* instalar uma aplicação a pedido
50+
* obter e restaurar backups do estado dessa aplicação
51+
* manipular atualizações do código da aplicação juntamente com alterações
52+
como esquemas de base de dados ou definições de configuração extra
53+
* publicar um *Service* para aplicações que não suportam a APIs do Kubernetes
54+
para as descobrir
55+
* simular una falha em todo ou parte do cluster de forma a testar a resiliência
56+
* escolher um lider para uma aplicação distribuída sem um processo
57+
de eleição de membro interno
58+
59+
Como deve um Operador parecer em mais detalhe? Aqui está um exemplo em mais
60+
detalhe:
61+
62+
1. Um recurso personalizado (*custom resource*) chamado SampleDB, que você pode
63+
configurar para dentro do *cluster*.
64+
2. Um *Deployment* que garante que um *Pod* está a executar que contém a
65+
parte controlador do operador.
66+
3. Uma imagem do *container* do código do operador.
67+
4. Código do controlador que consulta o plano de controle para descobrir quais
68+
recursos *SampleDB* estão configurados.
69+
5. O núcleo do Operador é o código para informar ao servidor da API (*API server*) como fazer
70+
a realidade coincidir com os recursos configurados.
71+
* Se você adicionar um novo *SampleDB*, o operador configurará *PersistentVolumeClaims*
72+
para fornecer armazenamento de base de dados durável, um *StatefulSet* para executar *SampleDB* e
73+
um *Job* para lidar com a configuração inicial.
74+
* Se você apagá-lo, o Operador tira um *snapshot* e então garante que
75+
o *StatefulSet* e *Volumes* também são removidos.
76+
6. O operador também gere backups regulares da base de dados. Para cada recurso *SampleDB*,
77+
o operador determina quando deve criar um *Pod* que possa se conectar
78+
à base de dados e faça backups. Esses *Pods* dependeriam de um *ConfigMap*
79+
e / ou um *Secret* que possui detalhes e credenciais de conexão com à base de dados.
80+
7. Como o Operador tem como objetivo fornecer automação robusta para o recurso
81+
que gere, haveria código de suporte adicional. Para este exemplo,
82+
O código verifica se a base de dados está a executar uma versão antiga e, se estiver,
83+
cria objetos *Job* que o atualizam para si.
84+
85+
## Instalar Operadores
86+
87+
A forma mais comum de instalar um Operador é a de adicionar a
88+
definição personalizada de recurso (*Custom Resource Definition*) e
89+
o seu Controlador associado ao seu cluster.
90+
O Controlador vai normalmente executar fora do
91+
{{< glossary_tooltip text="plano de controle" term_id="control-plane" >}},
92+
como você faria com qualquer aplicação containerizada.
93+
Por exemplo, você pode executar o controlador no seu cluster como um *Deployment*.
94+
95+
## Usando um Operador
96+
97+
Uma vez que você tenha um Operador instalado, usaria-o adicionando, modificando
98+
ou apagando a espécie de recurso que o Operador usa. Seguindo o exemplo acima,
99+
você configuraria um *Deployment* para o próprio Operador, e depois:
100+
101+
```shell
102+
kubectl get SampleDB # encontra a base de dados configurada
103+
104+
kubectl edit SampleDB/example-database # mudar manualmente algumas definições
105+
```
106+
107+
&hellip;e é isso! O Operador vai tomar conta de aplicar
108+
as mudanças assim como manter o serviço existente em boa forma.
109+
110+
## Escrevendo o seu prórpio Operador {#escrevendo-operador}
111+
112+
Se não existir no ecosistema um Operador que implementa
113+
o comportamento que pretende, pode codificar o seu próprio.
114+
[Qual é o próximo](#qual-é-o-próximo) você vai encontrar
115+
alguns *links* para bibliotecas e ferramentas que pode usar
116+
para escrever o seu próprio Operador *cloud native*.
117+
118+
Pode também implementar um Operador (isto é, um Controlador) usando qualquer linguagem / *runtime*
119+
que pode atuar como um [cliente da API do Kubernetes](/docs/reference/using-api/client-libraries/).
120+
121+
{{% /capture %}}
122+
123+
{{% capture whatsnext %}}
124+
125+
* Aprenda mais sobre [Recursos Personalizados](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
126+
* Encontre operadores prontos em [OperatorHub.io](https://operatorhub.io/) para o seu caso de uso
127+
* Use ferramentes existentes para escrever os seus Operadores:
128+
* usando [KUDO](https://kudo.dev/) (Kubernetes Universal Declarative Operator)
129+
* usando [kubebuilder](https://book.kubebuilder.io/)
130+
* usando [Metacontroller](https://metacontroller.app/) juntamente com WebHooks que
131+
implementa você mesmo
132+
* usando o [Operator Framework](https://github.com/operator-framework/getting-started)
133+
* [Publique](https://operatorhub.io/) o seu operador para que outras pessoas o possam usar
134+
* Leia o [artigo original da CoreOS](https://coreos.com/blog/introducing-operators.html) que introduz o padrão Operador
135+
* Leia um [artigo](https://cloud.google.com/blog/products/containers-kubernetes/best-practices-for-building-kubernetes-operators-and-stateful-apps) da Google Cloud sobre as melhores práticas para contruir Operadores
136+
137+
{{% /capture %}}

0 commit comments

Comments
 (0)