vpc_subnets - rafaelglima/smarthealth GitHub Wiki

Criando as VPCs e Subnets

Criando a VPC e Subnets da Camada Usuários (Stacks via CloudFormation)

Código CloudFormation para a VPC da Camada em Névoa (Fog Layer)

  1. (Arquivo: shdm-item1-vpc-sa-east-1.yaml)

Deve-se criar a Stack na região de São Paulo (sa-east-1)

Observações:

  • Habilitar nas VPCs os Hosts DNS Resolution e Hosts DNS Hostnames.
  • Para uma função Lambda conseguir conectividade com destino à Internet deve-se criar um NAT Gateway (isso será necessário para a Lambda que acessará por exemplo a API na camada em nuvem).
  • Deve-se criar o Nat Gateway em uma rede pública e então na tabela de roteamento da rede privada apontar a rota padrão saindo pelo Nat Gateway.

Código CloudFormation para a VPC da Camada em Nuvem (Cloud Layer)

  1. (Arquivo: shdm-item2-vpc-us-east-1.yaml)

Deve-se criar a Stack na região da Virgínia (us-east-1)

Criando a instância EC2 do Bastion Host via CloudFormation

  1. (Arquivo: shdm-item4-ec2-bastionhost.yaml)
  • Antes de criar a stack deve-se criar o par de chaves e definir o mesmo nome que no script do CloudFormation (ex.: shdmkey)
  • Altere a permissão do arquivo shdmkey.pem com o comando: chmod 400 shdmkey.pem
  • Deve-se criar um role do EC2 com permissão para gerir serviços do AWS e anexar à instância criada
  • Criar usuário via IAM com acesso a cli e crie sua Access Key.

Preparando a instância

  • Instalando pacotes
sudo apt update
sudo apt upgrade -y
sudo reboot

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws configure
[inserir as credenciais do usuário criado com acesso via cli]
  • Observação: Em um ambiente de produção, como boa prática, pode-se criar uma role com permissões específicas para serviços do AWS e anexar essa role diretamente na Instância EC2, a fim de não utilizar o "aws configure" pois ficam salvas na instância.

  • Instalando o cliente PostgreSQL

curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null

echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list

sudo apt update

sudo apt install postgresql-client-16

  • Instalando o Kubectl
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.0/2024-01-04/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
  • Instalando o eksctl
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"
tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
sudo mv /tmp/eksctl /usr/local/bin

Criando o enlace de comunicação utilizando VPC Peering

  1. (Arquivo: shdm-item5-vpc-peering.yaml)
  • Estando na região de São Paulo (sa-east-1) identifique o VPC Id da Camada em Nuvem (VPC de destino) e altere no script CloudFormation (shdm-item5-vpc-peering)
  • Criar a stack que adiciona o VPC Peering entre a Camada em Névoa e Camada em Nuvem
  • Crie posteriormente as rotas (ida e volta) entre as subredes da Camada em Névoa e Camada em Nuvem

Criando as rotas das Camadas em Névoa e em Nuvem

  1. (Arquivo: shdm-item6-rotas-sa-east-1.yaml)
  2. (Arquivo: shdm-item7-rotas-us-east-1.yaml)

Referências

[Instalar AWS Cli] (https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

[Instalar Kubectl] (https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

[Instalar eksctl] (https://eksctl.io/installation/)

[Instalar PostgreSQL Client 15] (https://www.linuxcapable.com/install-postgresql-15-on-ubuntu/)