apache / couchdb-helm

Apache CouchDB Helm Chart
https://couchdb.apache.org/
Apache License 2.0
49 stars 64 forks source link

Support lifecycle hooks #124

Open yekibud opened 1 year ago

yekibud commented 1 year ago

What this PR does / why we need it:

Adds support for container lifecycle hooks which serve different use cases than helm hooks and can be more reliable for similar use cases (e.g. for changes outside of helm management like a pod or statefulset being deleted).

Special notes for your reviewer:

My use case requires a sophisticated postStart hook with variable interpolation from a parent chart, but I figured many users of this chart may not use it as a subchart, so I included the option to pass in simple container hooks via values, as well. I tried to make this opaque to the user so they could just use .Values.lifecycle in both cases, but I couldn't figure out how to get helm to differentiate between a template and a values map since both are map types. So I wound up supporting both use cases with .Values.lifecycle and .Values.lifecycleTemplate.

Furthermore, following the same pattern, I also added .Values.extraEnv and .Values.extraEnvTemplate to support passing secrets to the hooks.

Checklist

I get the following error when trying to run make test. Not sure if this is an existing issue, but it looks unrelated to the changes in this PR.

Error: failed linting and installing charts: failed identifying merge base: must be in a git repository
------------------------------------------------------------------------------------------------------------------------
No chart changes detected.
------------------------------------------------------------------------------------------------------------------------
failed linting and installing charts: failed identifying merge base: must be in a git repository
Removing ct container...
Deleting cluster "chart-testing" ...
Done!
make: *** [Makefile:31: test] Error 1
yekibud commented 1 year ago

@willholley any feedback? In case the use case of the PR isn't clear, here's a more concrete example:

Let's say you need to iterate through a list of values to create admin users, or some other dynamic process after your couchdb instance is stood up. This PR enables you to do that by providing a template to the statefulset that will allow you to populate those values.

Sound useful?

willholley commented 1 year ago

Thanks for the PR @yekibud. I don't see any issues with this so can merge once it's rebased, tests pass etc.

yekibud commented 1 year ago

Thanks for the PR @yekibud. I don't see any issues with this so can merge once it's rebased, tests pass etc.

@willholley Thanks. Rebased and updated my branch. I get the same error I reported for make test on main so I don't think that has to do with my PR.