Я посмотрел на API REST, предоставленный Google для создания службы Cloud Run.
Это начинается с записи здесь:
POST https: // {endpoint} /apis/serving.knative.dev/v1/ enjparent‹/services
, где тело содержит Сервис .
, который содержит ServiceSpe c
, который содержит RevisionRemplate
, который содержит RevisionSpe c
, который содержит Контейнер
, который содержит ContainerPort
Если мы теперь сопоставим это с источником расширения Terraform для обработки создания Cloud Run Services, мы находим:
https://github.com/terraform-providers/terraform-provider-google/blob/2dc3da62e3844d14fb2136e09f13ea934b038411/google/resource_cloud_run_service.go#L90
и в комментариях находим следующее:
В контексте пересмотра, мы запрещаем некоторые поля этого контейнера, в том числе: name, ports и volumeMounts. Контракт времени выполнения задокументирован здесь: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
Хотя name и volumeMounts кажутся ok мне на данный момент, я не чувствую причину что ports
не отображаются.
Из этого, однако, я вижу, что неспособность указать порт через Terraform, кажется, явная, а не упущение. Мне также кажется, что возможность указать порт действительно присутствует в REST API в Google.
Затем я собирался предложить вам исправить дефект через Github, но затем подумал, существует ли он уже. Я немного покопался, и уже есть запрос на отсутствующую функцию:
Разрешить указание 'container_port' и 'request_timeout' для google_cloud_run_service
Я считаю, что ядро тогда ответом на ваш вопрос станет:
То, что вы пытаетесь сделать, должно работать с Terraform и было поднято как проблема, и мы должны дождаться разрешения в поставщике Terraform.