Как пользователь я предпочитаю Helm-чарты т.к.:
1) Я всегда могу видеть что происходит внутри
2) Если мне нужно что-то добавить или изменить, я могу легко этого сделать без пересборки docker-образа и прочей лабуды
3) Если разработчик чарта забухал, я или кто угодно может продолжить его разработку
(т.к. это всего-лишь пачка манифестов)
4) Большинство операторов расчитанно на деплой 1-3 копий приложения, когда таких копий становится сотни или даже тысячи операторы показывают себя далеко не с самой лудшей стороны.
5) CRD требуют cluster-admin прав
6) Со временем кластер оказывается под чистую засран всевозможными CRD и контроллерами для них. Тратится больше ресурсов, и этим зоопарком сложно управлять.
Как разработчик я предпочитаю Helm-чарты т.к.:
1) Наиболее простой инструмент, который есть у всех
2) Пользователи всегда могут видеть что применяется внутри (т.к. это всего-лишь пачка манифестов)
3) Если я условно забухаю, кто угодно сможет продолжить разработку
для пользователя боль, когда оператор рулит объектами через CRD и просто не прокидывает какие-то поля. А тебе они нужны. И приходится либо kubectl patch после установки оператора, причем тебе нужны патчи например для деплойментов, а установка объекта это crd, который поднимает например деплоймент, и надо костылить ожидание появления именно деплойментов.
Ну либо PR отправлять разрабу оператора. Вот недавно как раз отправлял PR на redis spotahome, банально ради поля priorityClassName