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)
- (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)
- (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
- (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
- (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
- (Arquivo: shdm-item6-rotas-sa-east-1.yaml)
- (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/)