Kubernetes/OC ConfigMap vs config в git и process в контейнере для отслеживания изменений

Я развертываю приложение с весенней загрузкой и рассматриваю различные варианты настройки внешнего вида. Я узнал ниже варианты.

1) ConfigMap
2) properties/yaml file in Git and a process in container to watch for changes and restart the application with new properties if there are any changes.

Это относится не только к приложению, но и к другим компонентам, а также к прокси (apache RP,nginx)/ балансировщикам нагрузки и т. Д.

Спасибо

2 ответа

Оба хороших варианта для обработки конфигурации.

Git-подход обладает преимуществом версионной конфигурации, но вам потребуется дополнительный контейнер для кодирования и обслуживания.

Для меня configmap - лучший вариант. Поскольку это нативный объект Kubernetes, вам не нужны ни git-репозиторий, ни git-контейнер, он просто хранится и сохраняется в etcd, гораздо проще в обслуживании.

Кроме того, есть несколько проектов с открытым исходным кодом, которые могут помочь вам с использованием configmaps: я использую kube-backup, чтобы иметь версионную копию каждой конфигурации, и configmapcontroller для автоматического развертывания развертываний при изменении configmap.

Если вы используете несколько сервисов, совместно использующих конфигурацию, лучше всего использовать Spring Cloud Config. Это запускает сервер конфигурации, поддерживаемый Git, и приложения извлекают конфигурацию оттуда.

Для более простого решения я бы предпочел ConfigMaps (или Secrets). Существует очень хорошая интеграция Spring и Kubernetes для обработки ConfigMaps и Secrets, включая перезагрузку при изменении: Spring Cloud Kubernetes. В настоящее время проект находится в стадии инкубации, но он уже достаточно зрелый (поскольку он разрабатывался несколько лет в рамках Red Hat/Fabric8).

Другие вопросы по тегам