для моей компании мне было поручено создать стандартную конфигурацию и шаблон для (EKS) кластера Kubernetes в Terraform, который можно развернуть с помощью GitLab CI/CD. Развертывание и настройка выполнялись некоторое время, но я боролся с шаблонной стороной вещей.
Вот моя задача: создать шаблон проекта/репозитория с конфигурацией, которую кто-то другой может копировать и редактировать.
Однако затем мне нужно иметь возможность обновить свою конфигурацию, чтобы она соответствовала версиям или новым функциям в будущем, а затем им нужно будет клонировать/копировать/объединить мой шаблон обратно в свою конфигурацию, не перезаписывая их конкретную конфигурацию.
Я попросил совета у одного из старших разработчиков, и он порекомендовал мне создать своего рода файл конфигурации (например, файл .tfvars для Terraform), в который может войти конкретная конфигурация, а затем я могу абстрагировать свой шаблон и обновить его. не влияя на конфигурацию в будущем. Это будет работать на первый взгляд и на данный момент, но по мере добавления функций и поступления более конкретных запросов для меня это будет становиться все более и более неподдерживаемым в будущем.
Другим вариантом было бы использование модулей Terraform, но это страдает от того же возможного побочного эффекта, что позже превратится в неуправляемый беспорядок.
Итак, я в растерянности здесь.Это не кажется очень удобным для меня или для них в будущем. Самое главное, когда для моего шаблона произойдет обновление основной версии, их конфигурация наверняка сломается, и я не смогу исправить это без большого количества ручной работы. Я хочу сделать немного больше работы сейчас, чтобы в будущем его можно было поддерживать с минимальными усилиями, но я не могу найти хорошего решения.
Итак, мой вопрос ко всем вам звучит так: как мне правильно создать поддерживаемый шаблон кластера Terraform Kubernetes, который я смогу обновлять с минимальными усилиями в будущем?