【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

路邊兩盞燈 發表於 2022-06-20
Git

問題描述

因為中國區的App Service對外(公網訪問)需要進行ICP備案,所以很多情況下,Web應用部署到App Service後,都是通過Application Gateway(應用程式閘道器)來對外網暴露,提供公網訪問。

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

上圖列出了使用Application Gateway後,外網訪問App Service的示意圖。 如果直接訪問,則會出現403的錯誤頁面。

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

那麼,在這樣的情況下,我們如何來實現通過公網暴露Git的URI,實現外網成功部署App Service的程式碼呢?

 

問題解答

當然,可以通過Application Gateway 來暴露 App Service預設的GIT Repository 地址 :https://<appservicename>.scm.chinacloudsites.cn:443/<appservicename>.git

如何配置Application Gateway 與App Service的服務,參考官方文件:使用應用程式閘道器配置應用服務(https://docs.azure.cn/zh-cn/application-gateway/configure-web-app?tabs=customdomain%2Cazure-portal)

 

在配置的過程中,必須注意以下三點:

第一點:為Application Gateway  配置自定義域名 (本次實驗中只是短暫使用,所以使用公網IP地址進行解析

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

 

第二點:App Gateway 的後端池(Backend Pool) 不能直接選擇App Service,需要選擇 IP Address or FQDN,並輸入SCM的域名。 如: <appservicename>.scm.chinacloudsites.cn

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

 

第三點:為App Gateway配置自定義健康探測(Health Probes),  Host 為SCM域名(<appservicename>.scm.chinacloudsites.cn), Path 可以指向 /<appservicename>.git  或者是SCM的跟目錄 / 。

由於SCM站點的訪問時需要認證的,App Gateway發出的探測結果都是401 - Unauthorized 。所以就必須接受401是一個正確的探測結果才行。

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

 

以上三點配置完成後,可以回到Application Gateway的Backend Health頁面,檢視後端池的健康狀態,只有當後端池狀態為Health時,才能成功訪問到後端,否則這會得到502頁面。

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

如果第三步中沒有配置 401為一個匹配的返回狀態,則 Backend Health的結果顯示為:

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

Received invalid status code: 401 in the backend server’s HTTP response. As per the health probe configuration, 200-399 is the acceptable status code. Either modify probe configuration or resolve backend issues.

 

當Application Gateway設定完成後,開始Local Git的部署驗證:

首先,複製出App Service Local Git Repository 的地址,把 HTTPS 改為 HTTP, 並用 Application Gateway的IP地址代替域名

然後,使用 git clone http://<ip address>/<appservicename>.git,獲取原始庫中程式碼

最後,使用 git commit / git push / git remote -v 

Clone/Push截圖:

【Azure 應用服務】App Service 開啟了私有終結點(Private Endpoint)模式後,如何來實現公網Git部署呢?

 

 

參考資料

使用應用程式閘道器配置應用服務https://docs.azure.cn/zh-cn/application-gateway/configure-web-app?tabs=customdomain%2Cazure-portal

[END]