... | @@ -26,10 +26,10 @@ Após vamos criar uma subrede dentro da VPC para conectar nossas VMs: |
... | @@ -26,10 +26,10 @@ Após vamos criar uma subrede dentro da VPC para conectar nossas VMs: |
|
2. No menu lateral, acessar **Subnets**
|
|
2. No menu lateral, acessar **Subnets**
|
|
3. Clicar em **Create Subnet**
|
|
3. Clicar em **Create Subnet**
|
|
4. Selecione a VPC criada (ex.: `swarm-vpc`)
|
|
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`)
|
|
5. Inserir um nome (ex.: `swarm-subnet`) e colocar o mesmo bloco CIDR (ex.: `172.30.0.0/24`)
|
|
5. Clicar em **Create VPC**
|
|
6. Clicar em **Create VPC**
|
|
|
|
|
|
Ainda é necessário que a nossa VPC tenha acesso à internet, portanto criaremos um Internet Gateway:
|
|
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
|
|
1. Acessar o painel do serviço **VPC** no console da AWS
|
|
2. No menu lateral, acessar **Internet Gateways**
|
|
2. No menu lateral, acessar **Internet Gateways**
|
... | @@ -39,7 +39,7 @@ Ainda é necessário que a nossa VPC tenha acesso à internet, portanto criaremo |
... | @@ -39,7 +39,7 @@ Ainda é necessário que a nossa VPC tenha acesso à internet, portanto criaremo |
|
7. Com o botão direito do mouse, clicar no novo Internet Gateway (*detached*) e escolher **attach to VPC**
|
|
7. Com o botão direito do mouse, clicar no novo Internet Gateway (*detached*) e escolher **attach to VPC**
|
|
8. Selecionar a VPC criada (ex.: `swarm-vpc`) e clicar em **Attach Internet Gateway**
|
|
8. Selecionar a VPC criada (ex.: `swarm-vpc`) e clicar em **Attach Internet Gateway**
|
|
|
|
|
|
Por fim, vamos criar modificar a Routing Table para endereçar o tráfego em `0.0.0.0/0` (rota padrão) para o Internet Gateway criado:
|
|
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
|
|
1. Acessar o painel do serviço **VPC** no console da AWS
|
|
2. No menu lateral, acessar **Route Tables**
|
|
2. No menu lateral, acessar **Route Tables**
|
... | @@ -48,18 +48,58 @@ Por fim, vamos criar modificar a Routing Table para endereçar o tráfego em `0. |
... | @@ -48,18 +48,58 @@ Por fim, vamos criar modificar a Routing Table para endereçar o tráfego em `0. |
|
5. Clicar em **add route** e inserir `0.0.0.0/0` para **destination** e seu Internet Gateway para **target**
|
|
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**
|
|
6. Clicar em **Save Changes**
|
|
|
|
|
|
### Parte 2 - Criação de Amazon EC2
|
|
### 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`
|
|
|
|
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:
|
|
|
|
|
|
|
|
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**
|
|
|
|
8. Na seção **Network Configuration** selecionar o grupo de segurança criado (ex.: `swarm-sg`)
|
|
|
|
9. Inserir um nome (ex.: `workshop-app`) e clicar em **Create New Key Pair**
|
|
|
|
> :warning: baixe o arquivo pois a AWS não realiza backup deste certificado!)
|
|
|
|
10. Na seção **Advanced Details** acessar o campo de texto **User Data** e inserir o seguinte *shell scrpit*:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
#!/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 Docker Swarm
|
|
### Parte 3 - Configuração do Docker Swarm
|
|
|
|
|
|
```sh
|
|
```
|
|
$ ssh -i ages-winter-2021.pem ec2-user@<ipv4-publico-ec2>
|
|
|
|
$ sudo yum update -y
|
|
|
|
$ sudo amazon-linux-extras install docker -y
|
|
|
|
$ sudo service docker start
|
|
|
|
$ sudo usermod -a -G docker ec2-user
|
|
|
|
$ logout
|
|
|
|
$ ssh -i ages-winter-2021.pem ec2-user@<ipv4-publico-ec2>
|
|
$ ssh -i ages-winter-2021.pem ec2-user@<ipv4-publico-ec2>
|
|
$ docker swarm init
|
|
$ docker swarm init
|
|
$ docker swarm join --token <swarm-token> <swarm-master>
|
|
$ docker swarm join --token <swarm-token> <swarm-master>
|
... | @@ -70,3 +110,8 @@ $ docker swarm join --token <swarm-token> <swarm-master> |
... | @@ -70,3 +110,8 @@ $ docker swarm join --token <swarm-token> <swarm-master> |
|
### Parte 5 - Publicação da imagem no Amazon ECR
|
|
### Parte 5 - Publicação da imagem no Amazon ECR
|
|
|
|
|
|
### Parte 6 - Aplicação da imagem no Docker Swarm
|
|
### Parte 6 - Aplicação da imagem no Docker Swarm
|
|
|
|
|
|
|
|
|
|
|
|
## Links interessantes:
|
|
|
|
|
|
|
|
- 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 |