#google-cloud-platform #google-cloud-run #google-container-registry
#google-облачная платформа #google-cloud-run #google-контейнер-реестр
Вопрос:
Нам нужно развернуть ярлыки для нескольких CLoud Run
сервисов, используя следующее API method
https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services/replaceService
Мы ищем варианты , где мы можем применить labels
использование API
без какого — либо развертывания нового образа из Container Registry
. Мы понимаем , что во время применения будет deployment
и revision change
, labels
но мы хотим , чтобы во время развертывания он не извлекал новое изображение из container registry
, а использовал изображение из last revision
. Любой параметр конфигурации в Cloud Run
для предотвращения извлечения новых изображений при нанесении меток с помощью API
или gcloud run services update SERVICE --update-labels KEY=VALUE
Ответ №1:
Принцип облачного запуска (и обязательный, поскольку поведение одно и то же) заключается в том, что редакция неизменяема. Таким образом, если вы что-то измените в нем, будет создана новая редакция. Вы не можете подделать это!
Итак, решение состоит в том, чтобы использовать не последний тег вашего изображения, а его SHA.
# the latest
gcr.io/PROJECT_ID/myImage
gcr.io/PROJECT_ID/myImage:latest
# A specific version
gcr.io/PROJECT_ID/myImage:SHA123465465dfsqfsdf
Конечно, для этого вы должны обновить свой YAML.
Комментарии:
1. Поскольку номера SHA являются случайными, как мы можем предсказать или извлечь код SHA изображения, если оно создано заново, и передать его в облачный запуск для создания новой редакции. Не могли бы вы , пожалуйста , дать совет ?
2. Вы можете определить свой собственный тег на том же изображении. Вы можете использовать SHA, вы можете использовать версию v1.0.2, вы можете использовать строку (последнюю, prod, test, …), какую хотите. SHA — это, в большинстве случаев, commit SHA, который повторно используется для создания связи между исходным репозиторием git и вашей сборкой. Это зависит от вас, чтобы разумно управлять тегами
3. У меня есть сценарий, в котором мы создаем службу облачного запуска, которая извлекает изображение из GCR с именем изображения. На данный момент в облачном запуске мы не указали, что он должен искать какие-либо конкретные изображения с тегами. Теперь мы хотели создать новую версию облачного запуска всякий раз, когда в GCR появляется новое изображение. Поскольку облачный запуск работает путем преобразования тега в код SHA, поэтому даже когда мы создаем новое изображение, служба облачного запуска работает только со старым изображением.
4. Если вы не указали тег в службе облачного запуска, используется ПОСЛЕДНИЙ тег. Не забудьте пометить свое самое последнее изображение словом LATEST, чтобы облачный запуск мог получить его при повторном развертывании службы.