Skip to content

Instantly share code, notes, and snippets.

@joaovictorino
Last active October 6, 2023 04:55
Show Gist options
  • Save joaovictorino/d8ef42fd0545346a182590647710e695 to your computer and use it in GitHub Desktop.
Save joaovictorino/d8ef42fd0545346a182590647710e695 to your computer and use it in GitHub Desktop.
Criando experimento de aplicação

Criando experimento de aplicação

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment