Operador autônomo do Couchbase

Como criar uma prova de conceito de operador autônomo do Couchbase

Sempre que ouço sobre a primeira experiência de um cliente com o Operador autônomo do Couchbase (CAO) para o Kubernetes, sua primeira pergunta tende a ser "Quanto custa?".

A resposta é que ele já está incluído em sua assinatura da Enterprise Edition. Feliz com isso, a maioria dos clientes passa para a próxima etapa, que é a realização de uma pequena prova de conceito (PoC) usando o Couchbase Autonomous Operator.

Se você já estiver usando CouchbaseSe você está ciente das práticas de manutenção necessárias, gerenciando os nós de serviço, as atualizações de versão etc., você deve estar ciente de que o Couchbase é um sistema de gerenciamento de serviços. Também há necessidade de manutenção fora do Couchbase, como atualizações de sistema operacional. Todas essas etapas de manutenção custam recursos humanos.

O CAO alivia essa pressão de recursos humanos, permitindo que você automatize o gerenciamento de tarefas comuns do Couchbase, como a configuração, a criação, o dimensionamento e a recuperação de clusters do Couchbase. Ao reduzir a complexidade da execução de um cluster do Couchbase, ele permite que você se concentre na configuração desejada e não se preocupe com os detalhes da implementação manual e do gerenciamento do ciclo de vida.

Muitas vezes, com as melhores intenções, os clientes entram em uma PoC e, às vezes, é a primeira experiência deles com o Kubernetes (ou K8s, se você for legal). Mas o Operador Autônomo do Couchbase é uma ferramenta complexa: Ele orquestra operações que normalmente seriam realizadas por uma equipe de engenheiros qualificados que gerenciam constantemente o cluster do Couchbase 24 horas por dia. Isso ajuda a agir com cuidado.

Nesse caso, é importante que você tenha uma compreensão básica do Kubernetes e do CAO. A partir daí, você criará uma Prova de Conceito bem-sucedida. Sem esse conhecimento básico, será difícil - ou impossível - solucionar problemas de sua nova PoC.

Esta postagem do blog explica como implantar rapidamente um Couchbase Autonomous Operator e um cluster do Couchbase.

Antes de mergulharmos

Esta postagem do blog se concentra no CAO e pressupõe um certo nível de conhecimento do Kubernetes. Se você é novo ou está enferrujado, Aqui está uma rápida atualização sobre o Kubernetes.

Devido ao vasto e complexo ecossistema que é o Kubernetes, para fins deste artigo, vamos facilitar ao máximo a execução de um cluster. O CAO é agnóstico em relação à nuvem e, portanto, é executado em vários ambientes de nuvem, seja no seu próprio cluster do Kubernetes ou em um serviço do Kubernetes do seu provedor de nuvem pública.

Nesta postagem do blog, usaremos Kubernetes no Docker, também conhecido como "tipo"para executar nós do Kubernetes como contêineres locais, portanto, você precisará ter o Docker instalado e em execução.

Estamos usando o tipo por vários motivos:

    • A instalação é rápida e fácil
    • Há uma imagem padrão a ser usada para cada versão do Kubernetes
    • Podemos colocar um ambiente em funcionamento o mais rápido possível

Até mesmo gentilmente (entendeu?) informa como interagir com o cluster do Kubernetes e como excluí-lo quando terminar. Tudo isso é visualizado em uma única página e é ótimo para uma variedade de casos de uso, como integração e entrega/implantação contínuas (CI/CD) e Infraestrutura como Código (IaC). Para iniciantes, isso significa que você pode facilmente provisionar e destruir clusters.

Como instalar o tipo

Primeiro, verifique se você tem o Docker instalado. Em seguida, para instalar o tipo, siga estas etapas para seu sistema operacional:

No Linux:

No macOS, via Homebrew:

No Windows:

Criação de um cluster

Antes de começar a criar um cluster, lembre-se de que o kind utiliza o Docker para seus nós do Kubernetes, portanto, certifique-se de que o Docker esteja em execução antes de começar.

Criar um cluster em espécie é simples, basta executar tipo create cluster e têm uma inicialização de cluster padrão. O Kind é muito personalizável, mas neste artigo usaremos principalmente os padrões, modificando apenas a configuração do nó de trabalho.

