vitormazali / hands-on-microservices

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

hands-on-microservices

Os exercícios estão cada um em um branch separado e que devem ser feitos na ordem, o ideal é fazer em aula, junto com a explicação:

exercício 1

exercício 2

exercício 3

exercício 4

exercício 5

exercício 6

exercício 7

exercício 8

exercício 9

exercício 10

exercício 11

exercício 12

exercício 13

exercício 14

exercício 15

exercício 16

Instalando o ambiente


Nos exercícios, vamos usar java, docker, git, apache bench, ccm, kubernetes, etc. Para isso vamos subir um ubuntu e realizar nossos testes nele.

Local com vagrant e virtual box


Sugiro usar esse modelo, é um modelo que você pode usar até para seu ambiente local de desenvolvimento.

Instale vagrant (instalação de vagrant no windows) e virtualbox.

Uma vez o vagrant instalado, entre no diretório vm (ou copie os arquivos do diretório vm desse repositório) e execute:

vagrant up

Aguarde a instalação, configuração da vm e então logue nela com:

vagrant ssh

Para sair da vm, execute

exit

Para remover a vm (dentro do host):

vagrant destroy

Se não for instalar o vagrant e quiser subir um ubuntu direto no virtualbox, veja o aqruivo bootstrap.sh com os comandos que você precisa executar para instalar todas dependências.

Local importando a imagem direto na máquina virtual


Essa opção não precisa instalar o vagrant, já vai importar para virtual box a imagem pronta para uso.

Instale a virtualbox, acesse o diretório https://drive.google.com/drive/u/0/folders/1DCq3_ufUVXUHXYSd3MZhCqnZi2NmTCYT e siga as instruções de https://docs.google.com/document/d/1gVOlSwZKuPcMl5v2zVbvsRZ5dfyi4sv0C970EfW6VKQ/edit?usp=sharing

Através de uma instância EC2 na Amazon


Video com esse passo a passo

Acesse o console da aws, se não tiver um usuário na aws, crie um novo (usuários novos tem 12 meses com 750h de alguns tipos de instância EC2 grátis).

Ao abrir o console, mude o idioma para português se preferir (lá embaixo na esqueda). Você deve estar vendo o painel EC2, no meio dessa tela, clique em executar instância.

Sera direcionado para a primeira etapa onde devem selecionar a imagem que será usada na sua instância EC2, selecione Ubuntu Server 18.04 LTS (a instalação do ccm, que vamos usar para um exercício, usa python e na imagem do ubuntu 20 só tem python3). Para achar a imagem mais fácil, pode selecionar no painel da direita o check de somente nível gratuito.

Depois de selecionar a imagem, você deve escolher o tipo da instância, escolha t2.micro (ou aquela mais alta que ainda esteja no nível gratuito). Pode então clicar em verificar e ativar, verifique se está tudo certo e então executar. Um detalhe, teremos exercicios que vamos subir bastante dependências, que podem consumir bastante memoria, t2.micro pode não conseguir rodar tudo que precisa, então se puder, crie também uma instância t2.medium para esses exercícios (apesar dessa instância não fazer parte do nível gratuito, qualquer coisa, crie no google cloud, usando os créditos de $ 90 que o google da para novos usuários).

Vai aparecer uma janela para gerar chaves de acesso à sua instância. Selecione criar novo par de chaves e digite um nome, clique fazer download do par de chaves, salve esse arquivo, então será habilitado o botão executar instâncias, clique nele (se você for criar novas instâncias depois, pode usar a mesma chave criada agora).

Pronto, já está subindo, clique em exibir instâncias, você verá as instâncias que tem rodando.

Clique nos detalhes da instância, veja o DNS IPv4 público, por ele que você vai acessar os serviços que os exercícios pedem para acessar pelo browser (use http, esse endereço substitui o 172.0.2.32 que usamos quando usamos vagrant).

