Когда вы делаете такое изменение, Kubernetes ищет какое-то изменение в объекте Deployment.Если он видит, что вы хотите, чтобы 1 Pod выполнял app-development:latest
, и у него уже есть 1 Pod, выполняющий изображение с именем app-development:latest
, то он находится в правильном состоянии и ему ничего не нужно делать (даже если локальное изображение имеетэтот тег изменился).
Канонический совет: никогда не использовать тег :latest
с Kubernetes.Каждый раз, когда вы строите изображение, используйте отдельный тег (отметка времени или текущий идентификатор подтверждения исходного кода - это простые уникальные вещи).С Helm достаточно просто внедрить это, основываясь на значении, которое вы передаете:
image: app-development:{{ .Values.tag | default "latest" }}
Этот вид последовательности сборки будет выглядеть немного более как
TAG=$(date +%Y%m%d-%H%m%S)
docker build -t "app-development:$TAG" .
helm upgrade --install --set "tag=$TAG"
Если вы активноРазрабатывая свой компонент, вы можете попытаться отделить «взлом кода» от «развертывания в Kubernetes» настолько, насколько это возможно.Некоторое количество этого, как правило, неизбежно, но Kubernetes действительно не предназначен для того, чтобы быть живой средой разработки.