kubectl
не видит никаких изменений в файле развертывания yaml, поэтому он не будет вносить никаких изменений. Это одна из проблем, связанных с использованием тега latest
.
Пометьте свое изображение на какой-нибудь инкрементной версии или номере сборки и замените latest
на этот тег в конвейере CI (например, envsubst
или аналогичным),Таким образом, kubectl
знает, что изображение изменилось. И вы также знаете, какая версия образа работает. Тегом latest
может быть любая версия изображения.
Упрощенный пример для DevOps Azure:
# <snippet>
image: mycontainerregistry.azurecr.io/myweb:${TAG}
# </snippet>
Конвейер YAML:
stages:
- stage: Build
jobs:
- job: Build
variables:
- name: TAG
value: $(Build.BuildId)
steps:
- script: |
envsubst '${TAG}' < deployment-template.yaml > deployment.yaml
displayName: Replace Environment Variables
В качестве альтернативы вы также можете использовать другуюинструмент, подобный Замена токенов (другой синтаксис: #{TAG}#
).