feat: add fault [Exhausted Etcd Database Storage] (SPAI-414) - #890
feat: add fault [Exhausted Etcd Database Storage] (SPAI-414)#890Aliciapet11 wants to merge 3 commits into
Conversation
Red-GV
left a comment
There was a problem hiding this comment.
I'm sorry for how long it took for me to get to this one @Aliciapet11 .
I'm a bit concerned with this one. I like the scenario itself, but my problem is the clean up. As I understand it, once etcd is full, kubectl will stop working. This means that we cannot actually do our teardown sequence without ensuring that the cluster is fixed. Which would mean two things:
- We'd have to supply the code for fixing it in order to be part of the automation. While we do supply instruction sequences to fix the fault, providing a whole code/playbook to undo this fault seems a bit unorthodox. In addition, from what I'm seeing for fixes for this one, the agent would need
sshaccess to the control plane node in order to run these compaction commands. This is not permission level we'd like to give to the agents running these tests at this time. Also, it looks like running onkind(docker,podman, etc.) have different procedures compared to running on AWS or another cloud provider. - We'd have to destroy the cluster. Generally, after a run is over, we don't destroy the cluster but ensure we have cleaned all of our files and modifications from it. Thus returning it back to the state it was before the benchmark started. If we don't supply the fix via (1), then we're left with this nuclear option being the only course correction.
Unless I'm wrong with my understand (completely possible), I'm not sure if we can support this scenario on the bench (though it is a good/interesting one).
65952d9 to
c7e8387
Compare
|
Hi @Red-GV, thanks for the thorough feedback — you were right about the cleanup issue. I've reworked this to use a degradation approach instead of full exhaustion: Key changes:
The teardown sequence should work fine now since we're not locking out the API server. Let me know what you think! |
Add new fault type and scenario derived from real Konflux production incidents (Web RCA data). - Fault 32: Exhausted Etcd Database Storage (6 real incidents) - Scenario 116: Applied to OTel Demo etcd service - Includes molecule test for fault injection validation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instead of fully exhausting etcd (which locks out kubectl and prevents cleanup), create storage pressure that causes latency degradation while keeping the cluster usable: - Reduce from 200x900KB to 50x100KB ConfigMaps - Change alert from KubePodNotReady to HighRequestLatency - Add kubectl cleanup commands to solutions - Allow Deployment kind (not just StatefulSet) - Target frontend deployment instead of etcd StatefulSet - Register fault in argument_specs and task_files - Add fault and scenario Jinja2 templates - Use releases[] variable in scenario template Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix converge.yml kubernetesObject indentation under args - Fix molecule.yml indentation to match project conventions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5374413 to
68709ec
Compare
Summary
exhausted-etcd-database-storageand scenario 116 derived from 6 real Konflux Web RCA incidentsNew Files
scenarios/sre/library/indexes/faults/32.jsonscenarios/sre/project/roles/faults/tasks/inject_exhausted_etcd_database_storage.yamlscenarios/sre/project/roles/faults/molecule/inject_exhausted_etcd_database_storage/scenarios/sre/library/indexes/scenarios/116.jsonTest plan
make validate-librarypassesinject_exhausted_etcd_database_storage)🤖 Generated with Claude Code