Giter VIP home page Giter VIP logo

aws-rke's Introduction

Configurando um provedor de nuvem AWS para prover um cluster Kubernetes usando Terraform, RKE e Ansible

get nodes

Este post demonstra como criar e configurar um provedor de nuvem Amazon Web Services (AWS) usando terraform. Os recursos provisionados incluem redes, instâncias e grupos de segurança, fornecendo uma infraestrutura completa.

Além disso, o cluster Kubernetes é implementado usando o Rancher Kubernetes Engine (RKE) por template_file, user_data e um toque de ansible. Com essa abordagem, é possível criar um cluster Kubernetes altamente disponível e escalável.

São utilizados arquivos terraform que incluem módulos personalizados em repositório separado no github. Esses módulos espera receber as definições do CIDR do bloco da VPC e das subnets para criar respectivamente a VPC e dentro dela, as subnets publica e privada. Com isso, é possível personalizar e ajustar a infraestrutura conforme as necessidades de redes projeto. Em seguida, é definido os grupos de seguranças que restringem o tráfego de entrada e saída por portas e prefixo específicos.

Logo após, é criado os recursos de instâncias EC2 (Amazon Elastic Compute Cloud), instância admin com endereçamento IP elástico associado e responsável por uma pequena automação usando Ansible, além dos masters e workers implementados como grupos escaláveis a partir de contadores, definindo a quantidade de nó respectivamente.

Por fim, os arquivos de template_file são utilizados para gerar os scripts carregados no user_data de cada nó para configurar e resolver as dependências.

Para iniciar o projeto, você precisará seguir as etapas abaixo:

Clone o repositório do projeto no Github em sua máquina local usando o comando:

git clone https://github.com/madson7/aws-rke.git

Verifique se o Terraform está instalado na sua máquina local. Se não estiver, você precisará instalá-lo seguindo as instruções fornecidas no site oficial do Terraform.

Entre no diretório do projeto usando o comando:

cd aws-rke

Observe que, para usar o Terraform, você precisará ter credenciais válidas do AWS configuradas em sua máquina local ou usar um provedor de autenticação diferente, como o HashiCorp Vault. Exemplo basíco usando a região us-east-1:

cat >> provider.tf <<EOF
provider "aws" {
  access_key = ""
  secret_key = ""
  region     = "us-east-1"
}
EOF

Execute o comando para inicializar o Terraform e baixar todas as dependências necessárias:

terraform init

Use o comando para ver as alterações que serão aplicadas na sua infraestrutura:

terraform plan

Use o comando para aplicar as alterações na sua infraestrutura:

terraform apply

Quando a implantação estiver concluída, verifique se a infraestrutura está funcionando corretamente.

O comando export é usado para definir a variável de ambiente KUBECONFIG para apontar para o arquivo de configuração do cluster Kubernetes. Essa variável de ambiente é usada pelo cliente kubectl para se comunicar com o cluster.

export KUBECONFIG=/opt/config/kube_config_cluster.yml

Verificar se o cluster está em execução usando o comando:

kubectl get nodes

get nodes

Verificar se os pods estão em execução usando o comando:

kubectl get pods --all-namespaces

get nodes

Para testar um cluster Kubernetes você pode seguir os seguintes passos.

Criar um deployment de exemplo para testar usando o comando:

kubectl create deployment nginx --image=nginx

Verificar se o deployment foi criado com sucesso usando o comando:

kubectl get deployment nginx

Criar um serviço para o deployment usando NodePort:

kubectl expose deployment nginx --port=80 --type=NodePort

Verificar se o serviço foi criado com sucesso e usando o IP de um dos workers você pode acessar na porta mapeada:

kubectl get service nginx

get nodes

Custos estimados

infracost breakdown --path=.

get nodes

Links úteis:

https://github.com/madson7/aws-rke.git

https://rancher.com/docs/rke/latest/en/

https://kubernetes.io/docs/home/

https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/

https://github.com/madson7/ansible-roles-templates

https://github.com/madson7/terraform-modules

https://www.linkedin.com/pulse/configurando-um-provedor-de-nuvem-aws-para-prover-cluster-ramos

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.