stackstorm-k8s
stackstorm-k8s copied to clipboard
Helm chart Unit Tests
Apart of Helm Chart Integration Testing in #27 which could be ran only against real K8s cluster and deployed release, consider adding Unit Tests for smaller item checks which is available as a Helm plugin: ~https://github.com/lrills/helm-unittest~ https://github.com/quintush/helm-unittest
Though not a unittest, I just experimented with using https://github.com/bats-core/bats-detik to have the inegration tests query k8s to ensure things are setup correctly. Seems to work ok.
I looked into the helm-unittest plugin. There are a chain of repos where one person and then another is maintaining it. And I don't relish writing unit tests in YAML even though everything else is in YAML.
Looking farther, it looks like the airflow folks pioneered using pytest to unit test helm charts instead of using helm-unittest: https://github.com/helm-unittest/helm-unittest/issues/110
Luckily airflow (and in particular the helm chart + tests) is Apache 2.0 licensed. So, we could use this utility file and start writing pytest-style unit tests. https://github.com/apache/airflow/blob/main/chart/tests/helm_template_generator.py
I've added a bunch of tests in #288.
Other tests that I think would be good (I'm listing values) in no particular order:
- [x] env and envFromSecrets
st2*.envandjobs.envst2actionrunner.envFromSecrets,st2sensorcontainer.envFromSecrets,st2client.envFromSecrets,- and
jobs.envFromSecrets
- [ ]
st2*.extra_volumes(all except st2chatops have it) - [x]
st2.packs.volumes - [ ] st2chatops
st2chatops.enabledst2chatops.env(some special handling of api key var)st2chatops.hubotScriptsVolume
- [ ] config
st2.configst2client.st2clientConfigjobs.st2clientConfig
- [ ] HTTPS in st2web (
st2web.env.ST2WEB_HTTPSandst2web.extra_volumes) - [ ] image
image.repositoryimage.tagst2*.image.tagandjobs.image.tag
- [ ]
st2*.replicas(some things can only ever have 1, others can have multiple...) - [ ] st2 security
st2.usernameandst2.passwordst2.system_user.userandst2.system_user.ssh_key_file
- [ ]
st2.datastore_crypto_key - [ ]
st2.rbac - [ ]
st2.packs.configs - [ ]
st2.packs.images - [x]
st2.packs.sensors - [ ]
jobs.preRegisterContentCommand - [ ]
jobs.skip - anything to do with external charts
Help wanted!