Как правильно управлять изменениями в кубернетах? - PullRequest
3 голосов
/ 08 апреля 2019

Я давно пользуюсь 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?

1 Ответ

1 голос
/ 08 апреля 2019

Это скорее вопрос мнения, поэтому я отвечу мнением. Если вам нравится управлять конфигурацией, вы можете попробовать некоторые из этих инструментов:

  • Если вы хотите использовать существующие файлы YAML (конфигурации) и использовать что-либо на более высоком уровне, вы можете попробовать kustomize .
  • Если вы хотите управлять конфигурациями Kubernetes, используя Jsonnet , вам следует взглянуть на Ksonnet . Помните, что Ksonnet не будет поддерживаться в будущем.

Если вы хотите просто автоматически выполнить helm update в автоматическом режиме, там еще нет инструмента. Вы должны будете что-то построить в этой точке, чтобы организовать все. Например, мы закончили тем, что создали собственный инструмент, который делает это.

...