Recentemente, anunciamos a última prévia do Operador autônomo do Couchbase (CAO) 2.0 beta. Este lançamento é uma atualização significativa do Couchbase Autonomous Operator. O Couchbase Autonomous Operator 2.0 apresenta vários novos recursos de nível empresarial com recursos totalmente autônomos - segurança, monitoramento, alta disponibilidade e capacidade de gerenciamento. Neste blog, examinaremos em detalhes como um deles funciona.

Coleção de métricas da Prometheus

O operador mais recente oferece integração nativa com o Couchbase Prometheus Exporter para coletar e expor as métricas do Couchbase Server. Essas métricas exportadas podem ser extraídas pelo Prometheus e, em seguida, visualizadas em ferramentas como o Grafana.

Descreveremos as etapas para implantar o cluster com o Couchbase Prometheus Exporter e analisaremos algumas das métricas por meio do Grafana. Esta será uma implantação simples de teste de cluster único e não detalhará todas as outras etapas necessárias para uma implantação em nível de produção.

Estaremos acompanhando de perto o Tutorial do Couchbase Autonomous Operator 2.0 Beta sobre a instalação no Amazon EKS.

Pré-requisitos

Presumo que você já tenha um Nuvem privada virtual da Amazon (VPC) a ser usado. Siga a documentação sobre Primeiros passos com o Amazon EKS e instale o seguinte:

Arquitetura de implantação

Uma rápida visão geral da arquitetura de nossa implantação.

Com base no diagrama acima:

1: Crie o cluster do Kubernetes no Amazon EKS. O cluster gerencia os recursos e serviços do Kubernetes.
2: Adicione recursos do Couchbase instalando as definições de recursos personalizados do Couchbase.
3: Instale o Operador Autônomo do Couchbase. Isso cria dois pods, o Operator e o Admission Controller no namespace Default.
4: implante um cluster do Couchbase de 3 nós no namespace padrão. Isso cria 3 pods, cada pod tem um contêiner do Couchbase 6.5.0 e um contêiner do Couchbase Metrics Exporter.
5: Crie um ServiceMonitor que informe ao Prometheus para monitorar um recurso de serviço que define os pontos de extremidade que o Prometheus coleta.
6: Criar um serviço definirá a porta que descrevemos em nosso ServiceMonitor anteriormente no namespace Default.
7: Adicione recursos do Prometheus instalando as definições de recursos personalizados do Prometheus.
8: Crie os pods do Prometheus/Grafana no namespace Monitoring. 

Criar o cluster e configurar o kubectl

Configurar o kubectl

Esse comando é fundamental, pois define as variáveis relevantes do Amazon Resource Name (ARN) em ~/.kube/config. Opcionalmente, você pode adicionar --region regionName para especificar um cluster em uma região diferente da padrão. (Sua região padrão deve ter sido especificada quando você configurou a CLI do AWS pela primeira vez por meio de aws configurecomando).

Instalar as definições de recursos personalizados (CRD)

Observação: Fiz o download do Operator para MacOS, renomeei o pacote de  couchbase-autonomous-operator-kubernetes_2.0.0-macos-x86_64 para cao-2 e cd'd nesse diretório. 

A primeira etapa da instalação do Operator é instalar as definições de recursos personalizados (CRD) que descrevem os tipos de recursos do Couchbase.

Instale o Operador Autônomo 2.0

Verificar o status do Operador

O Operator está pronto para implantar recursos do CouchbaseCluster quando as implantações do Dynamic Admission Controller (couchbase-operator-admission) e do Operator (couchbase-operator) estiverem totalmente prontas e disponíveis.

Preparar a configuração do cluster do Couchbase

Implantarei um cluster de 3 nós do Couchbase Server 6.5.0 com o Prometheus Couchbase Exporter. Para isso, criei meu-cluster.yaml no diretório atual. Este é apenas o meu exemplo. Aqui está o arquivo:

Observações:

  • Usei apenas um conjunto mínimo de parâmetros de configuração. Consulte a seção Documentação do recurso de cluster do Couchbase para obter uma lista completa.
  • Incluiu a seção de segredos no mesmo arquivo para manter as coisas simples. 
  • Utilizou apenas os serviços de dados, consulta, índice e pesquisa. 
  • Gerenciar meus próprios baldes em vez de deixar isso para o Operador.
  • Anote o rótulo do cluster cb-exemplo pois isso será usado pelo Prometheus para descobrir o serviço posteriormente.

