Проблема
При использовании Secrets типа stringData обнаружил проблему, что если вы удаляете в inventory какие-либо ключи из этого объекта, то после деплоя helm не удаляет эти ключи в конечном объекте, а оставляет их, удаляя значения. В OpenShift это выглядит так:
Это затрагивает любые чарты, потому что проблема не в рендеринге шаблонов, а в моменте когда helm уже мержит изменение в конечном объекте.
Решение
Добавьте аннотации для таких Secrets. Тогда, перед обновлением ресурса, helm будет его удалять и девиантное поведение исчезнет.
annotations:
"helm.sh/hook": "pre-install, pre-upgrade, pre-rollback"
"helm.sh/hook-delete-policy": before-hook-creation
"helm.sh/resource-policy": keep
Данные аннотации также могут быть полезны для объектов с Immutable полями. Например, мы можем добавить их в route и у нас появится возможность изменять хост в inventory, не удаляя объект руками перед деплоем. Однако, ресурсы, созданные с помощью хука Helm, являются неуправляемыми объектами Kubernetes. Другими словами, удаление Helm-релиза не приведет к удалению ресурсов, созданных с помощью хуков, но все остальные возможности, например Rollback могут работать, если указать аннотации как в примере выше. Между неудаляемым ресурсом командой helm delete и испорченными в редких случаях Secrets выбирать Вам.