Size: a a a

Kubernetes — русскоговорящее сообщество

2020 June 30

PK

Pavel Kolobaev in Kubernetes — русскоговорящее сообщество
на него нужно права выдавать
Сдал аттестацию на Certified Kubernetes Administrator
можешь ранчером пользоваться.
источник

KP

Kirill Ponomarev in Kubernetes — русскоговорящее сообщество
Dmitry Danilov
Коллеги, к Rancher есть интерес? Готовится вебинар на русском, могу поделиться ссылкой в личку, или здесь, если админ не забанит...
Я бы посмотрел
источник

DD

Dmitry Danilov in Kubernetes — русскоговорящее сообщество
Rancher свободен для распространения.
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
Есть helm-chart, состоящий из пары веб-приложений (деплоймент), сервиса, ингреса. А ещё там Secret и ConfigMap, которые тянутся в envFor подов и содержат конфигурирующие переменные окружения.

Прикручиваю к этим волшебным веб-приложениям схема-миграции базы данных, использую helm hook: pre-install,pre-upgrade + Job. Т.к. миграциям тоже нужны конфиги — им тоже нужны configmap и secret. Конфигмапы создаются уже после pre-install,pre-upgrade, поэтому нужно немного магии

Добавил в конфиг-мап тоже запуск по хуку с отрицательным весом, мол, загрузись перед миграцией, а убейся перед следующей миграцией:
  
annotations:
   "helm.sh/hook": pre-install,pre-upgrade
   "helm.sh/hook-weight": "-10"
   "helm.sh/hook-delete-policy": before-hook-creation


Всё бы хорошо, да с такими настройками helm прибивает созданный конфигмап и поды самого приложения не разворачиваются с ошибкой CreateContainerConfigError
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
В дебаге хельма видна такая последовательность:
- пытается удалить конфигмап, не находит его
- создаёт конфиг-мап
- удаляет джобу старой миграции
- запускает джобу новой миграции
- удаляет конфиг-мап (???)
- пытается накатить оставшуюся часть приложения и падает по таймауту
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
Может быть у кого есть идеи куда копать? helm 3. Выглядит как частый сценарий — упаковать веб-приложение в хельм, положить миграции на хук, переменные в конфигмапе пошарить между ресурсами. Интернет гуглил, ничего полезного найти не смог:
https://github.com/helm/helm/issues/2622
https://helm.sh/docs/topics/charts_hooks/
источник

V

Vadim in Kubernetes — русскоговорящее сообщество
Dmitry Danilov
Rancher это оркестратор для Kubernetes
Оркестратор оркестратора выходит
источник

DD

Dmitry Danilov in Kubernetes — русскоговорящее сообщество
Vadim
Оркестратор оркестратора выходит
Верно :)
источник

DD

Dmitry Danilov in Kubernetes — русскоговорящее сообщество
Для больших исталляций
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
Dima Boger
Может быть у кого есть идеи куда копать? helm 3. Выглядит как частый сценарий — упаковать веб-приложение в хельм, положить миграции на хук, переменные в конфигмапе пошарить между ресурсами. Интернет гуглил, ничего полезного найти не смог:
https://github.com/helm/helm/issues/2622
https://helm.sh/docs/topics/charts_hooks/
1. не используйте helm для таких вещей. Как шаблонизатор ещё ничего, как только начинаете копать в сторону хуков и зависмостей - жопа
2. Если вам нужны миграции - то они должны выполняться ПОЛНОСТЬЮ в том же самом окружении, то есть те же конфиги, версии и тд. Обратная совместимость должна соблюдаться в обе стороны на протяжении нескольких версий: старая версия приложения работает с новой схемой, новая версия приложения работает со старой схемой
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
Andrey Kartashov
1. не используйте helm для таких вещей. Как шаблонизатор ещё ничего, как только начинаете копать в сторону хуков и зависмостей - жопа
2. Если вам нужны миграции - то они должны выполняться ПОЛНОСТЬЮ в том же самом окружении, то есть те же конфиги, версии и тд. Обратная совместимость должна соблюдаться в обе стороны на протяжении нескольких версий: старая версия приложения работает с новой схемой, новая версия приложения работает со старой схемой
Я со всем согласен, кроме специфики вопроса — вопрос про работу с хуками в хельме. С миграциями я обойду-пройду, но вылезет в другом месте проблема)
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
по поводу самой проблемы: делайте полный останов и руками обновляйте базу и приложение. Не надо пытаться натянуть на это helm
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
даже если сейчас получится, потом какое-нибудь говно вылезет
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
Спасибо за мнение)
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
я думаю, я просто подтвердил то, что крутится у вас в голове. :)
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
Нет, я всё ещё ищу ответа на конкретный вопрос, просто пытаюсь понять где и как его лучше задать, чтобы получить нужный ответ)
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
Dima Boger
Нет, я всё ещё ищу ответа на конкретный вопрос, просто пытаюсь понять где и как его лучше задать, чтобы получить нужный ответ)
helm изначально пытается следовать идеологии k8s, то есть он не грохнет вам все сразу поды из старого revision деплоя, а только по частям. То есть у вас миграция должна не просто в хуке каком то пройти а в процессе смены образа в deployment. Вы как думаете, у вас получится?
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
или у вас старая версия умеет с новой схемой работать?
источник

DB

Dima Boger in Kubernetes — русскоговорящее сообщество
Andrey Kartashov
или у вас старая версия умеет с новой схемой работать?
+
источник

AK

Andrey Kartashov in Kubernetes — русскоговорящее сообщество
если так, запихайте миграцию в init container и не парьтесь
источник