Configurando o Load Balancer no Kubernetes
Embora as configurações do Kubernetes possam parecer complicadas no começo, elas são essenciais para garantir que nossas aplicações funcionem de forma adequada e escalável. No caso da criação de um Load Balancer, por exemplo, precisamos passar por alguns passos importantes para configurá-lo corretamente.
Vamos revisar os detalhes dessas configurações de forma simplificada, para que possamos entender e aplicar o que é necessário para expor nossa aplicação ao mundo externo.
- Definindo a Metadata
O primeiro passo na configuração do Load Balancer é a definição dos metadados (metadata), que contêm informações complementares sobre o recurso, como seu nome. Esses dados não influenciam diretamente no funcionamento do recurso, mas ajudam a organizá-los de maneira mais eficiente.
metadata {
name = "django-lb"
}
Aqui, estamos nomeando o nosso Load Balancer como django-lb. Isso nos ajuda a identificar o recurso de forma clara e objetiva dentro do Kubernetes.
- Especificando o Recurso com o spec
Em seguida, dentro da configuração do Load Balancer, precisamos especificar suas propriedades mais importantes no bloco spec. O spec é onde definimos os parâmetros de operação do recurso, como o tipo de Load Balancer, as portas e o seletor que irá vincular o Load Balancer à nossa aplicação.
Definindo o Tipo de Recurso
No campo type, precisamos informar o tipo do recurso que estamos criando. Como queremos criar um Load Balancer, o valor será "LoadBalancer", o que instrui o Kubernetes a criar um load balancer externo.
type = "LoadBalancer"
Esse campo é fundamental para que o Kubernetes saiba que o serviço precisa de um IP público e que o tráfego externo será balanceado entre os PODs do cluster.
Definindo as Portas
Em seguida, precisamos especificar as portas no nosso Load Balancer. Existem duas portas que precisamos configurar: a porta de entrada (onde o tráfego externo chegará) e a porta de saída (onde o tráfego será encaminhado para o container).
port {
port = 8000
target_port = 8000
}
port: é a porta que o Load Balancer vai expor externamente.
target_port: é a porta dentro do container onde a aplicação está escutando.
Neste caso, estamos usando a porta 8000 para ambos os campos, já que a nossa aplicação está configurada para rodar nessa porta.
Selecionando a Aplicação com o selector
Agora, para que o Load Balancer saiba para qual aplicação ele deve direcionar o tráfego, precisamos usar o selector. Esse campo é utilizado para selecionar os PODs da aplicação com base nas labels que foram atribuídas a eles durante a criação.
No nosso caso, nossa aplicação tem a seguinte label:
labels = {
nome = "api"
}
Portanto, o selector no Load Balancer será configurado para buscar PODs com a label correspondente:
selector = {
nome = "api"
}
Isso garante que o Load Balancer direcionará o tráfego para os PODs que possuem a label nome = "api", ou seja, nossa aplicação específica.
- Juntando Tudo
Agora que já configuramos todos os parâmetros necessários, basta juntar o bloco metadata com o bloco spec para finalizar a configuração do Load Balancer. O código final ficará assim:
metadata {
name = "django-lb"
}
spec {
selector = {
nome = "api"
}
port {
port = 8000
target_port = 8000
}
type = "LoadBalancer"
}
- Conclusão
Com essa configuração, o Terraform (ou qualquer ferramenta de automação que você esteja utilizando) poderá criar um Load Balancer no Kubernetes que irá:
Expor a aplicação externamente na porta 8000.
Balancear o tráfego entre os PODs da aplicação, que foram selecionados por meio das labels.
Garantir que o tráfego chegue corretamente até os containers que estão rodando a aplicação.
Esse é o processo básico para configurar um Load Balancer no Kubernetes. Como podemos ver, a criação do Load Balancer envolve especificar o tipo do recurso, as portas e a aplicação que será acessada, além de associar o tráfego com a aplicação correta por meio do selector.