Recentemente um desenvolvedor lançou uma ferramenta chamada KubeInvaders para o Kubernetes e Openshift, com a finalidade de ajudar a testar a resistência de clusters do Kubernetes de maneira bem divertida matando pods. Usada por muitas pessoas em sessões de demonstração e workshop, matando pods em tela grande.

"O Kubernetes é um sistema de código aberto para gerenciar aplicativos em contêineres em vários hosts. Ele fornece mecanismos básicos para implantação, manutenção e dimensionamento de aplicativos. O Kubernetes tem uma década e meia de experiência no Google executando cargas de trabalho de produção em escala usando um sistema chamado Borg, combinado com as melhores idéias e práticas da comunidade."

 

"O que é um Pod?
 Um Pod é um grupo de um ou mais contêineres (como contêineres do Docker), com armazenamento/rede compartilhada e uma especificação de como executar os contêineres."

Como instalar o KubeInvaders

Veja como instalá-lo:

  1. Helm Chart https://github.com/lucky-sideburn/KubeInvaders/tree/master/helm-charts/kubeinvaders

  2. Instalação manual do Openshift usando um modelo https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-openshift

  3. Instalação manual do Kubernetes https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-kubernetes

A maneira preferida, é claro, é com um gráfico Helm:

  # Please set target_namespace to set your target namespace!
  helm install --set-string target_namespace="namespace1,namespace2" \
  --name kubeinvaders --namespace kubeinvaders ./helm-charts/kubeinvaders

Como usar o KubeInvaders

Depois de instalado no seu cluster, você pode usar as seguintes funcionalidades:

  •  Tecla 'a' - Mudar para piloto automático
  • Tecla 'm' - Mudar para piloto manual
  • Chave 'i' - mostra o nome do pod. Mova a nave em direção a um alienígena
  • Chave 'h' - Ajuda da impressão
  • Key 'n' - Salte entre diferentes namespaces

 

Fontes:
https://github.com/kubernetes/kubernetes

https://github.com/lucky-sideburn/KubeInvaders

https://kubernetes.io/blog/2020/01/22/kubeinvaders-gamified-chaos-engineering-tool-for-kubernetes/

Veja mais sobre o KubeInvaders onde o desenvolvedor explica alguns passos:

Ajustando o KubeInvaders 

Se você tiver pods que precisam de alguns segundos para iniciar, poderá perder. É possível definir a complexidade do jogo com esses parâmetros como variáveis ​​de ambiente na implantação do Kubernetes: 

  • ALIENPROXIMITY - Reduza esse valor para aumentar a distância entre alienígenas;
  • HITSLIMIT - Segundos do tempo de espera da CPU antes da gravação;
  • UPDATETIME - Segundos para aguardar antes de atualizar o status do pod (você também pode definir 0.x Es: 0.5); 

O resultado é uma experiência de jogo mais difícil contra a máquina. 

Casos de uso 

A adoção de estratégias de engenharia do caos para o seu ambiente de produção é realmente útil, porque é a única maneira de testar se um sistema suporta eventos destrutivos inesperados. 

O KubeInvaders é um jogo - por isso não leve a sério! - mas demonstra alguns casos de uso importantes: 

  • Teste como os clusters Kubernetes são resilientes na exclusão inesperada do pod
  • Colete métricas como o tempo de reinicialização do pod
  • Ajustar sondas de prontidão 

Próximos passos

Quero continuar adicionando alguns recursos interessantes e integrando-o ao painel do Kubernetes, porque planejo transformá-lo em uma "Ferramenta de Engenharia e Desenvolvimento de Caos Gamificado para Kubernetes", para ajudar o desenvolvedor a interagir com implantações em um ambiente Kubernetes. Por exemplo:
  • Aponte para os alienígenas para obter registros de pod
  • Implante gráficos Helm fotografando alguns objetos específicos
  • Ler mensagens armazenadas em um rótulo específico presente em uma implantação 

Sinta-se à vontade para contribuir com https://github.com/lucky-sideburn/KubeInvaders e fique atualizado depois das notícias sobre #kubeinvaders no Twitter .