Вы должны искать такую настройку:
Ваши изображения Docker имеют какой-то уникальный тег, а не latest
;отметка даты, как правило, будет работать нормально.
Ваша диаграмма Хелма должна принимать тег в качестве параметра в файле values.yaml
.
Выследует использовать Kubernetes Deployment (не пустой стручок);в части спецификации pod укажите изображение как image: MY-REPO.azurecr.io/MY-IMAGE:{{ .Values.tag }}
.
Когда у вас новая сборка, вы можете helm update --set tag=20190214
;это подтолкнет обновленную спецификацию развертывания к Kubernetes;и это заставит его создавать новые модули с новым изображением, а затем уничтожать старые модули со старым изображением.
Существенная проблема, с которой вы сталкиваетесь, заключается в том, что некоторые текстовые различияв файле YAML важно, чтобы Kubernetes предпринял какие-то действия.Если у него уже есть MY-IMAGE:latest
, и вы попытаетесь kubectl apply
или эквиваленту той же спецификации модуля или развертывания с точно такой же строкой образа, он решит, что ничего не изменилось, и ему ничего не нужно делать.Точно так же, когда вы удаляете и воссоздаете модуль, узел решает, что у него уже есть изображение MY-IMAGE:latest
, и ему не нужно ничего выключать и тянуть;он просто использует то же (устаревшее) изображение, которое у него уже есть.
Некоторые рекомендации, относящиеся к описанному вами рабочему процессу:
Не используйте ...:latest
изображениетег (или любая другая фиксированная строка);вместо этого используйте какое-то уникальное значение, такое как отметка времени, идентификатор фиксации контроля версий или версия выпуска, где каждый раз, когда вы выполняете развертывание, у вас будет другой тег.
Не использоватьголые стручки;Вместо этого используйте контроллер более высокого уровня, чаще всего Deployment.
Никогда не используйте docker commit
.(Если ваше изображение потерпело крах в процессе производства, как бы вы объяснили: «О, я изменил некоторые вещи вручную, переписал используемое ими производство изображений и принудительно перезапустил все, но у меня нет записей о том, что я на самом деле сделал»?)Dockerfile, проверьте его в системе контроля версий и используйте docker build
для создания изображений.(Более того, настройте систему CI, чтобы создавать их для вас каждый раз, когда вы регистрируетесь.)