debug helm chart
Приемы для локальной отладки helm chart-ов
$ helm template
Если перейти в локально скачанный чарт и выполнить команду, то можно получить итоговые манифесты
merged values
Как известно, helm engine берет values которые вы передаете в release и очень хитро merge-ит их со стандартными values-ами chart-а.
За счет этого сильно увеличивается DRY, т.к. в релизе можно переопределять только нужные параметры. Но что, если нужно увидеть получившиеся values-ы?
Можно сделать с помощью такого сниппета:
# pip install deepmerge pyaml
from copy import deepcopy
import yaml
from deepmerge import Merger
m = Merger(
# ref: https://deepmerge.readthedocs.io/en/latest/strategies.html#builtin-strategies
[
(list, ["override"]),
(dict, ["merge"]),
(set, ["union"])
],
# fallback
["use_existing"],
# conflict
["use_existing"]
)
def main() -> None:
with open("chart.values.yaml") as y:
chart = yaml.safe_load(y)
with open("release.values.yaml") as y:
release = yaml.safe_load(y)
# save copy of release values
release_values = deepcopy(release)
# all that we want is set, except we got chart Lists instead of Release Lists
m.merge(release, chart)
# return release lists
m.merge(release, release_values)
with open("merged.values.yaml", "w") as y:
yaml.dump(release, y)
if __name__ == "__main__":
main()