Alura > Cursos de DevOps > Cursos de AWS > Conteúdos de AWS > Primeiras aulas do curso Amazon EKS: gerenciando aplicações conteinerizadas com Kubernetes

Amazon EKS: gerenciando aplicações conteinerizadas com Kubernetes

Criando um ambiente de desenvolvimento na AWS - Introdução

Você que está estudando, ou mesmo já trabalha com Docker, com Kubernetes e quer migrar a tua infraestrutura para um ambiente de nuvem com todos os recursos que ele oferece, está na hora de aprender sobre o Amazon EKS. Esse serviço nada mais é do que o gerenciamento dos teus containers, utilizando Kubernetes dentro da nuvem da AWS.

Neste curso, vamos vai sair de um ambiente de desenvolvimento para um ambiente de produção, explorando os recursos que esse serviço nos oferece. Eu sou o Ricardo Mercês e vou te acompanhar durante as nossas aulas. Abra a console da AWS, clique em “login” e vamos começar a trabalhar.

Criando um ambiente de desenvolvimento na AWS - Criando o ambiente de testes

Para começarmos o curso, eu vou te recomendar que se por acaso você não tenha experiência com Docker, Kubernetes, ou mesmo AWS, dê uma olhada aqui dentro da plataforma porque tem cursos específicos sobre esses assuntos.

Tem o curso de Docker, o curso de introdução ao Kubernetes, e o curso introdutório da AWS que vão te dar uma visão geral dos serviços, criação da conta e tudo mais. O curso da AWS é “AWS EC2”, que é bem interessante

Você que já está familiarizado com todos esses pontos, vamos começar a trabalhar. A ideia é a seguinte: o que o serviço “EKS” faz? O que ele oferece a mais? Quando você trabalha com Kubernetes, ele monta o teu cluster e já oferece toda aquela infraestrutura para abrigar os teus containers.

Imagine você pegar tudo isso e colocar em um provedor de nuvem com alta disponibilidade, com escalabilidade e com redundância nos sites onde estão hospedadas as máquinas. É bem interessante. Como é que isso tudo vai funcionar? Dentro do nosso cluster – deixe-me mostrar a figura aqui porque é bem resumida.

Dentro do nosso cluster provisionado pela AWS, vamos fazer o seguinte: as máquinas, que vão ser os nós deste cluster, vão ser instâncias EC2, conforme mostra aqui a figura. Sendo instância EC2, cai naquilo tudo que eu já falei: escalar, redundância, zonas de disponibilidade, todos os recursos oferecidos pela AWS.

Então vamos ter o cluster EKS com as máquinas EC2 servindo como nós. E o mais legal é que a gerência disso tudo vai ser feita com Kubes CTL, que é a forma de interagirmos aqui com o nosso Kubernetes. Então vamos começar. Vamos fazer o seguinte: vamos começar criando, dentro da AWS, uma instância EC2 para servir de ambiente de teste.

Essa instância estando uma vez pronta e a aplicação testada, passamos para o ambiente de produção. Para essa instância de teste, eu vou usar uma máquina EC2 e vou utilizar o Minikube. Vamos começar!

Vamos fazer login na console e vamos subir a nossa instância EC2. A sequência está aqui: “EC2”. Vamos lançar a instância. Uma observação é que ela vai ser um pouco diferente.

Lançar uma instância. Eu vou escolher essa daqui: “Ubuntu Server 18.04 LTS (HVM), SSD Volume Type”, então eu vou lançar ela com Ubuntu. A diferença está neste ponto aqui: a “t2.micro” é um nível gratuito, ela tem uma CPU e 1GB de Ram. Para esse meu ambiente de teste, eu estou utilizando a “t3.small”. Ela tem duas CPU e 2GB de Ram. Por que, Ricardo?

Porque nesse ambiente de teste eu vou prover um cluster utilizando o Minikube, e com um processador e 1GB fica pequeno e, logicamente, ele não vai funcionar a medida que você for explorando e colocando mais aplicações. Com “2” de “Memory (GiB)”, tem funcionado para mim, se você precisar de mais, eu vou utilizar essa daqui para o meu ambiente de teste.