Ainda nos detalhes, clique em segurança (segunda aba do menu abaixo do resumo), e então grupos de segurança. Você deve ver uma tela com os detalhes das regras de entrada da sua instância. Provavelmente vai estar habilitada apenas a porta 22 (ssh). Nós vamos executar vários serviços que rodam em portas distintas, para não precisar ficar abrindo uma a uma, clique em editar regras de entrada , em sequida adicionar regra, escolha tipo TCP personalizado, com intervalo de portas 1000-65000 e origem qualquer lugar, dessa forma (nunca faça isso em um ambiente produtivo, acabamos de deixar aberto praticamente todas as portas da instância). Clique em salvar regras e então volte aos detalhes da instância.

De volta aos detalhes da instância, agora clique em conectar (no menu lá no alto a direita), será apresentado formas de conectar a sua instância, tente conectar (use putty ou outro client ssh).

Uma vez conectado via ssh na instância, execute os comandos a seguir na home do usuário:

git clone https://github.com/luizroos/hands-on-microservices.git

chmod +x hands-on-microservices/amazon/bootstrap.sh

./hands-on-microservices/amazon/bootstrap.sh

Aguarde a instalação de tudo e pronto, pode seguir para executar os containers.

IMPORTANTE: Depois de usar, não esqueça de dar um stop na sua instância, vá nos detalhes da instância, no menu selecione estado da instância e então interromper instância (no outro dia basta iniciar ela novamente).

Através de uma instância de VM do Google Cloud


Acesse o console do google cloud. Crie uma conta do google ou, se já tiver, adicione o produto google cloud a sua conta. Vocẽ vai precisar ativar o faturamento na conta, o google cloud promete $ 90 em créditos para usar em 3 meses.

Na tela de gestão de recursos, clique em criar um projeto. Preencha o nome e salve.

Com o projeto criado selecionado, selecione no menu: Rede VPC > Firewall. Aqui vamos criar uma regra que permite acesso a todas as portas. Na listagem de regras, selecione criar regra de firewall. Na crição das regras, preencha o nome com valor allow-all, tags de destino com valor allow-all, intervalos de IP de origem com valor 0.0.0.0/0 e em protocolos e portas, deixe permitir todos. Crie a regra.

Com a regra criada, volta ao menu e selecione Compute Engine > Instâncias de VM para acessar a tela de instâncias de VM. Selecione criar. Preencha o nome da instância, o tipo de máquina e2-medium e a imagem Ubuntu 18.04 TS. Mais abaixo na tela preencha tag de rede com valor allow-all e mande criar a instância.

Espere a instância ficar pronta, na tabela, clique em SSH e selecione abrir na janela do navegador. Caso queira acessar a partir de um client SSH, selecione utilizar outro cliente ssh e siga as instruções (você vai precisar gerar uma chave, usando ssh-keygen por exemplo, onde vai gerar uma chave publica e uma privada, pegue a publica, acesse os detalhes da instância, busque por chaves SSH e preencha a chave pública, então use seu cliente com a chave privada para fazer o acesso através do IP externo da instância).

Nos detalhes da instância, procure pela tabela de interfaces de rede, copie o IP externo, esse IP você vai usar para acessar os serviços pelo browser (no lugar do 172.0.2.32 que é usado com vagrant)

Uma vez conectado via ssh na instância, execute os comandos a seguir na home do usuário:

git clone https://github.com/luizroos/hands-on-microservices.git

chmod +x hands-on-microservices/gcloud/bootstrap.sh

./hands-on-microservices/gcloud/bootstrap.sh

IMPORTANTE: Depois de usar, não esqueça de dar um stop na sua instância, selecione interromper no menu '...' da tabela de instâncias.

Rodando o primeiro container


Dentro da vm, execute:

docker pull alpine

Isso vai baixar uma imagem chamada alpine do Docker Registry e salva-la no nosso sistema. Você pode ver as imagens salvas com o comando:

docker images

Agora vamos executar um container baseado nessa imagem:

docker run alpine ls -l

Esse comando criou um container a partir da imagem alpine, e executou o comando 'ls -l' dentro do container, mostrando o output do comando para o client docker. Agora tente:

docker run -it alpine /bin/sh

Clonando o repositório da aplicação


Dentro da máquina virtual, faça clone do repositório e checkout desse branch:

git clone https://github.com/luizroos/hands-on-microservices.git

Caso esteja rodando dentro de uma instância na aws, você já deve ter feito o git clone antes.

About


Languages

Language:Shell 100.0%