DEV Community

Eduardo Bueno
Eduardo Bueno

Posted on

Sobre Kubernetes e a utilização do K6 para efetuar testes de carga/desempenho em um Pod no Cluster do K8s - Parte 1

Oi, eu sou o Edu!

Não sou um especialista em Kubernetes (ou K8s, como a comunidade gosta de chamá-lo). Nas palavras do meu amigo Ricardo Tenório, quando se trata de mexer com este orquestrador de contêineres eu "sou apenas um menino".

Mas, para resolver um problema (obter, a partir de testes de desempenho/carga, indicadores importantes sobre a capacidade de carga e transações que uma aplicação pode suportar), veio a oportunidade de entender mais a fundo esta ferramenta cuja finalidade é "facilitar a implantação e o gerenciamento de sistemas distribuídos, enquanto se beneficia do melhor uso de recursos de memória e processamento que os contêineres possibilitam", então resolvi aproveitar esta chance para, quem sabe, passar do nível Aprendiz para o nível Praticante.

Daí comecei a pesquisar sobre o assunto e acabei "caindo" no excelente vídeo do Jeferson Fernando da LINUXTips:
Vídeo que traz "Tudo o que você precisa saber sobre Kubernetes em 100 minutos"

Esse vídeo me ajudou muito, pois apresentou de forma bastante clara os conceitos-chave do K8s, e também seus principais comandos. E isso me deu confiança para configurar o ambiente que eu pudesse utilizar para executar os testes que precisava!

Em relação aos testes, eu já havia utilizado o Postman e o RESTfull Stress para executar este tipo de teste, mas o cenário naquela ocasião era um tanto diferente: lá eu não estava testando uma aplicação hospedada dentro de um cluster no K8s! E, embora o princípio do teste seja o mesmo para este caso, o fato de haver mais camadas entre o cliente que faz a requisição e a aplicação a ser testada pode mascarar seus indicadores - vamos lembrar que, em linhas gerais, uma aplicação hospedada no K8s está rodando dentro de um Container que, por sua vez, encontra-se dentro de um Pod no Cluster.

Então fui pesquisar formas de executar estes testes de dentro do Cluster, e acabei encontrando uma alternativa que envolve o uso do K6 (ferramenta que eu também já conhecia e havia utilizado, e que gosto muito porque entre outras coisas ela permite a criação de scripts de teste em javascript, além da execução dos testes tanto de forma manual - na máquina do desenvolvedor - quanto automaticamente, como um passo dentro de uma pipeline de CI/CD, por exemplo).

No próximo post vou descrever em detalhes tudo o que fiz para resolver meu problema utilizando o K6, porém deixo aqui um gostinho do resultado final da minha PoC pra vocês ficarem curiosos. 😂

Abaixo, o resultado de um teste de carga em uma aplicação, executando o K6 localmente a partir da CLI do VS Code:

Resultado de um teste de carga utilizando o K6, executado localmente a partir da CLI do VS Code

E o resultado do mesmo teste, só que executado dentro do Cluster do K8s:

Resultado de um teste de carga utilizando o K6, executado dentro do Cluster do K8s

Bem, por hora é isso... como sempre, comentários, críticas e sugestões são sempre bem-vindos.

Grande abraço!

Latest comments (0)