本頁說明如何使用輸入設定,限制對 Cloud Run 服務 和執行個體的網路存取權。
在網路層級,Cloud Run 服務的或執行個體的 端點可透過下列網路進入路徑連線:
所有網路輸入路徑都受資源的輸入設定限制。預設輸入路徑和輸入設定允許網際網路上的任何資源存取 Cloud Run 資源。您可以使用自訂限制條件,為機構或一組專案限制 Ingress 設定。從上述任何網路進入路徑抵達服務 或執行個體 端點的要求,仍適用 IAM 驗證。如要以分層方式管理存取權,請同時使用網路連入設定和 IAM 驗證。
使用網路標記限制連接器 VM 存取虛擬私有雲資源。
可用的網路輸入設定
可用的設定如下:
| 設定 | 說明 |
|---|---|
| 內部 |
最嚴格的限制。允許來自下列來源的要求:
run.app URL,要求仍會留在 Google 網路中。
來自其他來源 (包括網際網路) 的要求,無法在 run.app URL 或自訂網域連線至服務 或執行個體 。 |
| 內部和 Cloud Load Balancing | 這項設定允許來自下列資源的要求:
注意:如要在 gcloud CLI 中啟用這項設定,請使用 internal-and-cloud-load-balancing。
如要在 Google Cloud 控制台中啟用這項設定,請選取「Internal」>「Allow traffic from external Application Load Balancers」(允許外部應用程式負載平衡器傳出的流量)。 |
| 全部 |
最寬鬆的設定。允許所有要求,包括從網際網路直接傳送至 run.app 網址的要求。 |
存取內部服務
其他注意事項如下:
存取內部服務時,請照常使用服務的網址呼叫服務,可以是預設
run.app網址,也可以是在 Cloud Run 中設定的自訂網域。如果是來自 Compute Engine VM 執行個體的要求,只要機器有外部 IP 位址或使用 Cloud NAT,就不需要進一步設定。否則,請參閱「接收來自虛擬私有雲網路的要求」。
從 Cloud Run 或 App Engine 呼叫設為「內部」或「內部和 Cloud Load Balancing」的 Cloud Run 服務時,流量必須透過視為內部的虛擬私有雲網路轉送。請參閱「接收來自其他 Cloud Run 服務或 App Engine 的要求」。
即使資源具有外部 IP 位址,來自同一專案中虛擬私有雲網路內資源的要求仍視為「內部」要求。
透過 Cloud VPN 和 Cloud Interconnect 連線至虛擬私有雲網路的地端部署資源所發出的要求,屬於「內部」要求。
設定 Ingress
以下各節說明如何為 Cloud Run 服務 和執行個體設定 Ingress。
設定 Cloud Run 服務的 Ingress
您可以使用Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform,為 Cloud Run 服務設定輸入流量。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
如要設定新服務,請按一下「Deploy container」(部署容器),顯示「Create service」(建立服務) 表單。填寫初始服務設定頁面。
如要設定現有服務,請按一下該服務,然後按一下「Networking」(網路) 分頁標籤。
選取要允許的輸入流量。
按一下「建立」即可建立新服務。點選「查看差異並重新部署」,然後點選現有服務的「部署變更」。
gcloud
如要部署新服務,請使用
--ingress旗標部署服務:gcloud run deploy SERVICE \ --image IMAGE_URL \ --ingress INGRESS
更改下列內容:
SERVICE:您的服務名稱。IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。INGRESS:其中一個可用的 Ingress 設定:allinternalinternal-and-cloud-load-balancing
如要變更現有服務的 Ingress,請按照下列步驟操作:
gcloud run services update SERVICE \ --ingress INGRESS
更改下列內容:
SERVICE:您的服務名稱INGRESS:其中一個可用的 Ingress 設定:allinternalinternal-and-cloud-load-balancing
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/ingress:註解:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/ingress: INGRESS spec: template: metadata: name: REVISION
更改下列內容:
SERVICE:Cloud Run 服務的名稱。INGRESS:其中一個可用的 Ingress 設定:allinternalinternal-and-cloud-load-balancing
REVISION:新的修訂版本名稱或刪除名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:- 開頭為
SERVICE- - 只能包含小寫字母、數字和
- - 結尾不是
- - 不超過 63 個半形字元
- 開頭為
使用下列指令,以新設定取代服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定的google_cloud_run_v2_service 資源中新增下列項目:設定 Cloud Run 執行個體的輸入
您可以使用 Google Cloud CLI 或 YAML,為 Cloud Run 執行個體設定連入流量:
gcloud
如要建立新的執行個體,請使用
--ingress旗標部署執行個體:gcloud beta run instances deploy INSTANCE \ --image IMAGE_URL \ --ingress INGRESS
更改下列內容:
INSTANCE:執行個體名稱。IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。INGRESS:其中一個可用的 Ingress 設定:allinternalinternal-and-cloud-load-balancing
如要變更現有執行個體的 Ingress,請按照下列步驟操作:
gcloud beta run instances update INSTANCE \ --ingress INGRESS
更改下列內容:
INSTANCE:執行個體名稱。INGRESS:其中一個可用的 Ingress 設定:allinternalinternal-and-cloud-load-balancing
YAML
如果您要建立新執行個體,請略過這個步驟。 如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
更新
run.googleapis.com/ingress:註解:apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/ingress: INGRESS run.googleapis.com/launch-stage: BETA spec: containers: - name: CONTAINER_NAME image: IMAGE_URL
更改下列內容:
INSTANCE:Cloud Run 執行個體的名稱。INGRESS:其中一個可用的 Ingress 設定:allinternalinternal-and-cloud-load-balancing
CONTAINER_NAME:容器名稱。IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
停用預設網址
停用預設網址前,請注意下列Google Cloud 服務 或 執行個體會使用預設run.app網址叫用 Cloud Run。停用預設 run.app 網址會導致下列服務 或執行個體 無法正常運作:
- 以 Cloud Run 服務為基礎的 Cloud Functions 第 2 代 API
cloudfunctions.net網址。 - Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Dialogflow CX
- Eventarc
- Firebase App Hosting
- Firebase Hosting
- Pub/Sub
- 綜合監控和運作時間檢查
- Workflows
請參閱下列各節,瞭解如何停用 Cloud Run 服務 和執行個體的預設網址。
停用 Cloud Run 服務的預設網址
停用 Cloud Run 服務run.app 或執行個體 的預設網址,僅允許該項服務其他輸入路徑傳來的流量,例如 Cloud Load Balancing 和任何已設定的網域對應。
如要停用預設網址,請使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 執行下列步驟。
控制台
前往 Google Cloud 控制台的 Cloud Run「Services」(服務) 頁面:
按一下現有服務。
選取「網路」分頁標籤。
在「端點」資訊卡中,清除「預設 HTTPS 端點網址」下方的「啟用」。
依序點選「查看差異並重新部署」和「部署變更」。
如要還原預設網址,請選取「啟用」。
gcloud
如為現有服務,請執行
gcloud run services update指令並搭配使用--no-default-url旗標,例如:gcloud run services update SERVICE_NAME --no-default-url
如為新服務,請執行加上
--no-default-url旗標的gcloud run deploy指令,例如:gcloud run deploy SERVICE_NAME --no-default-url
將
SERVICE_NAME換成 Cloud Run 服務名稱。輸出內容會顯示網址為
None。
如要還原預設網址,請使用 --default-url 旗標。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
如要停用
run.app網址,請使用run.googleapis.com/default-url-disabled註解:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/default-url-disabled: true name: SERVICE spec: template: metadata: name: REVISION
更改下列內容:
SERVICE:Cloud Run 服務的名稱。REVISION:新的修訂版本名稱或刪除名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:- 開頭為
SERVICE- - 只能包含小寫字母、數字和
- - 結尾不是
- - 不超過 63 個半形字元
- 開頭為
使用下列指令建立或更新服務:
gcloud run services replace service.yaml
如果存在
service.yaml檔案,gcloud run services replace指令預設會使用該檔案。
如要還原預設網址,請移除 run.googleapis.com/default-url-disabled 註解。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service 資源: resource "google_cloud_run_v2_service" "disable_default_url_service" {
name = "cloudrun-service"
location = "europe-west1"
default_uri_disabled = true
template {
containers {
image = "us-docker.pkg.dev/cloudrun/container/hello"
}
annotations = {
"run.googleapis.com/ingress" = "all" # "all" or "internal-only"
}
}
}
確認 launch_stage 和 default_uri_disabled 行位於 main.tf 檔案中。上述 google_cloud_run_v2_service 資源會指定 Cloud Run 服務,並在預覽版中停用預設網址。
如要還原預設網址,請移除 default_uri_disabled 和 launch_stage 引數。
停用 Cloud Run 執行個體的預設網址
停用 Cloud Run 執行個體的預設 run.app 網址,僅允許該執行個體其他輸入路徑傳來的流量,例如 Cloud Load Balancing 和任何已設定的網域對應。
gcloud
如為現有執行個體,請執行
gcloud beta run instances update指令並加上--no-default-url標記,例如:gcloud beta run instances update INSTANCE --no-default-url
如為新執行個體,請執行
gcloud beta run instances deploy指令並加上--no-default-url旗標,例如:gcloud beta run instances deploy INSTANCE \ --image IMAGE_URL \ --no-default-url
將
INSTANCE換成 Cloud Run 執行個體名稱。輸出內容會顯示網址為
None。
如要還原預設網址,請使用 --default-url 旗標。
YAML
如果您要建立新執行個體,請略過這個步驟。 如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如要停用預設網址,請將
run.googleapis.com/default-url-disabled註解設為'true':apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/default-url-disabled: 'true' run.googleapis.com/launch-stage: BETA spec: containers: - name: CONTAINER_NAME image: IMAGE_URL
更改下列內容:
INSTANCE:Cloud Run 執行個體的名稱。CONTAINER_NAME:容器名稱。IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
如要還原預設網址,請將 run.googleapis.com/default-url-disabled 註解設為 false 或移除註解。
後續步驟
- 瞭解輸出設定。
- 為 Cloud Run 設定內部應用程式負載平衡器。
- 使用 Cloud Run 設定外部應用程式負載平衡器。
- 設定 IAM 驗證方法,以便存取服務 或執行個體。