Dica: Certifique-se de que buckets.managed esteja definido como false. Caso contrário, se você criar um bucket manualmente quando o cluster estiver em funcionamento, o Kubernetes o descartará automaticamente.

Implantar o cluster do Couchbase

Tanto o segredo quanto o cluster são criados. Isso não significa que eles já estejam em funcionamento; para isso, você terá que verificar conforme descrito na próxima etapa.

Verificar a implantação

Certifique-se de que todos os pods estejam Pronto e Em execução. Caso haja algum problema, você pode obter os registros do Operador.

Opcional: Obter os registros

Se você encontrar algum problema na etapa anterior, poderá verificar os registros conforme mostrado abaixo.

Aqui, o cluster do Couchbase foi implantado sem nenhum erro.

Opcional: Examine um pod do Couchbase.

Vamos descrever um pod do Couchbase para verificar o que está sendo executado.

Na saída acima, vemos que cada pod do Couchbase está executando 2 contêineres. O primeiro está executando o Couchbase Server 6.5.0 e o outro está executando o Couchbase Prometheus Exporter, que está usando a porta 9091.

Acessar a interface de administração do Couchbase

Em um ambiente de produção real, você normalmente implantaria usando o DNS e um LoadBalancer atuando como proxy e acessaria a interface do usuário do Couchbase de forma segura, com SSL usando registros DNS SRV. Como estamos em um ambiente de teste, acessaremos a interface do usuário do Couchbase diretamente da porta 8091. Precisamos de mais uma etapa para conseguir isso, que é o encaminhamento de porta.

Encaminhamento de portas

Agora implantamos três pods; no entanto, basta fazer o port forward de um pod para acessar a interface de usuário de administração do Couchbase.

Acessar a interface do usuário

http://localhost:8091

Criar os buckets

Adicione o bucket de amostra e crie o bucket de travesseiro

Executar uma carga de trabalho para gerar algumas métricas

Usaremos cbc-pillowfight para gerar a carga de trabalho. Felizmente, isso vem junto com o Operator e vamos implementá-lo. Vamos fazer uma pequena modificação no arquivo YAML primeiro, para que ele não pare de carregar os dados, mas execute operações no bucket. Usaremos o bucket de travesseiros que acabamos de criar.

Altere o bucket de padrão para pillow e altere a opção -c (número de loops) de 10 para 10.000.

Então:

Testando o Prometheus e o Grafana localmente

Agora temos um cluster do Couchbase de três nós com o Prometheus Couchbase Exporter. O Exporter está extraindo as métricas do Couchbase para a porta 9091. Agora, poderíamos encaminhar essa porta da mesma forma que encaminhamos a porta 8091 para acessar a interface do usuário do Console da Web do Couchbase em nosso desktop. Com essa porta encaminhada, poderíamos ter o Prometheus e o Grafana em execução em contêineres do Docker no desktop e usar a porta 9091 encaminhada para obter as métricas no Prometheus e visualizá-las no Grafana.

Com a abordagem acima, há uma limitação. A primeira é que teríamos que encaminhar a porta 9091 de todos os três nós e esses nomes de nós seriam codificados. A codificação de nomes de nós é um grande problema em um ambiente Kubernetes. Além disso, você realmente não faria o encaminhamento de portas em um ambiente de produção, onde normalmente faria a implantação com DNS e usaria o DNS SRV para se conectar ao cluster. Por fim, sua prática recomendada é executar o Prometheus e o Grafana no próprio Kubernetes, alinhando-se ao paradigma nativo da nuvem.

Próximas etapas

Em Parte 2Se você não tiver um DNS, faremos exatamente isso, com exceção do DNS, pois ainda queremos manter isso o mais simples possível para testes rápidos.

Recursos:

Autor

Postado por Prasad Doddi

Prasad é gerente de produto sênior de suporte, gerenciabilidade e ferramentas do Couchbase. Antes do Couchbase, ele trabalhou na IBM em vários departamentos, incluindo desenvolvimento, controle de qualidade, suporte e vendas técnicas. Prasad tem mestrado em Engenharia Química pela Clarkson University. Eng. pela Clarkson University, NY.

Um comentário

  1. Obrigado, Prasad, por compartilhar. Posso perguntar quais são as principais métricas a serem monitoradas para decidir quando escalar o cluster e se é possível configurar o escalonamento automático do cluster couchbase no K8s?

    Saudações

Deixar uma resposta