Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • workshop-ages-winter-2021
  • wiki
  • Wiki
  • Dia 2: Amazon Web Services (AWS)

Dia 2: Amazon Web Services (AWS) · Changes

Page history
Update Dia 2: Amazon Web Services (AWS) authored Jul 21, 2021 by Henrique Reis Kops's avatar Henrique Reis Kops
Hide whitespace changes
Inline Side-by-side
Dia-2:-Amazon-Web-Services-(AWS).md
View page @ 6fd5453a
...@@ -8,10 +8,14 @@ Ao final deste roteiro, o aluno terá construído uma infraestrutura na [AWS](ht ...@@ -8,10 +8,14 @@ Ao final deste roteiro, o aluno terá construído uma infraestrutura na [AWS](ht
> :point_right: [Manual de criar conta](https://tools.ages.pucrs.br/modelos/estudos/tutorialFluxoAges/blob/916322335b7bd2fa9fa338ff6e74bcf93bc6bbe0/Criando_sua_conta_pessoal_na_AWS.pdf) > :point_right: [Manual de criar conta](https://tools.ages.pucrs.br/modelos/estudos/tutorialFluxoAges/blob/916322335b7bd2fa9fa338ff6e74bcf93bc6bbe0/Criando_sua_conta_pessoal_na_AWS.pdf)
> :point_right: [Informações sobre o nível gratuito da AWS](https://aws.amazon.com/pt/free/?trk=ps_a134p0000078Pq7AAE&trkCampaign=acq_paid_search_brand&sc_channel=ps&sc_campaign=acquisition_BR&sc_publisher=google&sc_category=core-main&sc_country=BR&sc_geo=LATAM&sc_outcome=acq&sc_detail=aws&sc_content=Brand%20Core%20AWS_p&sc_matchtype=p&sc_segment=507891927302&sc_medium=ACQ-P%7CPS-GO%7CBrand%7CDesktop%7CSU%7CCore-Main%7CCore%7CBR%7CEN%7CText%7Cxx%7CPH&s_kwcid=AL!4422!3!507891927302!p!!g!!aws&ef_id=Cj0KCQjw_8mHBhClARIsABfFgpjy82IrDkpFiF4rg2TmvSVPv9w1kh8VX6-v5vagE2pGyFEFq0qzV1waAjHBEALw_wcB:G:s&s_kwcid=AL!4422!3!507891927302!p!!g!!aws&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all)
## Passo a passo ## Passo a passo
> :warning: Repare em qual zona de disponibilidade você está criando sua infraestrutura! > :warning: Repare em qual zona de disponibilidade você está criando sua infraestrutura!
> :question: A notação **< x >** significa que **x** deve ser modificado
### Parte 1 - Criação da rede ### Parte 1 - Criação da rede
Primeiro vamos criar uma VPC (*Virtual Private Cloud*), ou seja, uma porção de rede exclusiva para o nosso App: Primeiro vamos criar uma VPC (*Virtual Private Cloud*), ou seja, uma porção de rede exclusiva para o nosso App:
...@@ -22,7 +26,7 @@ Primeiro vamos criar uma VPC (*Virtual Private Cloud*), ou seja, uma porção de ...@@ -22,7 +26,7 @@ Primeiro vamos criar uma VPC (*Virtual Private Cloud*), ou seja, uma porção de
4. Inserir um nome (ex.: `swarm-vpc`) e inserir um bloco CIDR (ex.: `172.30.0.0/24`) 4. Inserir um nome (ex.: `swarm-vpc`) e inserir um bloco CIDR (ex.: `172.30.0.0/24`)
5. Clicar em **Create VPC** 5. Clicar em **Create VPC**
Após vamos criar uma subrede dentro da VPC para conectar nossas VMs: Após vamos criar uma subrede dentro da VPC para conectar nossos nodos:
1. Acessar o painel do serviço **VPC** no console da AWS 1. Acessar o painel do serviço **VPC** no console da AWS
2. No menu lateral, acessar **Subnets** 2. No menu lateral, acessar **Subnets**
...@@ -52,11 +56,11 @@ Por fim, vamos criar modificar a tabela de roteamento para endereçar o tráfego ...@@ -52,11 +56,11 @@ Por fim, vamos criar modificar a tabela de roteamento para endereçar o tráfego
### Parte 2 - Criação do cluster ### Parte 2 - Criação do cluster
Inicialmente é necessário definir quais portas das VMs estarão expostar na internet: Inicialmente é necessário definir quais portas dos nodos estarão expostas na internet:
1. Acessar o painel do serviço **EC2** no console da AWS 1. Acessar o painel do serviço **EC2** no console da AWS
2. No menu lateral, acessar **Security Groups** 2. No menu lateral, acessar **Security Groups**
3. Clicar em **Create Security Group* 3. Clicar em **Create Security Group**
4. Inserir um nome (ex.: `swarm-sg`), descrição e selecionar a VPC criada (ex.: `swarm-vpc`) 4. Inserir um nome (ex.: `swarm-sg`), descrição e selecionar a VPC criada (ex.: `swarm-vpc`)
5. Na seção **Inbound Rules** acrescentar as seguintes regras: 5. Na seção **Inbound Rules** acrescentar as seguintes regras:
- **type** `HTTP` e **origin** `0.0.0.0/0` - **type** `HTTP` e **origin** `0.0.0.0/0`
...@@ -65,13 +69,14 @@ Inicialmente é necessário definir quais portas das VMs estarão expostar na in ...@@ -65,13 +69,14 @@ Inicialmente é necessário definir quais portas das VMs estarão expostar na in
- **type** `All UDP` e **origin** o próprio Security Group (ex.: `swarm-sg`) - **type** `All UDP` e **origin** o próprio Security Group (ex.: `swarm-sg`)
- **type** `All TCP` e **origin** o próprio Security Group (ex.: `swarm-sg`) - **type** `All TCP` e **origin** o próprio Security Group (ex.: `swarm-sg`)
- **type** `Custom TCP` e **port interval** `8080` e **origin** `0.0.0.0/0` - **type** `Custom TCP` e **port interval** `8080` e **origin** `0.0.0.0/0`
- **type** `Custom TCP` e **port interval** `9090` e **origin** `0.0.0.0/0`
6. Clicar em **Create Security Group** 6. Clicar em **Create Security Group**
Para facilitar a criação do cluster, podemos criar um template de execução para que as VMs iniciem com o Docker instalado: Para facilitar a criação do cluster, podemos criar um template de execução para que os nodos iniciem com o Docker instalado:
1. Acessar o painel do serviço **EC2** no console da AWS 1. Acessar o painel do serviço **EC2** no console da AWS
2. No menu lateral, acessar **Launch Templates** 2. No menu lateral, acessar **Launch Templates**
3. Clicar em **Create Launch Template* 3. Clicar em **Create Launch Template**
4. Inserir um nome (ex.: `swarm-template`) e descrição 4. Inserir um nome (ex.: `swarm-template`) e descrição
5. Na seção **Amazon Machine Image** selecionar `Amazon Linux 2 AMI` 5. Na seção **Amazon Machine Image** selecionar `Amazon Linux 2 AMI`
6. Na seção **Instance Type** selecionar o tipo `t2.micro` (*free tier*) 6. Na seção **Instance Type** selecionar o tipo `t2.micro` (*free tier*)
...@@ -91,26 +96,73 @@ service docker start ...@@ -91,26 +96,73 @@ service docker start
sudo usermod -a -G docker ec2-user sudo usermod -a -G docker ec2-user
``` ```
Por fim, vamos executar as VMs a partir do modelo criado: Por fim, vamos executar os nodos a partir do modelo criado:
1. Acessar o painel do serviço **EC2** no console da AWS 1. Acessar o painel do serviço **EC2** no console da AWS
2. No menu lateral, acessar **Launch Templates** 2. No menu lateral, acessar **Launch Templates**
3. Selecionar o modelo criado (ex.: `swarm-template`) e, em **actions**, selecionar **Execute From Launch Template** 3. Selecionar o modelo criado (ex.: `swarm-template`) e, em **actions**, selecionar **Execute From Launch Template**
4. Selecionar a quantidade de de instâncias para executar (ex.: `3`) 4. Selecionar a quantidade de de instâncias para executar (ex.: `3`)
5. Na seção **Network Configuration** selecionar a suberde criada (ex.: `swarm-subnet`)
5. Clicar em **Execute From Launch Template** 5. Clicar em **Execute From Launch Template**
### Parte 3 - Configuração do cluster ### Parte 3 - Configuração do cluster
``` Para configurar o cluster Swarm é necessário que seja feito o SSH em cada uma das máquinas criadas, iniciando a Docker Engine em *swarm mode*:
$ ssh -i ages-winter-2021.pem ec2-user@<ipv4-publico-ec2>
1. Acessar o painel do serviço **EC2** no console da AWS
2. No menu lateral, acessar **Instances**
3. Verificar as instâncias (nodos) criadas e buscar **Public IPV4 Address**
4. Para a primeira instância executar
```sh
# acessar via SSH
$ ssh -i <certificado> ec2-user@<ipv4-publico-ec2>
# iniciar a nodo como mestre Swarm
$ docker swarm init $ docker swarm init
$ docker swarm join --token <swarm-token> <swarm-master>
``` ```
5. Nomear esta máquina de `swarm master` no menu **Instances**
6. Para as demais instâncias (caso existam), executar:
```sh
# acessar nodo via SSH
$ ssh -i <certificado> ec2-user@<ipv4-publico-ec2>
# iniciar nodo como escravo Swarm
$ docker swarm join --token <token-swarm> <ip-interno-swarm-master>
```
7. Nomear as demais máquinas de `swarm-node-<numero>` no menu **Instances**
### Parte 4 - Execução das aplicações ### Parte 4 - Execução das aplicações
TODO Para executar as aplicações no cluster devemos acessar a instância mestre (`master`) e clonar os repositórios, e então criar suas respectivas imagens Docker para executá-las como serviços Swarm:
```sh
# criar uma rede overlay para execução dos apps
$ docker network create -d overlay <nome-rede>
# clonar repositório
$ git clone <repositório-gitlab>
# criar imagem Docker
$ docker build -t <tag-imagem> .
# executar imagem como serviço Swarm
$ docker service create --name <nome-serviço> --publish published=<porta-swarm>,target=<porta-container> --network <nome-rede> <tag-imagem>
```
### Parte 5 - Acesso da aplicação
Para acessar a aplicação executando no cluster basta:
1. Acessar o painel do serviço **EC2** no console da AWS
2. No menu lateral, acessar **Instances**
3. Buscar o **Public IPV4 Address** da instância (nodo) mestre
4. Colocar como endereço no seu navegador e utilizar as portas `8080`, `9090` e `80`!
Agora você tem uma aplicação conteinerizada na AWS, parabéns!! :tada: :clap: :rocket:
## Links interessantes: ## Referências:
- https://medium.com/@fidelissauro/docker-swarm-02-quickstart-do-seu-cluster-de-ec2-na-amazon-aws-com-docker-1394d365cb04 - [Swarm overview](https://docs.docker.com/engine/swarm/)
\ No newline at end of file - [Swarm route mesh](https://docs.docker.com/engine/swarm/ingress/)
- [Swarm overlay network](https://docs.docker.com/network/network-tutorial-overlay/)
- [Swarm em EC2](https://medium.com/@fidelissauro/docker-swarm-02-quickstart-do-seu-cluster-de-ec2-na-amazon-aws-com-docker-1394d365cb04)
\ No newline at end of file
Clone repository
  • Dia 1: Frontend, Backend e Git
  • Dia 2: Amazon Web Services (AWS)
  • Dia 3: Containers Docker e CI CD
  • Home