Então eu vou avançar - o resto é tudo “default” - adicionar o storage, “8GB” é tranquilo pois o contêiner é sempre algo pequeno. “Configure Security Group” - se você não tiver nenhum criado, utilize o “default”. Eu já tenho um grupo criado só para fazer esse SSH. Pronto, vou lançar a instância aqui. Qual o par de chaves? Vou utilizar a chave que eu já tenho. “Launch Instances”.

Então ele está criando aqui a instância e vamos, na sequência, fazer a instalação do Minikube e do Docker. Vamos preparar o nosso ambiente de teste. Uma informação que eu esqueci de comentar é a seguinte: está aqui a “”t3.small” e eu tenho umas outras máquinas, tenho essa “t2.micro” aqui. “E sobre a diferença de preço, Ricardo?”. Essa “t3.small” é o dobro preço da “t2.micro”. Depois dê uma olhada na tabela, eu acho que é [00208 DÓLARES], alguma coisa assim.

Enfim vale a pena dizer que como isso aqui é a minha máquina de teste de desenvolvimento, ela não fica ligada 24/7 então o meu custo mensal com uma máquina dessa é bem pequeno. Só para você ter essa informação. O que fazemos? Vamos fazer a SSH para darmos início ao nosso setup.

Então está aqui: “Connect”. Sempre já está pronto aqui. Você vai copiar, abra o teu terminal e cole aqui. Lembrando que esse diretório onde eu estou é o diretório onde eu já baixei a minha chave.

Vamos testar. Autorizou aqui, já estamos na máquina. Então na nossa primeira providência aqui, vamos fazer o seguinte: vamos definir uma senha para “root” porque vamos precisar ao longo da instalação.

Então: "sudu passwd root". Você define a tua senha de root, porque vamos precisar de alguns passos diretamente como root então para não ficar naquela agonia de “sudu e sudu”, já estou com a senha de root definida. Uma vez feito isso, vamos começar a instalar o Minikube. Na sequência eu volto para estarmos instalando o Minikube.

Criando um ambiente de desenvolvimento na AWS - Instalando o kubectl, Docker e Minikube

Então vamos trabalhar. Vamos precisar instalar o Kubes CTL, o Docker e o Minikube. É legal porque nessa parte você faz a revisão dos conceitos, como é que trabalhamos com isso tudo.

Como é que instalamos o Kubes CTL? Deixe-me limpar aqui - "clear". Eu vou pegar toda a referência, vai estar aqui na plataforma o passo a passo mas eu vou pegar toda a referência da documentação original: "install kubectl". Está aqui. A referência toda está no manual do original mas fique tranquilo que é só copiar e colar os comandos que já vai na ordem certa. O que fazemos?

Aqui embaixo, eu vou instalar via “curl” - está aqui. “Linux”, pronto. Vamos começar a copiar e colar para fazermos a instalação. Vou copiar aqui. Estou na minha máquina e vamos baixar a versão. Feito o download, vamos dar permissão de execução: "chmod +x kubectl". Com isso eu dei permissão de execução, e eu vou mover ele para os meus binários, certo?

Então vamos escrever aqui: "sudo mv kubectl /usr/local/bin/" - para cá. Pronto. Por que eu movi para lá? Porque já está no path, certo? O "kubectl", já está no path, então tudo certo. Então o "kubectl" está aqui, deixe-me chamar com o "help", só para ver se ele está rodando. Kube CTL pronto. Próximo passo: instalar o Docker. Limpei aqui e vamos lá! O Docker eu vou instalar pelo próprio pacote do Ubuntu.

Então escrevemos aqui "sudo apt-get update" para atualizarmos os pacotes, é bem rápido, está tudo já na nuvem, isso é bem rápido. Foi. Agora fazemos a instalação: "sudo apt-get install docker.io". Vamos usar a tecla “Y” para dar “yes” e ele está fazendo a instalação.

