- 21, Oct 2024
- #1
Дан кластер Kubernetes с двумя пространствами имен; Каков рекомендуемый способ мониторинга и синхронизации различий в картах конфигурации, развертываниях, входах и т. д. между пространствами имен?
#kubernetes #оркестрация
Дан кластер Kubernetes с двумя пространствами имен; Каков рекомендуемый способ мониторинга и синхронизации различий в картах конфигурации, развертываниях, входах и т. д. между пространствами имен?
#kubernetes #оркестрация
В настоящее время мы расследуем https://github.com/roboll/helmfile для простой синхронизации диаграмм Helm между пространствами имен.
Редактировать: Сценарий развертывания, описанный в этом ответе, очень похож Хелмфайл и сейчас мы находимся в процессе обновления до Helmfile, чтобы мы могли отказаться от наших скриптов, которые запускают несколько выпусков Helm, поскольку с этим Helmfile работает хорошо.
Это немного альтернативный и косвенный ответ. Используйте лучшие практики «инфраструктура как код», чтобы избежать рассинхронизации сред. Я верю, что люди найдут это полезным альтернативным предложением и действительным ответом.
Профилактика лучше лечения. Не позволяйте пространствам имен рассинхронизироваться, рассматривая вашу конфигурацию как код и управляя ею через git. Helm — менеджер пакетов для конфигурации Kubernetes. Он может обрабатывать произвольные объекты конфигурации, такие как расширения Openshift. Это позволит вам настроить конвейер развертывания и рабочий процесс git, который обеспечит синхронизацию ваших сред. (Обновление: используйте Helmfile для управления несколькими выпусками Helm).
В качестве примера в нашей настройке у нас есть диаграмма Helm, которая просто устанавливает карты конфигурации, и другая, которая просто устанавливает секреты. Фактические значения для установки передаются как параметр, например my-app-secret-values.yaml
. So we have different yaml values all under git and a deploy script that iterates over them applying the helm chart that loads the values and updates the corresponding configmap or secret. Helm reads, compares, and only writes when something has changed. So the deploy script will result in only changing a secret or config map that has changed in git. All the configuration is under git and managed like code. Syncing configuration between environments can then be managed just like promotion of code. As a bonus helm creates a backup every version of every object it changes stored inside of Kubernetes. If let's you list the prior versions and rollback to a previous configuration. Also as everything is deployed from git all the history of all settings in all namespaces can be seen in git.
Мы также устанавливаем и запускаем основные приложения в виде традиционных диаграмм Helm, которые продвигаются через среды. Эти управляющие диаграммы ссылаются на карты конфигурации и секреты, которые развертываются отдельно, когда мы хотим настроить параметры в данной среде.
Heptio открыла исходный код инструмента под названием Тезей чтобы помочь с этим. В Kubernetes нет ничего встроенного для этого, но воспользуйтесь утилитой Тесей, вы сможете написать для этого скрипт.