O que é YAML?

YAML é uma linguagem de marcação comumente usada em arquivos de configuração no ecossistema Kubernetes.

Se você ainda não conhece o YAML, ele tem uma sintaxe intencionalmente mínima e sua estrutura básica é um mapa. O YAML depende de sua indentação para indicar aninhamento. Como no Python, o formato dessa indentação é muito importante, portanto certifique-se de que seu editor use espaços em vez de tabulações.

Seu primeiro arquivo de configuração YAML: seu cluster gentil

Crie o seguinte arquivo de configuração, denominado kind-config.yamlque usaremos ao criar nosso tipo de cluster:

Crie seu cluster com o seguinte comando:

Depois que o cluster for criado, execute o seguinte comando: kubectl cluster-info --context kind-couchbase. Você deve obter uma saída semelhante à seguinte para saber que tem um cluster do Kubernetes em execução:

"O que é kubectl?" Estou ouvindo você gritar. É o comando usado para interagir com os clusters do Kubernetes. Não é algo específico do Couchbase ou do tipo. Você interage com diferentes clusters alterando o "contexto". Leia mais sobre o kubectl no próprio Kubernetes.

Para nos aprofundarmos nesse admirável mundo novo, vamos propor uma pergunta: Se nosso cluster for chamado de couchbase em espécie, então por que estamos usando base de toque gentil com o kubectl? Isso se deve ao fato de que base de toque gentil é o nome do contexto que usamos para interagir com o cluster.

A execução do comando a seguir mostrará todos os contextos que você configurou:

Você deve ter um * na coluna atual ao lado da coluna base de toque gentil entrada.

Instalação do operador autônomo do Couchbase em seu cluster do Kubernetes

Agora que você tem um cluster do Kubernetes em execução, é hora de instalar o CAO.

Pré-requisitos de instalação

Execute os pré-requisitos para fazer o download do CAO, navegue até o diretório do Download em seu terminal, descompacte-o e mova-o para a pasta.

Instalar as definições de recursos personalizados

A próxima etapa nos documentos é instalar as definições de recursos personalizados (CRDs) do Couchbase. Vamos dar uma olhada mais de perto no que elas são.

Vá em frente e dê uma olhada no arquivo crd crd.yaml em sua pasta descompactada. Você verá milhares de linhas de recursos definidos do Couchbase. O motivo pelo qual você precisa instalá-los é para estender a API do Kubernetes e definir recursos específicos do Couchbase para que ele os gerencie em seus aplicativos do Kubernetes.

Por exemplo, você usaria esses recursos para validar uma configuração de implantação do CAO. Aqui estão os documentos do Kubernetes sobre recursos personalizados.

Para instalar os CRDs que acompanham o operador, use o seguinte comando:

Instalar o operador

O operador consiste em dois componentes. Quero dar uma visão geral para que você saiba exatamente o que está instalando e por quê.

O controlador de admissão dinâmica (DAC)

Como estamos usando recursos personalizados, o Kubernetes não tem ideia de quais valores são aceitáveis, ao contrário dos tipos de recursos nativos.

O DAC (Dynamic Admission Controller, controlador de admissão dinâmica) é um gatekeeper que verifica a validade dos recursos e aplica os padrões necessários antes de ser comprometido com etcd (um armazenamento de valores-chave para seus dados de cluster.)

A equipe do Couchbase Docs fez um trabalho fantástico ao explicar os muitos benefícios de usar o Dynamic Admission Controller aqui.

Aqui está um trecho da documentação do Couchbase com um gráfico sobre como o DAC interroga as solicitações:

Couchbase  Dynamic Admission Controller architecture diagram

  1. Um cliente se conecta à API do Kubernetes e envia uma solicitação para criar um recurso. A especificação do recurso é codificada como JSON.
  2. A API encaminha o JSON para o endpoint de mutação do Dynamic Admission Controller. Um webhook de mutação é responsável por alterar o recurso (aplicando valores padrão, por exemplo). Opcionalmente, ele pode optar por aceitar ou rejeitar a solicitação de criação.
  3. A API encaminha o JSON para o ponto de extremidade de validação do Dynamic Admission Controller. Um webhook de validação é responsável por validar as restrições de especificação acima e além daquelas oferecidas pela validação do esquema JSON fornecida pela definição do recurso personalizado. Opcionalmente, ele pode optar por aceitar ou rejeitar a solicitação de criação.
  4. Depois que todas as verificações de admissão forem aprovadas, o recurso será mantido no banco de dados (etcd).
  5. A API responde ao cliente que a solicitação de criação foi aceita.

