本頁面提供逐步操作說明,協助您排解 IAP On-premises Connector 設定問題。如需其他疑難排解資訊,請參閱「Cloud Service Mesh 偵錯」。
排解 500 錯誤問題
以下列出各種問題和可能的解決方案,協助您解決嘗試存取應用程式時收到的 500 錯誤。
地端部署應用程式未連線至 Google Cloud 網路
地端部署應用程式可能未連線至Google Cloud 網路。從其中一個地端部署連接器 Compute Engine 執行個體,對地端部署應用程式執行連線偵測 (ping),驗證連線能力。如果無法連上地端部署連接器端點,請先對網路連線和設定進行偵錯,再繼續操作。
VM 未正確安裝 Envoy
請完成下列步驟,確認 Envoy 已正確安裝:
- 從地端部署連接器登入其中一個 Compute Engine VM。地端部署連接器 VM 名稱開頭為
opc-on-prem-app-deployment-ig-${app}。 - 在 Cloud 控制台中,確認
opc-on-prem-app-deployment-gclb-urlmap負載平衡後端服務健康狀態檢查顯示為綠色。 - 如果後端服務未顯示為健康狀態良好,請透過 SSH 連線至其中一個執行個體:
gcloud compute ssh INSTANCE_NAME --zone=ZONE_NAME
執行下列指令,確認 Envoy 是否正常運作:
除了ps aux | grep envoy
grep envoy之外,應該有多個執行中的程序。輸出內容範例:
envoy 943 0.0 0.0 5488 3076 ? Ss 06:25 0:00 /bin/bash /usr/local/bin/run-proxy.sh envoy 944 0.1 1.5 178928 57352 ? Sl 06:25 1:23 /usr/local/bin/envoy --config-path /usr/local/etc/ envoy/envoy-proxy-bootstrap.json --allow-unknown-static-fields --disable-hot-restart --log-level info --drain-time- s 60確認 Envoy 記錄目錄已在
/var/log/envoy/建立。執行下列指令,確保 VM 可連至 gce-mesh bucket:
gcloud storage cp gs://gce-mesh/service-proxy-agent/releases/service-proxy-agent-0.2.tgz .
如果這個步驟中的任何驗證失敗,表示 Envoy 未正確安裝。如要瞭解詳情,請查看 /var/log/daemon.log 的啟動記錄。
如果發現 Envoy 未在先前步驟中執行,原因可能是 VPC Service Controls。VM 中的開機指令碼會從 gce-mesh bucket 下載 Envoy 映像檔。如果 VPC Service Controls 規則不允許連線,地端部署連接器部署作業將無法運作。
為確保 Envoy 正確安裝,請在主專案的 VPC Service Controls 中,允許存取 gce-mesh 儲存空間 bucket。此外,請確認虛擬私有雲設有路由規則,允許流量傳送至公開網際網路。這樣就能部署 Envoy。詳情請參閱「輸入和輸出規則」。
地端部署應用程式未連線至 Envoy
如果您可以從 VM 對地端部署應用程式執行連線偵測 (ping),但無法使用地端部署連接器,可能是 Envoy 無法連線至應用程式。
如要確認 Envoy 能連線至地端部署應用程式,請嘗試從執行 Envoy 的機器呼叫 Envoy。使用 SSH 連線至 VM opc-on-prem-app-deployment-ig-${app},然後執行下列指令。如要查看 Envoy 通訊埠編號,請依序前往「Instance Groups」(執行個體群組) >「Details」(詳細資料) >「Port Name Mapping」(通訊埠名稱對應)。
curl -x -v localhost:${envoy_port}如果無法連上端點,請檢查下列事項:
/var/log/envoy/envoy.err.log,查看是否有任何錯誤記錄。如果沒有錯誤記錄,請執行下列指令,檢查 Cloud Service Mesh 是否已啟用,且能設定 Envoy:sudo curl 0.0.0.0:15000/config_dump
- 確認是否已設定
TRAFFICDIRECTOR_INTERCEPTION_LISTENER。如果未設定TRAFFICDIRECTOR_INTERCEPTION_LISTENER,Cloud Service Mesh 就無法設定 Envoy。 - 檢查每個事件監聽器是否有任何錯誤訊息。
未設定 Envoy 和 Cloud Service Mesh 帳戶權限
如果 envoy.err.log 中顯示 GRPC 403 錯誤,或 Envoy 設定中未顯示 TRAFFICDIRECTOR_INTERCEPTION_LISTENER,表示您可能未設定正確的帳戶權限。
確認 VM 服務帳戶具備 xDS v3 的 TD 存取權限:
- 驗證權限:準備設定 Cloud Service Mesh 與 Envoy
- 驗證帳戶:啟用服務帳戶
疑難排解 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 錯誤
如果瀏覽器顯示 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 錯誤,但未重新導向至登入頁面,請在Google Cloud 負載平衡器詳細資料頁面查看憑證狀態。
請注意,佈建 Google 代管憑證最多可能需要 60 分鐘。
排解 Envoy 安裝問題
如果地端部署連接器已成功部署,且憑證已佈建,但連線仍失敗,這可能表示 Envoy 未正確安裝在 VM 上。
如要確認是否已安裝 Envoy,請透過 SSH 連線至其中一個 VM,並執行下列指令:
除了ps aux | grep envoy
grep envoy之外,應該有多個執行中的程序。 Envoy 管理員通訊埠 127.0.0.1:15000 應處於監聽狀態。netstat -tlpn
如果上述任何動作失敗,請採取下列行動來緩解問題:
- 確認部署連接器的子網路已啟用Private Google Access。
- 確認 VM 管理員 (OS Config API) 已啟用。
排解 IamMemberBinding 資源部署失敗的問題
如果地端部署連接器正在部署或更新,且發生與 IamMemberBinding 資源相關的 PERMISSION_DENIED 錯誤,可能是因為Google APIs Service Agent服務帳戶未按照為地端部署應用程式啟用 IAP 的規定,取得OWNER角色。
部署錯誤示例:
bind-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}
bind-storage-admin-account-iam-policy: {"ResourceType":"gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Policy update access denied.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/<project-ID>:setIamPolicy","httpMethod":"POST"}}
如果部署作業出現這些錯誤,請確認 Google APIs Service Agent 服務帳戶已取得 OWNER 角色,然後再試一次。