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:
- Helm Chart https://github.com/lucky-sideburn/KubeInvaders/tree/master/helm-charts/kubeinvaders
- Instalação manual do Openshift usando um modelo https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-openshift
- 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 .