Se qualquer uma das verificações de admissão nos estágios 2 e 3 responder que o recurso não é aceitável, a API irá diretamente para o estágio 5 e retornará todos os erros retornados pelo DAC.

Instale o Dynamic Admission Controller com o seguinte comando:

O operador

Vou citar novamente a documentação do Couchbase, já que não consigo me expressar melhor:

Durante a vida útil do cluster do Couchbase, o Operador compara continuamente o estado dos recursos do Kubernetes com o que é solicitado no CouchbaseCluster recurso, conciliando conforme necessário para que a realidade corresponda ao que foi solicitado.

Vamos examinar isso mais detalhadamente. O Operator permite que você declare o estado do cluster que deseja, e ele cuidará do resto. Quando o estado do cluster precisar ser alterado, por exemplo, adicionar nós do Couchbase, expandir os serviços disponíveis etc., você pode simplesmente declarar isso e o Operator alcançará esse novo estado.

Essas são operações complexas que exigem precisão e conhecimento para gerenciar todas as partes móveis. O senhor poderia executam todas essas tarefas manualmente, mas o Operator automatiza tudo isso e executa todas as operações com as práticas recomendadas do Couchbase em mente.

Para concluir esta seção, agora você sabe um pouco mais sobre o que compõe uma implantação do CAO, em vez de apenas instalar os componentes às cegas. Esse é o conhecimento de que você precisará quando estiver executando um cluster do Couchbase em várias nuvens usando o CAO daqui a alguns meses.

Agora que você sabe o que está instalando, use o seguinte comando para instalar o operador:

Verificação do DAC

Você pode verificar o status do Operador Autônomo do Couchbase obtendo as implantações e também pode verificar especificamente o status do seu CouchbaseCluster implantação por meio da execução:

Você deverá ver uma saída semelhante à acima. Agora você pode passar para a implantação efetiva de um cluster do Couchbase(!).

Métodos alternativos de implantação

Leme é um gerenciador de pacotes para o Kubernetes, um pouco semelhante ao brew/apt, etc.

De acordo com Matt Faina, um dos cofundadores do Helm, um gerenciador de pacotes é:

"Ferramentas que permitem que alguém que tenha conhecimento de um aplicativo e de uma plataforma empacote um aplicativo para que outra pessoa que não tenha amplo conhecimento da plataforma ou da maneira como ele precisa ser executado na plataforma possa usá-lo."

Os pacotes no Helm são chamados de gráficos. Eles são unidades implantáveis para aplicativos vinculados ao Kubernetes.

Você pode use o Helm para configurar facilmente o Operador Autônomo do Couchbase e implantar clusters do Couchbase seguindo esta documentação. Por padrão, o gráfico oficial do Couchbase Helm implementa o Operador Autônomo do Couchbase, o Controlador de Admissão Dinâmica e um cluster do Couchbase totalmente configurado.

Implantação do cluster do Couchbase no CAO

Usarei a documentação em Como criar uma implantação do Couchbase como a fonte da verdade para esta seção, mas vou detalhá-la passo a passo.

Os clusters do Couchbase são definidos em relação ao Operator, conforme discutido acima, e essa definição é usada para verificar o status atual do CouchbaseCluster recurso.

Essa definição de YAML é derivada dos documentos, mas fiz algumas alterações para que as coisas sejam um pouco mais fáceis em seus nós gentis. (O excesso de contêineres em um laptop leva à Badness™.) Observe que as alterações incluem apenas a implantação do serviço de dados, mas ainda mantendo a contagem de nós em três para fornecer alta disponibilidade e desempenho, e alterando o nome para serviço_de_dados para evitar o apodrecimento do código.