Então só revendo: Kube CTL, Docker está instalando e depois vamos fazer o Minikube. Terminou aqui. “Mas Ricardo, eu gosto instalar o Docker pelo curl!”. Tudo bem, fique à vontade, eu só estou aqui provendo os recursos, não tem problema nenhum. Docker está instalado. Então limpei a tela. O que nós precisamos? Agora vamos rodar o Minikube, vamos fazer a instalação dele.

“Ricardo, essa parte está indo um pouco rápida, o que houve? ” Só lembrando, estamos fazendo uma revisão dessa parte do Kubernetes. É importante que você já tenha visto mas se você seguir o passo a passo que eu deixei aqui na plataforma, você vai instalar sem problema nenhum. Agora vamos para instalação do Minikube.

E eu queria deixar uma observação, - uma referência sobre isso é o curso de introdução ao Kubernetes -o que é o Minikube? O Minikube nada mais é do que quando estamos rodando o nosso cluster dentro de uma máquina virtual. Importante frisar o seguinte: nós criamos uma instância EC2 - está aqui, estamos conectados nela - nela vai rodar o Minikube, que é uma virtualização do nosso cluster.

Um ambiente perfeito para você testar, desenvolver e tudo mais. Vale a pena dizer o seguinte: o MiniKube não é para que você coloque ele em produção. É um ambiente teste, de desenvolvimento, de estudo, de qualquer coisa, menos um ambiente de produção.

“Mas Ricardo, por que você está usando Minikube?” Porque se eu não utilizar o Minikube, eu ia ter que prover toda uma “infra” e imagine o seguinte: eu ia ter que prover várias instâncias EC2, criar um cluster, colocar elas como nós e tudo mais. Isso vai ser o nosso ambiente de produção.

Então no nosso ambiente teste, que é menor e mais enxuto, eu estou usando a solução do Minikube. Vamos seguir aqui. Vamos pegar a documentação, a referência do link. No kubernets tem o “Install Minikube”. O que me interessa aqui é pegar só o link para não termos que digitar isso tudo. Está aqui para instalar o Minikube, ele faz um link para o GitHub e nós copiamos e colamos. Está aqui, “Linux”, pronto, desse modo a nossa vida é mais fácil.

Copiei isso aqui, volto na minha console e a fazemos a instalação. Feita a instalação, agora vamos passar para “root” para fazer algumas interações, inclusive iniciar o nosso Minikube. Como eu comentei a pouco, o Minikube ele roda virtualizado então se você está rodando na tua máquina local... - "Ricardo, eu estou provendo esse ambiente de teste localmente." - não tem problema nenhum.

Eu optei por já prover isso dentro da AWS. Localmente, você vai ter que ter um virtualizador, geralmente utilizamos o VirtualBox. Na AWS, eu não preciso instalar o VirtualBox, ela já tem suporte à virtualização porque a EC2 é uma máquina virtualizada. O ponto importante é o seguinte: dentro da AWS - vou passar para root, já tínhamos definido a senha de root.

Agora eu estou como root e eu vou iniciar: "minikube". Aqui, na hora que eu copiei e colei, ele baixou, fez o "chnmod", copiou para o local "/bin" e apagou o arquivo local. Fez isso tudo de uma vez só. Então já estou rodando do "usr/local/bin". Ótimo. "minikube start --" - aqui está o segredo: "--vm-driver=none".

Eu não estou usando o VirtualBox dentro da EC2 então vai funcionar. Vão aparecer algumas mensagens, nós as ignoramos porque ele vai funcionar. Ele está preparando o nosso cluster. Vai fazer download do “kubeadm”, do “kubelet”, e tudo mais, para preparar e subir o nosso cluster. Então vamos aguardar um pouco enquanto ele faz a instalação.

Sobre o curso Amazon EKS: gerenciando aplicações conteinerizadas com Kubernetes

O curso Amazon EKS: gerenciando aplicações conteinerizadas com Kubernetes possui 104 minutos de vídeos, em um total de 47 atividades. Gostou? Conheça nossos outros cursos de AWS em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda AWS acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas