1
resposta

[Projeto] iac aws

Criando um Load Balancer no Kubernetes para Acessar a Aplicação

No Kubernetes, os PODs são unidades de execução que contêm containers, mas, por padrão, não podemos acessar os PODs diretamente. Isso acontece porque o Kubernetes foi projetado para gerenciar a escalabilidade e a resiliência de containers de forma dinâmica, com os PODs podendo ser recriados ou movidos entre nós de maneira transparente. Ou seja, eles são efêmeros, e a comunicação direta com um POD específico pode não ser confiável.

Porém, para acessar nossa aplicação, precisamos expor o serviço de dentro do cluster para fora. A melhor maneira de fazer isso no Kubernetes é criando um Load Balancer, que irá atuar como um ponto de entrada para a aplicação, distribuindo o tráfego de maneira equilibrada entre os PODs em execução.

Como Criar um Load Balancer no Kubernetes

No Kubernetes, podemos criar um Load Balancer de forma simples utilizando um Service do tipo LoadBalancer. Quando configuramos um Service como LoadBalancer, o Kubernetes, dependendo do provedor de nuvem (como AWS, GCP ou Azure), cria automaticamente um load balancer externo e atribui um endereço IP público a ele. Isso permite que o tráfego externo seja roteado para os PODs dentro do cluster.

Passos para Criar o Load Balancer:

Criar o arquivo de configuração do Service

No arquivo YAML do Kubernetes, você pode definir o Service com o tipo LoadBalancer. Aqui está um exemplo simples para uma aplicação django-api:

apiVersion: v1
kind: Service
metadata:
name: django-api-service
spec:
selector:
app: django-api
ports:
- protocol: TCP
port: 80
targetPort: 8000
type: LoadBalancer

Neste exemplo, estamos criando um Service chamado django-api-service, que expõe a aplicação que está rodando no port 8000 dentro do POD para o port 80 externamente. O tipo LoadBalancer vai garantir que o tráfego externo seja balanceado entre as réplicas da aplicação.

Aplicar o arquivo YAML

Após criar o arquivo de configuração, aplique-o no seu cluster Kubernetes com o seguinte comando:

kubectl apply -f service.yaml

Esse comando criará o serviço e o Load Balancer associado, e o Kubernetes começará a configurar o balanceamento de tráfego.

Verificar a criação do Load Balancer

Para verificar se o Load Balancer foi criado corretamente, execute:

kubectl get services

Você verá algo assim:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
django-api-service LoadBalancer 10.100.200.1 203.0.113.1 80:31234/TCP 10m

Aqui, EXTERNAL-IP será o endereço IP público do Load Balancer. Após a criação, esse IP ficará disponível para você acessar a aplicação externamente.

Benefícios de Usar um Load Balancer no Kubernetes

Balanceamento de tráfego: O Load Balancer distribui o tráfego de forma equitativa entre todas as réplicas da aplicação, garantindo alta disponibilidade e escalabilidade.

Exposição externa: Ele permite que o tráfego externo chegue até os PODs sem que você precise acessar diretamente os containers.

Automação: Em provedores de nuvem, como a AWS, o Load Balancer é provisionado automaticamente pelo Kubernetes, o que facilita a configuração.

Conclusão

Com a criação de um Load Balancer, conseguimos expor nossa aplicação para o mundo externo de maneira confiável e escalável. Isso permite que os usuários acessem a aplicação, independentemente de onde os PODs estejam localizados dentro do cluster. Esse processo é simples e automatizado, facilitando a gestão de tráfego no Kubernetes.

1 resposta

Oi, Ubirajara!

Sua explicação sobre o uso do LoadBalancer no Kubernetes ficou bem completa, mostrando tanto a parte conceitual quanto os passos práticos de configuração. O exemplo em YAML ajuda bastante a visualizar como expor a aplicação de forma confiável e escalável.

Continue aplicando esse tipo de recurso, ele é fundamental para disponibilizar serviços em produção.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!