Crie um arquivo chamado data_cluster.yaml e copie esse texto para ele:

Implemente a configuração usando o seguinte comando:

Você pode observar como o operador cria pods e provisiona o cluster de acordo com a sua especificação executando o seguinte logo após criar a implantação (acima). Isso mostrará o operador criando pods:

Observe que o pod cb-example-0000 não está marcado como pronto (0/1) e tem o status ContainerCreating (Criação de contêineres). Depois que a implantação for realizada, certifique-se de verificá-la.

Continue correndo kubectl get pods até que você veja três cb-example-**** com seu status como Em execução e 1/1 sob o Pronto coluna. Não avance até que esse estado seja satisfeito. Esse é o estado que você definiu em seu data_cluster.yaml.

Use o comando a seguir para verificar se o serviço de dados está disponível em seu cluster:

Observe que você deve receber um resultado semelhante ao do exemplo acima, mas, dependendo da implantação do cluster, os resultados serão diferentes.

Encaminhamento de porta e acesso à GUI do Couchbase

Para acessar outros serviços do Couchbase para sua PoC, você precisará acessar a GUI do Couchbase.

Este guia explica como configurar o encaminhamento de porta. O encaminhamento de portas é útil, pois você precisará acessar a GUI do Couchbase na sua Prova de Conceito. Ele também pode ser útil quando você precisar usar o cbc-pillowfight para testes de carga ou cbimport por colocar alguns documentos de amostra no cluster.

O uso da saída do comando anterior fornece um pod que está executando o serviço de dados. Esse nome de pod pode ser usado para encaminhar a porta para a GUI do Couchbase.

Execute o seguinte comando:

Esse comando deve lhe fornecer uma saída semelhante à listada acima. Depois de executar o comando, você pode acessar a GUI do Couchbase por meio de http:localhost:8091.

Modificação da implantação do Couchbase

Uma coisa que você definitivamente vai querer incluir em sua PoC é a capacidade de modificar seu cluster do Couchbase por meio do arquivo YAML. Isso lhe dá a flexibilidade para moldar e dimensionar seu cluster.

Observe que você não está usando kubectl create Não mais. Substitua a definição anterior por uma nova usando kubectl apply ou kubectl replace.

Um teste a ser executado seria adicionar outro serviço do Couchbase ao seu cluster atual. Como estou usando apenas meu laptop, adicionarei apenas um serviço adicional: eventing.

Depois de fazer a alteração, você pode implementar sua configuração no operador: kubectl apply -f. Verifique se o novo serviço foi adicionado usando o comando verbose obter cápsulas listagem. Por fim, siga as etapas para encaminhar a porta para a GUI novamente e verifique se o novo serviço está incluído no cluster.

Neste ponto, é importante observar que a adição incremental de recursos a um operador configuração é, de certa forma, uma prática recomendada. Com a adição iterativa de recursos e configurações à sua implementação, você pode testar o cluster em cada estágio, confirmando que sua configuração é válida.

Conclusão

Para concluir, neste artigo você aprendeu mais sobre a composição do Operador Autônomo do Couchbase e como pode orquestrá-lo para provisionar um cluster do Couchbase, especialmente para um projeto de Prova de Conceito (PoC).

O CAO verifica consistentemente o estado do seu cluster do Couchbase, garantindo que ele atenda à sua especificação definida. Além disso, você pode implantar a especificação do CAO em qualquer ambiente Kubernetes. Isso lhe dá um nível fantástico de liberdade e elimina a dependência de fornecedores de nuvem pública. Você pode confiar no Operator para manter a integridade do cluster de acordo com a sua especificação e, quando precisar executar funções como upgrades de cluster, poderá fazê-lo facilmente por meio do arquivo YAML.

No futuro, publicarei mais publicações no blog que explicarão como implantar ainda mais casos de uso do Couchbase Autonomous Operator. Se você não puder esperar até lá, analisar a documentação do CAO para começar a explorar. Mal posso esperar para ouvir o que você construiu.

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Sam Redman, engenheiro de soluções

Sam Redman é engenheiro de soluções na Couchbase. Sam trabalhou anteriormente em ambientes de desenvolvimento e SRE antes de ingressar na Couchbase.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.