Поехали проверять.
helm template alexk-test charts/cluster/
Всё ок, нет проблем, куча манифестов срендерилось.
Теперь иду в файл
charts/cluster/values.yamlи меняю
endpointCA:
create: false
на
endpointCA:
create: "false"
Снова запускаю и получаю ошибку
helm template alexk-test charts/cluster/
Error: values don't meet the specifications of the schema(s) in the following chart(s):
cluster:
- recovery.endpointCA.create: Invalid type. Expected: boolean, given: string
Отлично, у меня есть
- мой чарт/чарты
- автоматическая генерация схемы путем
pre-commit и/или CICD команды схемы для чарта до релиза чартаТо есть когда мы что-либо меняем в своём чарте, то у нас и автоматическая проверка идёт и автоматически генерируется и в гите обновляется схема.
Дальше я свой общий
pipeline для приложений коллег добавляю шаг helm template и он до релиза проверяет values.yaml файлы пользователей и коллег.Так, а что у нас с GitOps ArgoCD подходом?
Ведь мы там не используем helm в чистом виде и нет понятия релиза.
Читаю документацию
https://argo-cd.readthedocs.io/en/stable/user-guide/helm/
Ура, под капотом ArgoCD использует как раз helm template, а значит мы при syncing увидим не просто ошибку, а ошибку в каком конкретно месте у нас ошибка.
Итог:
- в самом чарте появилась схема, к тому же она автоматически обновляется при каждом изменении чарта
- при использовании helm для релизов в моём pipeline я добавляю
helm template для проверки корректности values.yaml файлов разработчиков- в случае работы с ArgoCD у меня так же проверяется схема, снижая количество человеческих ошибок
- и со стороны чарта и со стороны репозиториев разработчиков есть
pre-commit hooks (если на них забивают🐒)Поздравляю - мы снова добавили какую-то очередную