Я не знаком с Kaniko и предполагаю, что вы уверены, что ваш шаг работает в Cloud Build (инструкции здесь ). Вы можете подтвердить это, проверив наличие обновленных образов в Реестре контейнеров.
Я рекомендую не использовать :latest
, но, возможно, ваш git коммит (см., Например, ${COMMIT_SHA}
).
- name: "gcr.io/kaniko-project/executor:v0.20.0"
args:
- --destination="gcr.io/$PROJECT_ID/database:${COMMIT_SHA}"
...
Изменение «политики-перезапуска-контейнера» меняет то, как виртуальная машина будет реагировать на сбой контейнера. На самом деле вы хотите выполнить принудительный перезапуск (с новым образом). Я рекомендую вам попробовать:
- name: gcr.io/cloud-builders/gcloud
args:
- compute
- instances
- update-container
- database
- --container-image="gcr.io/${PROJECT_ID}/database:${COMMIT_SHA}"
...
Это должно заставить виртуальную машину перезапустить контейнер, и, поскольку SHA будет меняться при каждом изменении вашего git репозитория, это всегда должно вытягивать обновленный образ.
Когда вы создаете экземпляр (в первый раз) вы:
- монтируете постоянные тома (см. ссылку )
- настраиваете env varz (см. ссылка ).
Когда вы обновляете виртуальную машину, вам не нужно не повторно применять эти монтирования или воссоздавать переменные env, поскольку они будут сохранены. Вы можете изменить их, если вы sh (но я думаю, что вам это не нужно).
Так что ng формы:
PD="persistence"
gcloud compute instances create-with-container ${INSTANCE} \
--container-image docker.io/busybox:1.27 \
--disk name=${PD} \
--container-mount-disk=mode="rw",mount-path="/disks/${PD}",name="${PD}" \
--container-env=IGNITE_WORK_DIR="/disks/${PD}" \
...
ПРИМЕЧАНИЕ они необходимы только во время создания виртуальной машины не обновление