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)

Last edited by Henrique Reis Kops Jul 22, 2021
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Dia 2: Amazon Web Services (AWS)

Roteiro de trabalho

Ao final deste roteiro, o aluno terá construído uma infraestrutura na AWS capaz de suportar aplicações conteinerizadas utilizando o Docker Swarm para montar um pequeno cluster constituído de 3 Amazon EC2.

Pré requisitos:

  • O aluno deve possuir uma conta na AWS

👉 Manual de criar conta

Passo a passo

⚠ Repare em qual zona de disponibilidade você está criando sua infraestrutura!

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:

  1. Acessar o painel do serviço VPC no console da AWS
  2. No menu lateral, acessar Your VPCs
  3. Clicar em Create VPC
  4. Inserir um nome (ex.: swarm-vpc) e inserir um bloco CIDR (ex.: 172.30.0.0/24)
  5. Clicar em Create VPC

Após vamos criar uma subrede dentro da VPC para conectar nossas VMs:

  1. Acessar o painel do serviço VPC no console da AWS
  2. No menu lateral, acessar Subnets
  3. Clicar em Create Subnet
  4. Selecione a VPC criada (ex.: swarm-vpc)
  5. Inserir um nome (ex.: swarm-subnet) e colocar o mesmo bloco CIDR (ex.: 172.30.0.0/24)
  6. Clicar em Create VPC

Ainda é necessário que a nossa VPC tenha acesso à rede externa, portanto criaremos um gateway:

  1. Acessar o painel do serviço VPC no console da AWS
  2. No menu lateral, acessar Internet Gateways
  3. Clicar em Create Internet Gateway
  4. No menu de criação, clicar em Create Internet Gateway
  5. Voltar para o menu de Internet Gateways
  6. Com o botão direito do mouse, clicar no novo Internet Gateway (detached) e escolher attach to VPC
  7. Selecionar a VPC criada (ex.: swarm-vpc) e clicar em Attach Internet Gateway

Por fim, vamos criar modificar a tabela de roteamento para endereçar o tráfego em 0.0.0.0/0 (rota padrão) para o gateway criado:

  1. Acessar o painel do serviço VPC no console da AWS
  2. No menu lateral, acessar Route Tables
  3. Selecionar a Route table que está associada à VPC criada (ex.: swarm-vpc)
  4. Na seção Routes, no fim da página, clicar em Edit Route
  5. Clicar em add route e inserir 0.0.0.0/0 para destination e seu Internet Gateway para target
  6. Clicar em Save Changes

Parte 2 - Criação do cluster

Inicialmente é necessário definir quais portas das VMs estarão expostar na internet:

  1. Acessar o painel do serviço EC2 no console da AWS
  2. No menu lateral, acessar Security Groups
  3. Clicar em *Create Security Group
  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:
  • type HTTP e origin 0.0.0.0/0
  • type SSH e origin 0.0.0.0/0
  • type All TCP 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 Custom TCP e port interval 8080 e origin 0.0.0.0/0
  1. 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:

  1. Acessar o painel do serviço EC2 no console da AWS
  2. No menu lateral, acessar Launch Templates
  3. Clicar em *Create Launch Template
  4. Inserir um nome (ex.: swarm-template) e descrição
  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)
  7. Na seção Key pair clicar em Create New Key Pair
  • Inserir um nome (ex.: workshop-app) e clicar em Create New Key Pair

⚠ baixe o arquivo pois a AWS não realiza backup deste certificado!)

  1. Na seção Network Configuration selecionar o grupo de segurança criado (ex.: swarm-sg)
  2. Na seção Advanced Details acessar o campo de texto User Data e inserir o seguinte shell scrpit:
#!/bin/bash

# install docker 
yum update -y
amazon-linux-extras install docker -y
service docker start
sudo usermod -a -G docker ec2-user

Por fim, vamos executar as VMs a partir do modelo criado:

  1. Acessar o painel do serviço EC2 no console da AWS
  2. No menu lateral, acessar Launch Templates
  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)
  5. Clicar em Execute From Launch Template

Parte 3 - Configuração do cluster

$ ssh -i ages-winter-2021.pem ec2-user@<ipv4-publico-ec2>
$ docker swarm init
$ docker swarm join --token <swarm-token> <swarm-master>

Parte 4 - Execução das aplicações

TODO

Links interessantes:

  • https://medium.com/@fidelissauro/docker-swarm-02-quickstart-do-seu-cluster-de-ec2-na-amazon-aws-com-docker-1394d365cb04
Clone repository
  • Dia 1: Frontend, Backend e Git
  • Dia 2: Amazon Web Services (AWS)
  • Dia 3: Containers Docker e CI CD
  • Home