Como criar nós customizados para EKS (Golden Images)

Saiba como criar imagens de nós customizados para Amazon Web Services (AWS).

Este guia descreve os passos necessários para criar imagens personalizadas ou Golden Images para clientes da Digibee que desejam fazer uso de nós customizados para AWS.

  1. Crie uma nova VPC

VPC_ID=$(aws ec2 create-vpc --cidr-block 166.17.0.0/28 --query 'Vpc.VpcId' --output text)
  1. Atualize a VPC para permitir a atribuição automática de endereço público IPv4.

aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-support "{\"Value\":true}"
aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-hostnames "{\"Value\":true}"
  1. Crie um Internet Gateway e anexe-o à VPC.

IGW_ID=$(aws ec2 create-internet-gateway --query 'InternetGateway.InternetGatewayId' --output text)
aws ec2 attach-internet-gateway --internet-gateway-id $IGW_ID --vpc-id $VPC_ID
  1. Adicione uma rota para 0.0.0.0/0 à tabela de roteamento principal.

RTB_ID=$(aws ec2 describe-route-tables --filters Name=vpc-id,Values=$VPC_ID --query 'RouteTables[0].RouteTableId' --output text)
aws ec2 create-route --route-table-id $RTB_ID --destination-cidr-block 0.0.0.0/0 --gateway-id $IGW_ID
  1. Localize o ID do grupo de segurança padrão para a VPC e adicione uma regra de entrada para permitir todo o tráfego a partir do seu IP.

DEFAULT_SG_ID=$(aws ec2 describe-security-groups --filters Name=vpc-id,Values=$VPC_ID Name=group-name,Values=default --query 'SecurityGroups[0].GroupId' --output text)
YOUR_IP_ADDRESS="$(curl -s ifconfig.me)/32"
aws ec2 authorize-security-group-ingress --group-id $DEFAULT_SG_ID --protocol all --cidr $YOUR_IP_ADDRES
  1. Crie uma Sub-rede

SUBNET_ID=$(aws ec2 create-subnet --vpc-id $VPC_ID --cidr-block 166.17.0.0/28 --availability-zone us-east-1a --query 'Subnet.SubnetId' --output text)
  1. Ative a atribuição automática de endereços IP públicos para a Sub-rede.

aws ec2 modify-subnet-attribute --subnet-id $SUBNET_ID --map-public-ip-on-launch
  1. Crie uma nova chave SSH.

KEY_NAME="test-eks-key"
aws ec2 create-key-pair --key-name $KEY_NAME --query 'KeyMaterial' --output text > $KEY_NAME.pem
chmod 400 $KEY_NAME.pem
  1. Inicie uma instância EC2.

# Obtem o ID da ami
EKS_AMI_ID=$(aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.24/amazon-linux-2/recommended/image_id --query 'Parameter.Value' --output text)

# Cria a instancia a partir da AMI
aws ec2 run-instances --image-id $EKS_AMI_ID --count 1 --instance-type m5.xlarge --key-name $KEY_NAME --subnet-id $SUBNET_ID --query 'Instances[0].InstanceId' --output text
  1. Instalação de software na instância EC2

INSTANCE_IP=$(aws ec2 describe-instances --instance-id $INSTANCE_ID --query 'Reservations[0].Instances[0].PublicIpAddress' --output text)
  1. Substitua as instruções de instalação do Nginx por aquelas que se adequarem às necessidades de personalização da sua imagem.

ssh -o StrictHostKeyChecking=no -i us-maia-test-eks-1-key.pem ec2-user@$INSTANCE_IP "sudo amazon-linux-extras enable nginx1 && sudo yum clean metadata && sudo yum -y install nginx && systemctl status nginx"
  1. Pare a instância EC2 e aguarde até que a instância pare totalmente.

aws ec2 stop-instances --instance-ids $INSTANCE_ID
  1. Crie uma AMI da instância EC2.

aws ec2 create-image --instance-id $INSTANCE_ID --name "test-eks-nginx-ami" --description "AMI with Nginx installed" --query 'ImageId' --output text

Atualizado

Isto foi útil?