Super Mario é um jogo clássico amado por muitos. Neste guia, exploraremos como implantar um jogo Super Mario no Elastic Kubernetes Service (EKS) da Amazon. Utilizando o Kubernetes, podemos orquestrar a implantação do jogo no AWS EKS, permitindo escalabilidade, confiabilidade e fácil gerenciamento.
-
Uma instância EC2 Ubuntu
-
IAM Role (Access Control)
-
O Terraform deve ser instalado na instância
-
AWS CLI e KUBECTL na instância
-
Docker
STEP 1: Inicie a instância do Ubuntu
- Faça login no Console AWS: Faça login no Console de gerenciamento AWS.
- Navegue até o Painel EC2: Vá para o Painel EC2 selecionando “Serviços” no menu superior e escolhendo “EC2” na seção Computação.
- Iniciar Instância: Clique no botão “Iniciar Instância” para iniciar o processo de criação da instância.
- Escolha uma imagem de máquina da Amazon (AMI): selecione uma AMI apropriada para sua instância. Por exemplo, você pode escolher a imagem do Ubuntu.
- Configurar detalhes da instância:
- Para "Número de instâncias", defina-o como 1 (a menos que você precise de várias instâncias).
- Defina configurações adicionais como rede, sub-redes, função IAM, etc., se necessário.
- Para “Armazenamento”, clique em “Adicionar novo volume” e defina o tamanho para 12 GB. 9.Clique em “Avançar: Adicionar tags” quando terminar.
- Adicionar tags (opcional): adicione as tags desejadas à sua instância. - Esta etapa é opcional, mas auxilia na organização das instâncias.
- Configurar grupo de segurança:
- Escolha um grupo de segurança existente ou crie um novo.
- Certifique-se de que o grupo de segurança tenha as regras de entrada/saída necessárias para permitir o acesso conforme necessário.
- Revise e inicie: revise os detalhes da configuração. Certifique-se de que tudo esteja configurado conforme desejado.
- Selecione par de chaves:
- Selecione "Escolher um par de chaves existente" e escolha o par de chaves no menu suspenso.
- Reconheça que você tem acesso ao arquivo de chave privada selecionado.
- Acesse a instância EC2: Depois que a instância for iniciada, você poderá acessá-la usando o par de chaves e o IP ou DNS público da instância.
Certifique-se de ter as permissões necessárias e seguir as práticas recomendadas ao configurar grupos de segurança e pares de chaves para manter a segurança de sua instância do EC2.
- Pesquise IAM na barra de pesquisa da AWS e clique em funções.
- Clique em Create Role.
- Selecione o tipo de entidade como serviço AWS
- Use o case como EC2 e clique em Next.
- Para política de permissão, selecione Administrator Access (apenas para fins de aprendizagem), clique em Next
- Forneça um nome para a função e clique em Create Role.
- Verifique se a Role foi criada.
Agora anexe esta função à instância Ec2 que criamos anteriormente, para que possamos provisionar o cluster dessa instância.
Vá para o painel EC2 e selecione a instância.
- Click on Actions --> Security --> Modify IAM role.
- Selecione a função criada anteriormente e clique em Update IAM role.
- Conecte a instância ao Mobaxtreme ou Putty
STEP 3: Criando Cluster EKS
Agora clone este repositório dentro da instância do EC2.
git clone https://github.com/thadeuguimaraes/mario-game-eks.git
Mude o diretório:
cd mario-game-eks
Forneça a permissão executável para o arquivo script.sh e execute-o.
sh script.sh
Este script instalará o Terraform, AWS cli, Kubectl, Docker.
Verfique as versões:
docker --version
aws --version
kubectl version --client
terraform --version
Agora mude o diretório para terraform
Inicie o Terraform init NOTA: Não se esqueça de alterar o nome do bucket s3 no arquivo backend.tf
cd terraform
terraform init
Agora execute terraform validate e terraform plan
terraform validate
terraform plan
Agora execute terraform apply para provisionar cluster.
terraform apply --auto-approve
Atualize a configuração do Kubernetes
Certifique-se de alterar a região desejada.
aws eks update-kubeconfig --name <> --region <>
Agora mude o diretório de volta para k8s.
cd ..
cd k8s
Vamos aplicar a implantação e o serviço.
Deployment
kubectl apply -f deployment.yaml
Para checar o deployment.
kubectl get all
Agora vamos descrever o serviço e copiar o LoadBalancer Ingress.
kubectl describe service mario-service
Cole o link de entrada em um navegador e você verá o jogo Mario.
Vamos voltar a 1985 e jogar como crianças S2 =).
Deletando os rescursos:
kubectl get all
kubectl delete service mario-service
kubectl delete deployment mario-deployment
Vamos destruir o cluster:
terraform destroy --auto-approve