Saiba como Acessar Aplicações Remotas em Kubernetes de Maneira Fácil e Prática

Imagine que você tenha sua aplicação fazendo uso de uma arquitetura baseada em microsserviços hospedados em um cluster Kubernetes, como mostra a Figura 1, contendo um deployments de Mongo DB e APIs utilizadas internamente, isto é, não disponibilizadas na Internet através de IP público. Certo dia, você necessita acessar diretamente aos registros do banco de dados, seja para inspeção, seja para teste de uma aplicação que você está desenvolvendo. Como você deve proceder?

Figura 1: Visão geral da arquitetura de exemplo.

A primeira coisa que muitos fariam seria modificar o service do mongodb para atribuir-lhe um IP público e, então, realizar o acesso. No entanto, esta manobra exporia o banco de dados a riscos de segurança e, se não houver um método seguro de autenticação, podemos ter dados roubados ou sequestrados por ataques ransomware. Mas para quê expor o serviço a riscos desnecessários se temos uma alternativa mais segura e cômoda para isso? Esta alternativa é o port forwarding.

Port forwarding

O port forwarding permite redirecionar uma porta local (localhost) para uma porta remota na aplicação através de um túnel seguro. Veja a seguir como poderíamos fazer o redirecionamento de portas da nosso pod do mongo-db:

kubectl port-forward mongodb-wr6mkb 28015:27017

A porta de entrada remota é a 27017. A 28015, por sua vez, é a porta do localhost que foi mapeada para a porta remota. Assim poderíamos nos conectar normalmente ao banco através do endereço localhost:27017. Assim que o processo de port fowarding fosse finalizado, a conexão estaria encerrada.

Também é possível realizar um port foward através do service e do deployment ou outros tipos de recursos, isto é, não apenas do pod. A seguir, uma amostra de como faríamos a mesma conexão acima mas através destes recursos:

# via deployment
kubectl port-forward deployment/mongodb 28015:27017

# via service
kubectl port-forward service/mongodb 28015:27017

Tenha em mente que realizando o port forwarding desta maneira o load balancer redirecionaria a conexão para uma instância aleatória em caso de réplicas, o que não é o caso aqui, pois o deployment tem somente um pod.

Quer saber mais?

O que foi explanado neste artigo é um uso bem simples, fácil e que supre a maior parte das necessidades do dia a dia. O port forwarding é muito mais poderoso do que isso! Se você quer saber mais, as páginas a seguir serão de grande valia:

Deixe uma resposta