我無法將一個Docker化的應用程式部署到Google云平臺(GCP)專案中的App Engine Flexible Environment(AEF),該專案具有一個已配置的共享虛擬私有云(XPN)。
換句話說,我的應用程式具有以下app.yaml:
automatic_scaling:
max_num_instances: 1
min_num_instances: 1
env: flex
network: flex
instance_tag: incorrect-target-tag
name: projects/$GCP_PROJECT_ID/global/networks/$XPN_NETWORK_NAME
服務: $AEF_APPLICATION_NAME
以及在谷歌容器注冊中心(GCR)中確認的Docker影像名稱和標簽:
gcloud container images list-tags
us.gcr.io/$GCP_PROJECT_NAME/$AEF_APPLICATION_NAME。
--flatten=tags
--format='value(format("us.gcr.io/$GCP_PROJECT_NAME/$AEF_APPLICATION_NAME:{0}", tags))'/span>
--project=$GCP_PROJECT_NAME。
#=>
. . .
us.gcr.io/$GCP_PROJECT_NAME/$AEF_APPLICATION_NAME:$DOCKER_IMAGE_TAG。
. . .
無法部署到AEF:
yes | gcloud app deploy
--appyaml=./app.yaml
--image-url=us.gcr.io/$GCP_PROJECT_NAME/$AEF_APPLICATION_NAME:$DOCKER_IMAGE_TAG。
#=>。
要部署的服務。
描述符。 [/. . ./app.yaml] 。
source。 [/. . ./$AEF_APPLICATION_NAME]
目標專案。 [$GCP_PROJECT_NAME]
目標服務。 [$AEF_APPLICATION_NAME] 目標服務。
目標版本。 [$AEF_APPLICATION_VERSION]
目標網址。 [. . .]
目標服務賬戶。 [App Engine默認服務賬戶]
您是否要繼續(Y/n)?
開始部署服務[$AEF_APPLICATION_NAME] ...
警告:部署服務[$AEF_APPLICATION_NAME]將忽略組態檔中的 skip_files 欄位,因為鏡像已經被構建。
更新服務[$AEF_APPLICATION_NAME](這可能需要數分鐘)...
.............................................................failed.
ERROR: (gcloud.app.deploy)錯誤回應。[13] Flex操作專案/$GCP_PROJECT_NAME/regions/$AEF_APPLICATION_REGION/operations/xxxx-xxxx-xxxx-xxxxxxxx錯誤[INTERNAL]。在處理任務/app-engine-flex/insert_flex_deployment/flex_create_resources>1970-01-01T00:00:00.001Z000001.jc.2時,發生了一個內部錯誤while。 : <eye3 title='FAILED_PRECONDITION'/> generic::FAILED_PRECONDITION: 驗證錯誤。應用引擎靈活環境服務代理無法找到合適的Flex防火墻規則在網路'$XPN_NETWORK_NAME' 在專案'$GCP_PROJECT_ID'。讓共享VPC管理員按照在https://cloud.google.com/appengine/docs/flexible/python/using-shared-vpc 中的描述,創建一個Flex Firewall規則。
采用以下虛擬私有云(VPC)防火墻規則,支持通過XPN進行AEF通信:
cloud compute firewall-rules list
--filter="allowed[].ports=(8443) AND allowed[].ports=(10402)"/span>
--project=$GCP_PROJECT_NAME。
#=>
名稱 網路 方向 優先級 允許 拒絕 禁用
aef-instance $XPN_NETWORK_NAME INGRESS 1000 tcp:8443,tcp:10402 False
要顯示防火墻的所有欄位,請顯示以JSON格式。--format=json
要顯示所有欄位以表格式,請看例子以--help。
gcloud compute firewall-rules describe
aef-instance
--format=yaml
--project=$GCP_PROJECT_NAME[/span]。
#=>/span>
允許。
- IPProtocol: tcp
埠。
- '8443'
- '10402'/span>
creationTimestamp。'1970-01-01T00:00:00.000-01:00'
描述:允許aef和xpn之間的通信。
方向。INGRESS
禁用。false
id: 'xxxxxxxxxxxxxx'。
kind: compute#firewall。
logConfig:
enable。false enable.
名稱: aef-instance
網路: https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME/global/networks/$XPN_NETWORK_NAME。
優先級: 1000
selfLink: https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME/global/firewalls/aef-instance
sourceRanges。
- 35.191.0.0/16
- 130.211.0.0/22
targetTags。
- incorrect-target-tag
注意:這個規則是必須的使用任何AEF應用程式的XPN,描述這里.
。uj5u.com熱心網友回復:
按照鏈接AEF和XPN的指南這里,VPC防火墻規則aef-instance的目標標簽MUST是aef-instance。 更新VPC防火墻規則aef-instance的正確目標標簽:
gcloud compute firewall-rules update
aef-instance
--project=$GCP_PROJECT_NAME[/span]。
--target-tags=aef-instance
#=>
更新 [https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME/global/firewalls/aef-instance]。
而且你將能夠重新部署到AEF,而不會出現那個驗證錯誤。
注意:改變app.yaml中的目標標簽并不是必要的:只要存在符合這個標準的防火墻規則,AEF 應用程式就能夠通過配置的 XPN 進行通信,準確無誤,無論在app.yaml中指定什么標簽。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/317581.html
標籤:
