Visão geral
O operador do Kubernetes é um método de empacotar, implantar e gerenciar aplicações do Kubernetes. Uma aplicação Kubernetes é implantada e gerenciada no Kubernetes usando a interface de programação de aplicações (API) do Kubernetes e o conjunto de ferramentas kubectl.
Um operador Kubernetes é um controlador específico para aplicações que amplia as funcionalidades da API do Kubernetes a fim de criar, configurar e gerenciar instâncias de aplicações complexas para um usuário do Kubernetes.
Ele se apoia sobre os conceitos básicos de controlador e recursos do Kubernetes, mas inclui o conhecimento específico de uma aplicação ou domínio para automatizar o ciclo de vida inteiro do software que gerencia.
No Kubernetes, os controladores do painel de controle implementam loops que repetidamente comparam o estado desejado com o estado atual do cluster. Se o estado atual não coincidir com o desejado, o controlador realiza ações para corrigir o problema.
Um operador é um controlador Kubernetes sob medida que usa recursos personalizados (CR) para gerenciar aplicações e seus respectivos componentes. O usuário define as configurações de alto nível em um CR. O operador Kubernetes traduz as diretivas de alto nível em ações de baixo nível com base nas práticas recomendadas incorporadas na lógica do próprio operador.
Um recurso personalizado é o mecanismo de extensão da API no Kubernetes. A definição do recurso personalizado (CRD) estipula um CR e lista toda a configuração disponível para os usuários do operador.
O operador Kubernetes inspeciona o tipo de CR e realiza ações específicas para a aplicação. Dessa forma, o estado atual pode coincidir com o estado desejado no recurso em questão.
Os operadores Kubernetes introduzem novos tipos de objetos por meio de definições de recurso personalizado. As definições de recurso personalizado podem ser processadas pela API do Kubernetes da mesma forma que os objetos incorporados, incluindo interação via kubectl e inclusão em políticas de controle de acesso baseado em função (RBAC).
Um operador Kubernetes continua a monitorar a aplicação enquanto ela é executada, podendo automaticamente fazer o backup de dados, recuperar a aplicação após falhas e fazer o upgrade dela com o passar do tempo.
As ações realizadas por um operador Kubernetes podem incluir praticamente qualquer coisa: escalonamento de uma aplicação complexa, upgrades de versão ou até mesmo o gerenciamento de módulos do kernel para nós em um cluster computacional com hardware especializado.
Como os operadores gerenciam aplicações Kubernetes
O Kubernetes pode gerenciar e escalar aplicações stateless, como aplicações web, back-ends mobile e serviços de API, sem a necessidade de nenhum conhecimento adicional sobre como essas aplicações operam. As funcionalidades incorporadas do Kubernetes foram projetadas para lidar facilmente com essas tarefas.
No entanto, no caso das aplicações stateful, como sistemas de monitoramento e bancos de dados, é necessário um conhecimento específico do domínio que o Kubernetes não tem. O Kubernetes precisa desse conhecimento para escalar, fazer upgrade e reconfigurar aplicações desse tipo.
Os operadores Kubernetes incluem esse conhecimento específico do domínio no código das extensões Kubernetes para que seja possível gerenciar e automatizar o ciclo de vida da aplicação.
Ao eliminar as tarefas manuais de gerenciamento de aplicações mais difíceis, os operadores Kubernetes transformam tais processos em escaláveis, reproduzíveis e padronizados.
Para os desenvolvedores de aplicações, os operadores facilitam a implantação e execução de serviços fundamentais dos quais as aplicações dependem.
Para os engenheiros de infraestrutura e fornecedores, os operadores oferecem uma maneira consistente de distribuir software em clusters do Kubernetes, além de reduzir o trabalho de suporte ao identificar e corrigir problemas nas aplicações.
Com os operadores, você pode escrever códigos para automatizar tarefas não inclusas nas funcionalidades de automação básicas do Kubernetes. Para as equipes que seguem abordagens de DevOps ou de Site Reliability Engineering (SRE), os operadores foram desenvolvidos para a incorporação de práticas de SRE ao Kubernetes.
A função do padrão do operador é capturar as intenções de como um operador humano gerenciaria um serviço. Um operador humano precisa ter compreensão total de como uma aplicação ou um serviço deve funcionar, como implantá-lo e como corrigir possíveis problemas.
Normalmente, o site reliability engineer ou a equipe de operações escreve o código do software para gerenciar a aplicação. No entanto, o operador é projetado para codificar o conhecimento operacional humano em um software que gerencia e implanta cargas de trabalho do Kubernetes, ao mesmo tempo em que elimina tarefas manuais.
O ideal é que tais operadores sejam criados por profissionais especializados na lógica de negócios para a instalação, a execução e o upgrade de uma determinada aplicação.
Geralmente, a criação de um operador começa pela automação da instalação da aplicação e pelo provisionamento por autosserviço. Em seguida, são inclusos recursos de automação mais complexos.
Também há um kit de desenvolvimento de software (SDK) que ajudará você a desenvolver seu próprio operador Kubernetes. Esse SDK oferece as ferramentas para criar, testar e empacotar operadores, com a opção de usar gráficos Helm, playbooks do Ansible ou Golang.
Operator Framework
O Operator Framework é um projeto open source que fornece ferramentas de desenvolvedor e de ambiente de execução do Kubernetes, a fim de acelerar o desenvolvimento de um operador.
O Operator Framework inclui:
- Operator SDK: permite que desenvolvedores criem operadores com base em seu próprio conhecimento especializado, sem a necessidade de entender as complexidades da API do Kubernetes.
- Operator Lifecycle Management: supervisiona a instalação, as atualizações e o gerenciamento do ciclo de vida de todos os operadores em execução em um cluster do Kubernetes.
- Operator Metering: permite a geração de relatórios para operadores que fornecem serviços especializados.
Como usar operadores no Red Hat OpenShift
O Red Hat® OpenShift® é uma plataforma de containers Kubernetes para gerenciar implantações de nuvem híbrida e multicloud voltada a empresas com operações automatizadas em todo o stack.
O Red Hat OpenShift usa operadores Kubernetes para executar a plataforma inteira de maneira autônoma e expor a configuração de modo nativo por meio de objetos Kubernetes, o que permite acelerar a instalação e realizar atualizações robustas e frequentes.
O OperatorHub, um registro de operadores certificados de fornecedores de software e projetos open source, já está incorporado ao Red Hat OpenShift. No OperatorHub, é possível procurar e instalar bibliotecas de operadores verificados para funcionar com o Red Hat OpenShift e que foram empacotados para facilitar o gerenciamento do ciclo de vida.