Развертывание в облаке с использованием образа из последней редакции

#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, чтобы облачный запуск мог получить его при повторном развертывании службы.