Я давно пользуюсь terraform, и мне это очень нравится.Я также настроил Atlantis , чтобы у моей команды был поток GitOps.Это мой текущий процесс:
- Добавление или удаление ресурсов из файлов Terraform
- Перенос изменений в GitHub и создание запроса на извлечение
- Atlantis собирает изменения и создаетплан terraform
- Когда утвержден PR, Atlantis применяет изменения
Недавно я обнаружил, что мне нужно настроить несколько управляемых кластеров Kubernetes с помощью Amazon EKS.Хотя Terraform способен создавать большую часть базовой инфраструктуры, он не справляется с настройкой некоторых ресурсов k8s (без поддержки шлюзов или доступа, поддержки альфа / бета-функций и т. Д.).Поэтому вместо этого я использовал ручной подход с использованием kubectl:
- Добавить ресурс в существующий файл или создать новый файл
- Добавить строку в make-файл, который запускаетсоответствующая команда (kubectl apply или create) для нового файла
- Если я использую диаграмму рулевого управления, добавьте строку с
helm template
, а затем kubectl apply
(мне не очень понравилось использовать tiller, иhelm3 все равно избавляется от него) - Если я хочу удалить ресурс, я делаю это вручную с помощью
kubectl delete
Этот процесс не кажется таким чистым, как мыделаю в Терраформ.Есть несколько ключевых проблем:
- Реального пробного запуска нет.Использование
kubectl --dry-run
или kubectl diff
на самом деле не работает, это только различие на стороне клиента.Серверные функции сравнения в настоящее время находятся в альфа-формате - Нет файла состояния.Если я удаляю материал из манифестов, я должен помнить, что он также должен быть удален из кластера вручную.
- Нет четкого способа получить gitops.Я посмотрел на Weaveworks Flux , но, похоже, он больше ориентирован на развертывание приложений.
- Makefile становится все более и более сложным.Не похоже, что это масштабируемо.
Я должен признать, что я довольно новичок в Kubernetes, поэтому мог бы пропустить что-то очевидное.
Есть ли способ для менядостичь процесса, аналогичного тому, что у меня есть в Terraform, во вселенной Kubernetes?