Este blog tutorial prático aborda principalmente os detalhes da configuração do Couchbase Kubernetes Operator em um laptop/desktop com o minikube. Ele apresenta a configuração de certificados TLS personalizados e volumes persistentes. Além de verificar como aumentar e diminuir a escala do cluster. Também executamos backup/restauração do cluster do Couchbase e executamos um aplicativo de amostra usando o Python SDK.

A configuração usa o Couchbase Operator 1.2 no kubernetes de código aberto usando o minikube, que pode ser executado em um laptop. A implantação seria feita usando ferramentas de linha de comando para implantar no macOS.

Visão geral do tutorial prático

Pré-requisitos

Comandos da CLI para macOS, atualize o gerenciador de pacotes para mac usando o comando abaixo

Instale o hipervisor a partir do link abaixo

https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-OSX.dmg

Instalar o minikube

Instalar o kubectl

https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-macos

Inicie o minikube usando o comando abaixo

[HINT] Pare/saia de todos os aplicativos no laptop se eles não forem necessários para este tutorial. O minikube e o cluster couchbase em execução no minukube precisam de uma boa quantidade de recursos.

Os detalhes do ambiente para o minikube em meu laptop são os seguintes

Defina as vCPUs e a memória como 4 e 4GiB para que o Couchbase Operator funcione no laptop

Detalhes do cluster minikube

Implantação do operador autônomo do Couchbase

Implementação do Admission Controller

cd no diretório de arquivos para acessar o yaml necessário arquivos  O pacote precisa ser baixado para o laptop em seu diretório local

Primeiro, criaremos um namespace para localizar o escopo de nossa implantação

Deployment Admission Controller, que é um webhook mutante para validação de esquema

Consultar a implementação do Controlador de Admissão

Implantar o operador autônomo do Couchbase

Implantar a definição de recurso personalizado

O escopo do CRD pode ser amplo no cluster do k8s ou localizado no namespace. A escolha fica a cargo do administrador do devops/k8s. No exemplo abaixo, ele está localizado em um namespace específico

Implantar função de operador

Criar conta de serviço

Vincular a conta de serviço 'couchbase-operator' com operator-role

Implantar a implantação de operador autônomo do Couchbase

Implementação de consultas

Implantação do cluster do Couchbase

Implantar certificados TLS no namespace cbdb
Usando o arquivo de ajuda abaixo no link, certifique-se de usar o namespace apropriado, aqui eu usei 'cbdb'. O link é fornecido aqui

Consultar os segredos TLS implementados via kubectl

Implantar segredo para acessar a interface do usuário do Couchbase

Obter detalhes da StorageClass para o cluster minikube k8s

Implantar o cluster do Couchbase

O arquivo yaml para a implantação acima pode ser encontrado aqui

Se tudo correr bem, veremos o cluster do Couchbase implantado com PVs, certificados TLS

Acessar a interface do usuário do Couchbase
Obter os detalhes do serviço para o cluster do Couchbase

Expor o cluster CB por meio do serviço CB UI

Acesso à interface do usuário do Couchbase

Fazer login em http://localhost:8091 para acessar a interface do usuário CB

Verifique a ca raiz para verificar se o certificado x509 personalizado está sendo usado

Clique em Security->Root Certificate

Exclua um pod aleatoriamente, vamos excluir o pod 001

O servidor faria failover automaticamente, dependendo do autoFailovertimeout

Um nó perdido do Couchbase é recuperado automaticamente pelo Couchbase Operator como sua definição de cluster em constante observação

Aumento/diminuição de escala

É possível alterar a escala ou a redução com um único clique.

Aumento de escala

Alterar o tamanho de 3 para 4

Execute o comando abaixo

Bum!

O cluster é ampliado.

Cuidado: O cluster do K8s precisa ter recursos suficientes para ser ampliado.

Diminuição de escala

É exatamente o oposto do aumento de escala: reduzir o cluster a qualquer número. Mas não menos que 3.

O Couchbase MVP tem 3 nós.

Backup e restauração do servidor Couchbase

Backup do cluster CB via cbbackupmgr

Criar repositório de backup em um determinado volume/montagem de backup

Backup

Restaurar

Execute o aplicativo Python de exemplo em um namespace diferente

Criar namespace para a camada de aplicativos

Implantar o pod de aplicativo

Execute o programa python de exemplo para inserir um documento no cluster do couchbase

Faça login no shell/exec no pod do aplicativo dos pods

Preparar o pod para instalar o SDK do python

prep-app-pod para o SDK do python

Editar o programa com o FQDN do pod

Execute o comando abaixo depois de entrar no pod do couchbase

Obter o FQDN para o pod do aplicativo

Edite o programa com a string de conexão correta

A string de conexão para mim tem a aparência abaixo:

Como ambos os namespaces no minikube compartilham o mesmo kube-dns

Executar o programa

O documento reinserido deve ter a seguinte aparência

Conclusão

Implantamos o Couchbase Autonomous Operator com a versão 1.2 na versão do minikube: v1.2.0. O cluster do Couchbase requer controlador de admissão, RBACs com função limitada ao namespace (mais seguro). O CRD implantado tem escopo amplo de cluster, mas isso é por design. O cluster do Couchbase implementado tinha suporte a PV e certificados x509 do cliente.
Vimos como o cluster do Couchbase se autocura e recupera o cluster sem nenhuma intervenção do usuário.

O cbbackupmgr é o utilitário recomendado para realizar backups e restaurações. Também vimos como instalar o sdk python do Couchbase em um pod de aplicativo implantado em seu namespace e podemos fazer com que esse aplicativo converse com o servidor Couchbase e execute operações CRUD.

Limpeza (opcional)

Execute as etapas abaixo para desfazer a configuração de todos os ativos k8s criados.

Autor

A ordem da postagem em relação a outras postagens. Ram Dhakne

Ram Dhakne é consultor de soluções - Oeste dos EUA na Couchbase. Atualmente, ele ajuda clientes corporativos em sua jornada de inovações digitais e os ajuda a adotar tecnologias NoSQL. Seus interesses atuais são executar aplicativos persistentes como o servidor NoSQL Couchbase em clusters Kubernetes executados em AKS, GKE, ACS e OpenShift, protegendo de ponta a ponta no Kubernetes. Em sua vida pregressa, trabalhou em plataformas IaaS (AWS, GCP, Azure e nuvens privadas), produtos-alvo de backup corporativo e aplicativos de backup.

Um comentário

  1. Oi Ram,
    Obrigado ... este é um bom documento abrangente ... Poucos pontos que eu estava procurando :
    Posso editar a configuração do cluster para 0 em todos os serviços para fazer com que todos os nós desapareçam no console da Web.
    Além disso, qual é o método ou processo para interromper os pods e processos em execução se eu quiser reiniciar todo o cluster na estrutura autônoma? Há alguma possibilidade de fazer isso sem perder dados?

    Às vezes, as operações, como o rebalanceamento, são loucas e nunca param (vejo muitos tíquetes abertos no CB sem resolução), portanto, nesse cenário, eu gostaria de reiniciar o cluster, se possível.

Posição vertical a partir do topo para iniciar o corte como uma porcentagem da altura da imagem.