Deployment Orchestration¶
Objetivos:
- Entender os conceitos básicos sobre uma plataforma de gerenciamento de aplicações distribuídas.
- Entender os conceitos básicos de comunicação entre aplicações e serviços.
Pré-requisitos:
- Terminar o capítulo anterior (Bare metal)
- Realizar a leitura sobre o Juju. [https://juju.is/docs/juju/how-to].
Info
DIVISÃO DO ROTEIRO O Roteiro é dividido em 2 partes principais.
- Criando Infraestrutura para deploy com Juju (Deployment Orchestration)
- Utilizando a infraestrutura Bare Metal com o Juju - exemplo de deploy Wordpress
Criando Infraestrutura para deploy com Juju¶
Ansible é um gerenciador de deploy que consegue lidar com a instalação e configuração de um conjunto de nós pré reservados, mas não consegue realizar o provisionamento direto com o MaaS (gerenciador de Bare-metal). Para montar a nossa Cloud Privada, vamos utilizar outro orquestrador de deploy que integra com o MaaS.
- Antes de continuar, verifique se todas máquinas (server1, server2, server3, server4 e server5) estão Ready no MAAS. Faça o release das máquinas Django e Postgres caso necessário.
- Acesse o main via SSH e instale o Juju
- $ sudo snap install juju --channel 3.1
- Verifique se o Juju enxerga o MaaS como um provedor de recursos
- $ juju clouds
Adicione o cluster MAAS para que o Juju possa gerenciá-lo como uma cloud. Vamos fazer isso através de um arquivo de definição de cloud, como maas-cloud.yaml:
- Caso não possua o MaaS como opção, deve adicioná-lo, confirme se o arquivo corresponde com o seu ambiente
-
Criar um arquivo de configuração: maas-cloud.yaml (atenção com a formatação)
-
$ juju add-cloud --client -f maas-cloud.yaml maas-one
Adicione as credenciais MAAS para que o Juju possa interagir com a nova cloud adicionada. Vamos novamente usar um arquivo para importar nossas informações, como maas-creds.yaml:
credentials: maas-one: anyuser: auth-type: oauth1 maas-oauth: LGJ8svffZZ5kSdeA8E:9kVM7jJpHGG6J9apk3:KE65tLnjpPuqVHZ6vb97T8VWfVB9tM3j
- $ juju add-credential --client -f maas-creds.yaml maas-one
- Obs: OAuth é o API KEY gerado no MaaS (dentro do menu do usuário)
Crie o controlador (usando a série ‘jammy’) para a cloud ‘maas-one’ e chame-o de ‘maas-controller’: Iremos criar o controlador no server1 para isso faça a tag da maquina com o nome juju através do dashboard MAAS na maquina server1.
- $ juju bootstrap --bootstrap-series=jammy --constraints tags=juju maas-one maas-controller
- Para verificar o status do controller utilize:
- $ juju status
Ao contrário do Ansible, Juju necessita de uma máquina exclusiva para controlar todo o deploy. Essa máquina é alocada automaticamente durante o bootstrap e controlará todo o deploy que faremos no próximo roteiro. Ainda, assim como você usou o maas-cli na primeira implantação, você usou o juju-cli para interagir com o serviço.
Para dúvidas relacionadas ao deploy com o juju acesse a documentação oficial: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/install-juju.html
Utilizando a infraestrutura Bare Metal com o Juju¶
Vamos utilizar o Juju para deploy de uma das arquiteturas abaixo.
As aplicações que vamos utilizar são:
-
Grafana junto com o Prometheus
Faca o deploy da Aplicacao Grafana e Prometheus¶
Deploy Grafana e Prometheus¶
O Grafana é uma plataforma de código aberto que simplifica a apresentação visual de dados, como gráficos e painéis, facilitando a compreensão em tempo real de sistemas e informações.
Para funcionar, o Grafana requer um banco de dados para armazenar configurações, metadados e informações relacionadas à exibição de dados em seus painéis e gráficos. Ele é compatível com vários bancos de dados, como Prometheus, MySQL, PostgreSQL, InfluxDB, SQLite3 e outros. Neste contexto, estamos utilizando o Prometheus como banco de dados, mas você tem a flexibilidade de escolher outro se preferir.
- Instale a aplicação charm para utilizarmos, vamos baixar o charm do Grafana do repositório charm-hub.
Charm
O charm é como um pacote que contém instruções sobre como instalar e configurar um aplicativo, como o Grafana. Você simplesmente escolhe o charm do Grafana, define algumas configurações e o Juju cuida do restante, tornando o processo de implantação mais fácil e consistente em ambientes de nuvem. Entenda melhor sobre o que é o charm lendo a sua documentação charm-hub.
$ sudo snap install charm --channel=2.x/stable --classic
- Baixe o charm do https://charmhub.io/grafana usando o comando charm pull.
-
$ charm pull grafana
-
Também vamos utilizar o charm do Prometheus
$ charm pull prometheus2
Agora é só fazer o Deploy com o auxilio do JUJU¶
- Faça o deploy do charm prometheus2, para fazer deploy do charm local, use juju deploy ./pasta
Deploy do charm grafana¶
- Ao realizar o Deploy do grafana, acompanhe o processo utilizando o comando
juju status
Caso ocorra um erro durante a instalação (hook failed: install
): * Devemos acessar o log da aplicação via o comando juju debug-log --replay --include grafana/2
- Nos logs voce encontrará mais informações da causa do erro
NO_PUBKEY
-
Ele ocorre, pois a chave GPG do repositório do grafana não está no seu servidor, quando o juju tenta fazer
apt-get update
o sistema não consegue verificar a autenticidade do repositório. -
Para consertar devemos acessar o servidor do grafana e instalar a chave manualmente:
juju ssh grafana/2
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
Ao rodar os comandos acima, a chave será instalada no sistema. Aguarde alguns instantes e o processo de instalação do grafana seguirá normalmente. Acompanhe o andamento usando o comando juju status
.
Integrando Grafana com Prometheus¶
-
Utilize a documentação encontrada no README do charm do grafana.
-
Acesse o dashboard do Grafana do seu computador e verifique o funcionamento do sistema.
-
Verifique se a integração foi feita corretamente. Para isso crie um dashboard dentro do grafana e adicione uma visualização (deve aparecer o prometheus como source).
Exercise
Checkpoint-4
- De um print da tela do Dashboard do MAAS com as Maquinas e seus respectivos IPs.
- De um print de tela do comando "juju status" depois que o Grafana estiver "active".
- De um print da tela do Dashboard do Grafana com o Prometheus aparecendo como source.
OPCIONAL - Deploy Wordpress e MySQL¶
O Wordpress é uma plataforma de gerenciamento de conteúdo (CMS) de código aberto, baseada em PHP e MySQL. Ele é usado por mais de 60 milhões de sites, incluindo 33,6% dos 10 milhões de sites mais bem classificados. Ele oferece ferramentas poderosas que permitem aos usuários criar, editar e publicar conteúdo na web sem a necessidade de conhecimentos avançados em programação.
Para funcionar, o Wordpress requer um banco de dados para armazenar informações relacionadas ao conteúdo do site. Ele é compatível com vários bancos de dados, como MySQL, MariaDB, PostgreSQL, SQLite e outros. Neste contexto, estamos utilizando o MySQL como banco de dados, mas você tem a flexibilidade de escolher outro se preferir.
- Instale a aplicação charm para utilizarmos, vamos baixar o charm do Wordpress do repositório charm-hub.
Charm
O charm é como um pacote que contém instruções sobre como instalar e configurar um aplicativo, como o Grafana. Você simplesmente escolhe o charm do Grafana, define algumas configurações e o Juju cuida do restante, tornando o processo de implantação mais fácil e consistente em ambientes de nuvem. Entenda melhor sobre o que é o charm lendo a sua documentação charm-hub.
$ sudo snap install charm --channel=2.x/stable --classic
- Baixe o charm do https://charmhub.io/wordpress usando o comando charm pull.
-
$ charm pull wordpress
-
Também vamos utilizar um charm previamente modificado do MYSQL...Faça o clone do repositório GIT.
$ git clone https://github.com/TiagoDemay/charm-mysql.git
Agora é só fazer o Deploy com o auxilio do JUJU¶
- Faça o deploy do charm charm-mysql, para fazer deploy do charm local, use juju deploy ./pasta
Modifique o charm wordpress¶
- Dentro do diretório criado, edite o arquivo metadata.yaml:
-
modifique para utilizar apenas Ubuntu Bionic
-
Faça o deploy do charm wordpress alterado localmente, utilize a documentação encontrada no README do charm do wordpress que vocês baixaram, pare antes do capitulo Scaled Down Usage for Personal Use
-
Acompanhe o andamento usando o comando juju status, após terminado, acesse o Wordpress do seu computador, e verifique o funcionamento do sistema
Limpeza de ambiente !!!¶
- Limpe o deploy do Juju usando o command: juju destroy-controller main
Seminário¶
Voce fará um seminário sobre um tema pré definido, para completar a entrega deste roteiro ... peca o tema para o professor¶
Conclusão: SOMENTE PARA PENSAR !!!¶
O Ansible utilizou indiretamente o MaaS como provedor de recursos físicos. O MaaS por sua vez forneceu o que havia disponível no rack. Você acha que seria necessária uma máquina de 32Gb para rodar um Webserver ou um Load Balancer? Extrapole a resposta para um Datacenter real, onde as máquinas possuem configurações muito superiores. Como resolver esse problema?