Vamos utilizar o Chaos Toolkit para fazer testes de disponibilidade na aplicação.
Então crie na raiz do projeto a pasta "chaos" e dentro dela crie o arquivo "experiment-app.json" com o código abaixo
{
"title": "Após o pod da aplicação ser derrubado ele voltará ao ar em menos de 10 segundos?",
"description": "Esperamos que o pod da aplicação volte ao ar em menos de 10 segundos",
"tags": ["kubernetes", "bank"],
"steady-state-hypothesis": {
"title": "Verificando se os pods estão disponíveis",
"probes": [
{
"name": "all-pod-available",
"type": "probe",
"tolerance": true,
"provider": {
"type": "python",
"module": "chaosk8s.probes",
"func": "deployment_fully_available",
"arguments": {
"name": "app",
"timeout": 20
}
}
}
]
},
"method": [
{
"type": "action",
"name": "deleting-pod-application",
"provider": {
"type": "python",
"module": "chaosk8s.pod.actions",
"func": "terminate_pods",
"arguments": {
"label_selector": "app=app",
"qty": 1,
"rand": true,
"grace_period": 0
}
}
},
{
"name": "application-returning-page",
"type": "probe",
"tolerance": 200,
"provider": {
"type": "http",
"url": "http://[host e porta]/api/contas"
}
}
]
}
Altere o host e porta da linha 46, conforme seu ambiente local e execute o comando abaixo
kubectl get pods --watch
Mantenha a janela do terminal aberta com o comando acima, abra outro terminal, vá até a pasta "chaos" do projeto e execute
chaos run experiment-app.json
Repare na outra janela do terminal que enquanto o Chaos roda, os contêineres do Kubernetes são finalizados e na sequência o Chaos testa o endereço da aplicação.