Развертывание Google Cloud Run не работает с использованием интерфейса командной строки SDK gcloud

У меня есть служба, созданная в Google Cloud run, которую я могу развернуть вручную через пользовательский интерфейс Google Cloud Console, используя образ в реестре контейнеров. Но развертывание из CLI терпит неудачу. Вот команда, которую я использую, и ошибка, которую я получаю. Я не могу понять, что мне не хватает:

$ gcloud beta run deploy service-name --platform managed --region region-name --image image-url
Deploying container to Cloud Run service [service-name] in project [project-name] region [region-name]
X Deploying...
  . Creating Revision...
  . Routing traffic...
Deployment failed
ERROR: (gcloud.beta.run.deploy) INVALID_ARGUMENT: The request has errors
- '@type': type.googleapis.com/google.rpc.BadRequest
  fieldViolations:
  - description: spec.revisionTemplate.spec.container.ports should be empty
    field: spec.revisionTemplate.spec.container.ports

Обновление 1: я обновил SDK с помощью gcloud components update, но проблема не исчезла.

Вот моя версия SDK

$gcloud version
Google Cloud SDK 270.0.0
beta 2019.05.17
bq 2.0.49
core 2019.11.04
gsutil 4.46

Я использую многоступенчатую сборку докеров. Вот мой Dockerfile:

FROM custom-dev-image

COPY . /project_dir
WORKDIR /project_dir
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
  /usr/local/bin/go build -a \
  -ldflags '-w -extldflags "-static"' \
  -o /root/go/bin/executable ./cmds/project/main.go

FROM alpine:3.10
ENV GIN_MODE=release APP_NAME=project_name
COPY --from=0 /root/go/bin/executable /usr/local/bin/
CMD executable


person pcx    schedule 05.11.2019    source источник
comment
Вы можете поделиться версией gcloud SDK gcloud version? Можете ли вы поделиться своим dockerfile?   -  person guillaume blaquiere    schedule 05.11.2019
comment
Не уверен, что это ваш случай, но если вы пытаетесь раскрыть свою конфигурацию. Я предлагаю вам следовать этому пример. Обратите внимание, что ports пусто и containerPort: 80 получает значение. В противном случае поделитесь, пожалуйста, дополнительной информацией о вашей конфигурации.   -  person sllopis    schedule 05.11.2019
comment
Вам необходимо обновить CLI gcloud components update.   -  person John Hanley    schedule 05.11.2019
comment
@guillaumeblaquiere Я обновил вопросы своей версией SDK и файлом dockerfile   -  person pcx    schedule 06.11.2019
comment
@JohnHanley обновление компонентов не помогло :(   -  person pcx    schedule 06.11.2019
comment
@sllopis Я не использую Kubernetes, не знаю, как ваше предложение применимо к Google Cloud Run. Я не использую настраиваемую конфигурацию, просто файл dockerfile   -  person pcx    schedule 06.11.2019
comment
Описание сообщения об ошибке: spec.revisionTemplate.spec.container.ports should be empty, я обнаружил, что часть container - это устарел. Кроме того, проверьте свой ports массив, потому что вы могли поместить в него некоторые значения и он должен быть пустым, как указано в сообщении об ошибке.   -  person sllopis    schedule 06.11.2019
comment
Дополнительную информацию о ports можно найти здесь   -  person sllopis    schedule 06.11.2019
comment
@pcx Я могу обойти эту проблему, воссоздав службу в Cloud Run, а затем снова запустив развертывание. Похоже, это проблема с сервисом Cloud Run.   -  person Juk    schedule 06.11.2019
comment
столкнулся с той же проблемой здесь   -  person Hady Rashwan    schedule 07.11.2019
comment
в моем случае сборка работает с cli, но я не могу развернуть, я использую пользовательский интерфейс для развертывания новой версии   -  person Hady Rashwan    schedule 07.11.2019
comment
@Juk Я открыл здесь проблему в официальном трекере issueetracker.google.com/issues/144069696. Добавьте к этому вопросу любую информацию, которая может быть полезной. Спасибо!   -  person pcx    schedule 07.11.2019
comment
@HadyRashwan То же самое, сейчас я развертываю вручную с помощью пользовательского интерфейса. Это действительно большая поломка для сервиса Google, несмотря на то, что он находится в стадии бета-тестирования! ой   -  person pcx    schedule 07.11.2019


Ответы (2)


У меня была такая же проблема, и я предполагаю, что это произошло из-за того, что у меня было более старое развертывание Cloud Run, которое было создано до того, как я запустил gcloud components update после некоторого обновления.

Мне удалось исправить это, удалив всю службу Cloud Run (через графический интерфейс) и снова развернув ее с нуля (через терминал). Я заметил, что определение ports: исчезло из YAML, как только я это сделал.

После этого я мог нормально выполнять развертывание.

person tomtom    schedule 07.11.2019
comment
Теперь я столкнулся с этой проблемой. Создание ревизии ................... прервано Ошибка развертывания ОШИБКА: (gcloud.beta.run.deploy) Превышен крайний срок готовности ресурсов. Я не уверен, что причиной является тайм-аут «gcloud beta run deploy» ?? Но когда я снова запускаю, это работает, звучит странно. ???? - person Juk; 07.11.2019
comment
Спасибо. То же исправление сработало для меня. После удаления и воссоздания службы я теперь могу отправлять новые версии службы Cloud Run из интерфейса командной строки gcloud. - person Jonathan Fuerth; 08.11.2019

Это была ошибка в Cloud Run. Это было исправлено, и теперь у меня работает развертывание с помощью CLI. Вот ссылка на проблему, которую я поднял с Google Cloud, на которую есть ответ https://issuetracker.google.com/issues/144069696.

person pcx    schedule 08.11.2019