Sobes.tech
Middle+

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:

  1. Definição de Custom Resource (CRD): Define-se um novo tipo de recurso para representar uma aplicação ou serviço.
  2. Criação de Custom Resource (CR): O utilizador cria uma instância deste novo recurso, descrevendo o estado desejado da aplicação.
  3. O operador como controlador: O operador monitora continuamente a criação, atualização e eliminação de CR deste tipo.
  4. 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.
  5. 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.