OpenShift é uma plataforma como serviço (PaaS) da Red Hat sobre contêineres Docker e Kubernetes. É uma plataforma de aplicativos de contêiner de código aberto da Red Hat baseada em contêineres do Docker e no gerenciador de cluster de contêineres do Kubernetes para desenvolvimento e implantação de aplicativos corporativos.
O Operator do Couchbase também é compatível com o OpenShift. Agora, vamos ver como você pode aumentar e diminuir a escala rapidamente, recuperar-se de falhas ou até mesmo alterar a arquitetura do seu cluster com apenas alguns comandos de linha:
Transcrição do vídeo:
Código:
1 |
https://github.com/couchbaselabs/kubernetes-starter-kit |
Pré-requisitos
Iniciando o Minishift
Para iniciar seu minishift, basta digitar o seguinte comando:
1 |
minishift iniciar |
Depois que ele for iniciado, execute o seguinte comando para adicionar oc em seu Classpath:
1 |
avaliação $(minishift oc-env) |
Além disso, você também pode incluir o seguinte complemento para poder acessar seu cluster como administrador:
1 |
minishift addon aplicar administrador-usuário |
Agora, para acessar o OpenShift, você pode usar o seguinte comando:
1 |
oc login -u administrador |
Configuração do Minishift
Há algumas coisas que devem ser criadas antes de começarmos. Vou apenas listar todos os comandos necessários, mas você pode consultar a documentação oficial aqui.
1 - Criar um projeto Openshift
1 2 3 |
oc login -u desenvolvedor oc novo-projeto operador-exemplo oc sair |
2 - Criar uma nova definição de recurso personalizado e função de cluster
1 2 3 4 |
oc login -u administrador oc criar -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/crd.yaml oc criar -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/cluster-role-sa.yaml oc criar -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/cluster-role-user.yaml |
3- Configuração do RBAC para um projeto OpenShift
1 2 3 4 5 |
oc criar conta de serviço couchbase-operador --espaço de nome operador-exemplo oc criar vinculação de função couchbase-operador --papel de agrupamento couchbase-operador --conta de serviço operador-exemplo:couchbase-operador oc adm política adicionar-scc-para-usuário anyuid sistema:conta de serviço:operador-exemplo:couchbase-operador oc criar vinculação de função conjunto de sofás --papel de agrupamento conjunto de sofás --usuário desenvolvedor --espaço de nome operador-exemplo oc criar aglutinação de papéis conjunto de sofás --papel de agrupamento conjunto de sofás --usuário desenvolvedor |
Implantação do operador do Couchbase no OpenShift
Agora que já configuramos tudo, vamos implantar o Operator do Couchbase. Como mencionei em um postagem anterior do blogNo caso do Operador, ele é responsável por automatizar parte do trabalho do DBA, como unir um novo nó ao cluster, reequilibrar dados, consolidar registros etc.
Você pode implementar o operador executando o seguinte comando:
1 |
oc criar -f https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/operator.yaml |
Execute o comando abaixo para verificar se a implementação foi executada com êxito:
1 |
oc obter cápsulas: |
Implantação do Couchbase no OpenShift
A implantação do Couchbase no OpenShift é quase igual à implantação do implantando-o no KubernetesVocê só precisa executar o seguinte comando dentro do diretório "kubernetes":
1 2 |
oc criar -f segredo.yaml // criar o usuário e a senha que usaremos para fazer login no console da Web oc criar -f couchbase-agrupamento.yaml |
Nosso arquivo yaml contém a especificação do cluster, como o nome do bucket, o número de servidores, serviços etc:
secret.yaml
1 2 3 4 5 6 7 8 |
Versão da API: v1 gentil: Segredo metadados: nome: cb-example-auth tipo: Opaco dados: nome de usuário: QWRtaW5pc3RyYXRvcg== #base64 para Administrador senhacGFzc3dvcmQ= #base64 para a senha |
couchbase-cluster.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Versão da API: couchbase.database.couchbase.com/v1beta1 gentil: CouchbaseCluster metadados: nome: cb-example especificação: imagem de base: couchbase/servidor versão: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsole: verdadeiro agrupamento: DataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memory_optimized autoFailoverTimeout: 30 baldes: - nome: couchbase-sample tipo: couchbase memoryQuota: 128 réplicas: 3 ioPrioridade: alto evictionPolicy (política de despejo): fullEviction Resolução de conflitos: seqno enableFlush: verdadeiro enableIndexReplica: falso servidores: - tamanho: 3 nome: all_services serviços: - dados - índice - consulta - pesquisa dataPath: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Consulte o documentação oficial para entender a função de cada propriedade.
No arquivo acima, especificamos que queremos 3 nós, o que significa que devemos ter 3 nós executando o Couchbase:
1 |
oc obter cápsulas |
Acesso ao seu banco de dados no OpenShift
Há muitas maneiras de expor o console da Web ao mundo externo. Neste artigo, vamos simplesmente encaminhar a porta para a máquina local com o seguinte comando:
1 |
oc porto-avançar cb-exemplo-0000 8091:8091 |
Agora, você deve conseguir acessar o Console da Web do Couchbase em sua máquina local em http://localhost:8091:
Observe que todos os nós criados já fazem parte de um cluster. Tudo isso foi feito automaticamente pelo Operador do Couchbase.
Recuperação de uma falha no nó do banco de dados no OpenShift
Vamos eliminar uma de nossas instâncias para ver como o cluster se comporta:
1 |
oc excluir cápsula cb-exemplo-0001 |
O Couchbase perceberá imediatamente que um nó "desapareceu" e o processo de recuperação será iniciado. Conforme especificamos em couchbase-cluster.yaml que sempre queremos 3 servidores em execução, o Kubernetes iniciará uma nova instância chamado cb-example-0004:
Uma vez cb-exemplo-004 está ativo, o operador entra em ação para unir o nó recém-criado ao cluster e, em seguida, aciona o rebalanceamento de dados
Dimensionamento do Couchbase no Open Shift
Se você acha que aumentar a escala de um banco de dados é difícil, deveria tentar reduzi-la. Felizmente, isso é algo muito simples com o Couchbase e o OpenShift. Tudo o que você precisa é alterar a configuração do cluster:
couchbase-cluster.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Versão da API: couchbase.database.couchbase.com/v1beta1 gentil: CouchbaseCluster metadados: nome: cb-example especificação: imagem de base: couchbase/servidor versão: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsole: verdadeiro agrupamento: DataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memory_optimized autoFailoverTimeout: 30 baldes: - nome: couchbase-sample tipo: couchbase memoryQuota: 128 réplicas: 3 ioPrioridade: alto evictionPolicy (política de despejo): fullEviction Resolução de conflitos: seqno enableFlush: verdadeiro enableIndexReplica: falso servidores: - tamanho: 1 //alterado nome: all_services serviços: - dados - índice - consulta - pesquisa dataPath: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Em seguida, execute o seguinte comando para enviar sua alteração para o OpenShift:
1 |
oc substituir -f couchbase-agrupamento.yaml |
No entanto, há um pequeno detalhe aqui, pois não podemos simplesmente eliminar dois nós ao mesmo tempo sem algum risco de perda de dados. Para evitar esse problema, o operador reduz o cluster gradualmente, uma única instância de cada vez, acionando o rebalanceamento para garantir que nenhum dado seja perdido durante o processo:
Dimensionamento do Couchbase no OpenShift
Vamos aumentar a escala novamente para 3 nós. Como você deve ter adivinhado, tudo o que precisamos fazer é alterar a variável tamanho parâmetro em couchbase-cluster.yaml voltar para 3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Versão da API: couchbase.database.couchbase.com/v1beta1 gentil: CouchbaseCluster metadados: nome: cb-example especificação: imagem de base: couchbase/servidor versão: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsole: verdadeiro agrupamento: DataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memory_optimized autoFailoverTimeout: 30 baldes: - nome: couchbase-sample tipo: couchbase memoryQuota: 128 réplicas: 3 ioPrioridade: alto evictionPolicy (política de despejo): fullEviction Resolução de conflitos: seqno enableFlush: verdadeiro enableIndexReplica: falso servidores: - tamanho: 3 //voltar para 3 servidores nome: all_services serviços: - dados - índice - consulta - pesquisa dataPath: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Em seguida, atualizamos nossa configuração executando
1 |
oc substituir -f Couchbase-agrupamento.yaml |
Após alguns minutos, você verá que agora temos 3 nós novamente:
Escala multidimensional
Você também pode aproveitar o dimensionamento multidimensional especificando os serviços que deseja executar em cada nó:
couchbase-cluster.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Versão da API: couchbase.database.couchbase.com/v1beta1 gentil: CouchbaseCluster metadados: nome: cb-example especificação: imagem de base: couchbase/servidor versão: enterprise-5.0.1 authSecret: cb-example-auth exposeAdminConsole: verdadeiro agrupamento: DataServiceMemoryQuota: 256 indexServiceMemoryQuota: 256 searchServiceMemoryQuota: 256 indexStorageSetting: memory_optimized autoFailoverTimeout: 30 baldes: - nome: couchbase-sample tipo: couchbase memoryQuota: 128 réplicas: 3 ioPrioridade: alto evictionPolicy (política de despejo): fullEviction Resolução de conflitos: seqno enableFlush: verdadeiro enableIndexReplica: falso servidores: - tamanho: 2 nome: data_and_index serviços: - dados - índice dataPath: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data - tamanho: 1 nome: query_and_search serviços: - consulta - pesquisa dataPath: /opt/couchbase/var/lib/couchbase/data indexPath: /opt/couchbase/var/lib/couchbase/data |
Novamente, precisamos enviar nossas alterações para o OpenShift com o seguinte comando:
1 |
oc substituir -f couchbase-agrupamento.yaml |
Nesse cenário, três novos nós serão criados: dois executando dados e índice e um executando pesquisa e consulta de texto completo
Conectando seu aplicativo ao Couchbase no OpenShift
A implantação de um aplicativo no OpenShift é muito semelhante à implantação no Kubernetes. A principal diferença é que você deve usar o oc em vez de usar kubectl. Este artigo mostra um processo passo a passo de como fazer isso.
Se você tiver alguma dúvida, envie-me um tweet para @deniswsrosa ou deixe um comentário abaixo.
Leia também:
- Correspondência difusa
-
Criação de microsserviços elásticos com Kubernetes e Spring Boot desde o início
Blog muito bem escrito! É bom mostrar como aumentar/diminuir a escala, mostrar a capacidade multidimensional, tudo no mesmo blog.
Muito obrigado! Se tiver alguma dúvida, fique à vontade para perguntar.
Oi Denis
Obrigado por esse artigo, ele parece fantástico, mas parece que o link não funciona mais, ou seja https://packages.couchbase.com/kubernetes/0.8.1-beta2/openshift/crd.yaml
Você pode me indicar onde eles moram agora?
Muito obrigado, Adrian