O que são operadores no Kubernetes e qual padrão eles usam?
sobes.tech IA
Resposta da IA
Os operadores são métodos de empacotamento, implantação e gestão de aplicações no Kubernetes. Eles expandem a funcionalidade da API do Kubernetes, atuando como controladores específicos para certos softwares.
O padrão principal utilizado pelos operadores é o padrão do Controlador (Controller pattern). O controlador no Kubernetes monitora continuamente o estado atual do cluster e compara-o com o estado desejado. Se os estados diferirem, o controlador realiza as ações necessárias para alinhar o estado atual ao desejado.
No caso dos operadores, eles automatizam tarefas operacionais que normalmente são feitas por pessoas: backups, atualizações, escalonamento, gestão do ciclo de vida de aplicações específicas e suas dependências. Fazem isso reagindo a eventos no cluster e manipulando recursos personalizados (Custom Resources - CR) e definições de recursos personalizados (Custom Resource Definitions - CRD), que expandem a API do Kubernetes.
Princípio de funcionamento:
- Definição de Custom Resource (CRD): Define-se um novo tipo de recurso para representar uma aplicação ou serviço.
- Criação de Custom Resource (CR): O utilizador cria uma instância deste novo recurso, descrevendo o estado desejado da aplicação.
- O operador como controlador: O operador monitora continuamente a criação, atualização e eliminação de CR deste tipo.
- Comparação de estados: O operador compara o estado atual da aplicação (por exemplo, número de pods em execução, versão do software, configuração) com o estado desejado descrito no CR.
- Execução de ações: Se os estados diferirem, o operador realiza as ações necessárias através da API padrão do Kubernetes (criação/atualização/eliminação de Deployment, StatefulSet, Service, PVC, etc.) para levar o estado atual ao desejado.
Exemplo: Um operador para uma base de dados PostgreSQL pode fornecer um CR PostgresqlDatabase. O utilizador cria este CR com a versão desejada, tamanho de armazenamento e configurações de replicação. O operador PostgreSQL, ao observar este CR, criará os StatefulSet, PersistentVolumeClaim, Service necessários e configurará a replicação, garantindo a obtenção e manutenção do estado desejado.
# Exemplo de recurso personalizado para um hipotético operador PostgreSQL
apiVersion: postgresql.database.example.com/v1
kind: PostgresqlDatabase
metadata:
name: my-prod-db
spec:
version: "14.5"
storageSize: "100Gi"
replicas: 3
backup:
enabled: true
schedule: "0 2 * * *"
Assim, os operadores encapsulam conhecimentos operacionais profundos sobre uma aplicação específica em código que funciona no Kubernetes, automatizando tarefas rotineiras e aumentando a fiabilidade e escalabilidade das implantações.