Neste tutorial, aprenda a fazer seu primeiro deploy no Kubernetes, usando o K3s, uma versão mais leve e prática do Kubernetes. Vamos configurar um cluster K3s em uma instância t3.micro da AWS e expor um serviço HTTP.

O Kubernetes é uma plataforma de orquestração de containers que automatiza o gerenciamento, deploy e escalabilidade de aplicações, que permite que você execute, escale e atualize suas aplicações de forma eficiente e confiável. Configurar um ambiente Kubernetes é uma excelente maneira de explorar seus conceitos e entender como ele facilita a gestão de aplicações complexas.
Criando a instância EC2 na AWS
Faça login no console da AWS ou crie sua conta.
- Na barra de busca, procure por “EC2” ou clique no link, e depois clique em “Executar instância”.
- Em Nome, coloque um nome para instância, como “k3s“.
- Escolha a imagem Ubuntu e arquitetura 64 bits (x86).

Em Tipo de instância, selecione “t3.micro”.

Em Par de chaves (login), clique em Criar novo par de chaves, e crie uma chave com nome “k3s”, tipo “RSA” e formato “.pem“.

Ao cliar em Criar par de chaves, será baixado o arquivo “k3s.pem“, que você pode usar posteriormente para se conectar via SSH na instância.

Em Configurações de rede, marque as opções “Permitir tráfego SSH de – Qualquer lugar”, “Permitir tráfego HTTP da Internet” e “Permitir tráfego HTTP da Internet“.

Por último, clique em Executar instância.
Instalando o K3s no cluster
Após a instância ser criada, clique Conectar-se à instância, deixe marcada a opção Conectar-se usando o EC2 Instance Connect e clique em Conectar.

No terminal do console da AWS, digite sudo -i, para acesso root.
Depois execute o código abaixo para instalar o k3s.
curl -sfL https://get.k3s.io | sh -

Execute o comando abaixo para exibir o conteúdo do arquivo de autenticação do cluster Kubernetes.
cat /etc/rancher/k3s/k3s.yaml | sed 's/127.0.0.1/DNS_PUBLICO/g'
Copie todo o conteúdo do arquivo para um editor de texto.
Em uma nova aba, abra a visualização de instâncias do console, e copie o DNS IPv4 Público da instância.

No editor de texto, substitua a texto DNS_PUBLICO pelo valor copiado do console.

Salve o arquivo com o nome “k3s-config.yaml“.
Habilitar a porta de gerenciamento do Kubernetes
No console da AWS, clique sobre o ID da instância. Na aba Segurança, clique sobre o “Grupo de segurança“.

Clique em Editar regras de entrada e depois em Adicionar regra.
Preencha com os valores:
- Tipo – TCP Personalizado
- Intervalo de portas – 6443
- Origem – Personalizado – 0.0.0.0/0
- Descrição – k3s
Depois clique em Salvar regras.

Instalando o kubectl e testando o acesso
Acesse o site das tools do kubernetes e instale o kubectl para o seu sistema operacional.

Após realizar a instalação, em um terminal, vá até a pasta onde você salvou o arquivo k3s-config.yaml.
Execute o comando abaixo para testar a conexão com o cluster do K3s.
export KUBECONFIG=./k3s-config.yaml
kubectl --insecure-skip-tls-verify get nodes -o wide
Se tudo estiver correto, o node será listado.

Fazendo o deploy do serviço no Kubernetes
Para esse exemplo, vamos fazer deploy do mooit.
Crie o arquivo mooit-deployment.yaml com o conteúdo:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mooit
name: mooit
spec:
replicas: 1
selector:
matchLabels:
app: mooit
template:
metadata:
labels:
app: mooit
spec:
containers:
- image: bgulla/mooit
name: mooit
Execute o comando para criar o deployment.
kubectl --insecure-skip-tls-verify apply -f mooit-deployment.yaml
Crie o arquivo mooit-service.yaml com o conteúdo:
apiVersion: v1
kind: Service
metadata:
name: mooit
spec:
ports:
- port: 80
selector:
app: mooit
clusterIP: None
Execute o comando para criar o service.
kubectl --insecure-skip-tls-verify apply -f mooit-service.yaml
Crie o arquivo mooit-ingress.yaml com o conteúdo abaixo, substituindo o DNS IPv4 Público da instância.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mooit
spec:
rules:
- host: "<DNS-DA-INSTANCIA>.sa-east-1.compute.amazonaws.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mooit
port:
number: 80
targetPort: 5000
Execute o comando para criar o ingress.
kubectl --insecure-skip-tls-verify apply -f mooit-ingress.yaml
Teste o deploy
Para testar a deploy, execute o comando curl substituindo o DNS IPv4 Público da instância, ou abra o endereço no browser.
curl http://<DNS-DA-INSTANCIA>.compute.amazonaws.com

Conclusão
Neste tutorial, você aprendeu a criar uma instância EC2 na AWS, instalar o K3s como seu cluster Kubernetes e realizar o deploy de um serviço dentro do cluster. Além disso, foi mostrado como expor o serviço utilizando um Ingress para rotear o tráfego para o seu serviço.