Sobre Kubernetes e a utilização do K6 para efetuar testes de carga/desempenho em um Pod no Cluster do K8s - Parte 1
Tags: desenvolvimento, devops, kubernetes, k6
Published: 2022-12-12 03:10:58

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"](https://img.youtube.com/vi/zEOeukcJl6E/0.jpg)](https://www.youtube.com/watch?v=zEOeukcJl6E)

##### 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. :joy:

###### 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3y6d85px3nz2tzfx53b3.png)

###### 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btaxquwx3w9ca1bfhonw.png)

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

Grande abraço!