備註
Azure Databricks 無伺服器私人 Git 目前處於 公開預覽階段。 當無伺服器運算資源連接外部資源時,計算與網路成本會產生。 請參閱 「了解 Databricks 無伺服器網路成本 」以了解帳單細節。
Azure Databricks 無伺服器私人 Git 可讓您使用無伺服器計算和 Azure Private Link 將 Databricks 工作區連線到私人 Git 伺服器。 如果 Git 伺服器無法從網路存取,則是私人伺服器。
下圖說明整體系統架構:
為什麼要使用無伺服器私有 Git?
與 Git 代理相比,Serverless Private Git 具有以下優勢:
無伺服器私人 Git 只有在收到 Git 請求時才會取得無伺服器運算,而且在未使用時可能會處於非作用中狀態。 相較之下,Git Proxy 要求 Proxy 叢集在使用者提交 Git 請求時處於活動狀態。
無伺服器私人 Git 會使用 Azure 私人連結來安全地連線到私人 Git 執行個體。
需求
- 必須啟用工作區以支援無伺服器架構。
- 私人 Git 伺服器必須與標準負載平衡器位於相同的 Azure VNet 中。
- 私人 Git 伺服器必須具有已簽署的憑證/有效的 HTTPS FQDN。
- VNet 會針對用於 Private Link 服務的標準負載平衡器 (SLB) 進行設定。
設定無伺服器私有 Git
- 請遵循步驟, 為您的私人 Git 伺服器設定 Private Link。 這可讓您建立從無伺服器到 SLB 後方網路中後端的 Azure Private Link 連線。
- 建立網路連線設定(NCC),以設定出口至標準負載平衡器。 此步驟的考量事項:
- 只能為私人 Git 的工作區設定一個 NCC。 如果工作區需要連線到多個私人 Git 伺服器,請確認它們可以使用相同的 NCC 連線。
- 限制,例如區域中支援的 NCC 數目,以及可連結至 NCC 的工作區數目,記載在 需求中。
- 使用 具有帳戶層級存取權的服務主體來取得帳戶 API 憑證。
curl
--location 'https://accounts.azuredatabricks.net/oidc/accounts/{accountid}/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=SP_CLIENT_ID_HERE' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' \
--data-urlencode 'client_secret=SP_CLIENT_SECRET_HERE'
Response
{"access_token":"...","scope":"all-apis","token_type":"Bearer","expires_in":3600}
- 取得帳戶 API 代幣的替代方式:
- 驗證的存取權杖:要呼叫 Databricks 帳號 REST API,必須執行驗證並取得存取權杖。
- 使用 Microsoft Entra ID 存取權杖。
BEARER_TOKEN = `az account get-access-token --resource
2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query "accessToken" -o tsv
- 新增一個私有端點規則,用 API 來定義 DNS 邏輯。
在此範例中,指定下列項目:
- 帳戶識別碼
- NCC識別碼
- 帳戶 OAuth 代幣
- Private Link 服務資源識別碼
- domain_name清單中 Git 伺服器的 FQDN
curl --location 'https://accounts.azuredatabricks.net/api/2.0/accounts/{accountid}/network-connectivity-configs/{nccid}/private-endpoint-rules' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer BEARER_TOKEN' \
--data '{
"resource_id": "/subscriptions/3f262328b/resourceGroups/rg/providers/Microsoft.Network/privateLinkServices/example",
"domain_names": [
"git-server.contoso.com"
]
}
'
回應
{"rule_id":"843ba2e5-bbbb-bbbb-bbbb-7f0d55555215","network_connectivity_config_id":"5a9bdc5f-c43d-41cd-9a6d-1b653e20c7d2","resource_id":"/subscriptions/3f262328b/resourceGroups/rg/providers/Microsoft.Network/privateLinkServices/example","endpoint_name":"databricks-5a9bdc5f-c43d-41cd-9a6d-1b653e20c7d2-pe-99cbbac3","connection_state":"PENDING","creation_time":1740000647980,"updated_time":1740000647949,"domain_names":["git-server.contoso.com"]}
- 設定 NCC 私人端點規則之後,請稍等幾分鐘。 NCC 中出現的私有端點規則未指定子資源,且狀態為待處理。
- 步驟 1 中設定的 Private Link 服務也有一個待批准的私人端點連線。 核准此連線。
- 返回帳戶控制台內的NCC,並檢查它是否已建立。
- 移至工作區並嘗試 Git 作業。 您應該會看到無伺服器私人 Git 的 UI 指示器。 這個頁面可能會載入幾秒鐘,因為 Git 代理的無伺服器運算正在啟動中。
設定之後,無伺服器私人 Git 會優先於您已佈建的其他形式的私人 Git 連線,例如傳統 Git Proxy。 如果您有執行傳統 Git Proxy 叢集,請在設定無伺服器私人 Git 之後終止它。
其他組態
使用 config.json 檔案自訂您的 Git 作業。
- 建立位於
/Workspace/.git_settings/config.json的配置檔案,並遵循下列規格。 - 授與所有 Git 使用者組態檔及其所參考的任何 CA 憑證檔案的檢視權限。
- 與 Git 互動以驗證與 Git 遠端的連線,例如複製伺服器上遠端儲存庫的 Git 資料夾。
- 對組態檔的變更最多可能需要 1 分鐘才能套用。
頂層設定檔結構
{
"default": { ... }, // Optional global settings
"remotes": [ ... ] // Optional list of per-remote settings
}
default 部分(選用)
全域預設設定會套用至所有 Git 操作,除非被特定遠端覆寫。
| 領域 | 類型 | 為必填項目 | 預設值 | Description |
|---|---|---|---|---|
| ssl驗證 | 布爾值 | 否 | true | 是否要驗證 SSL 憑證。 |
| caCert路徑 | 字串 | 否 | “”(空) | 自訂 CA 憑證所在的工作區路徑。 |
| HTTP代理 | 字串 | 否 | “”(空) | HTTP 代理伺服器用來路由 Git 流量。 |
| 客制化 HTTP 埠 | 整數 | 否 | 未指定 | Git 伺服器的自訂 HTTP 連接埠。 |
remotes 部分(選用)
定義個別遠端 Git 伺服器設定的物件清單。 這些設定會針對每個遙控器覆蓋該 default 區塊。
| 領域 | 類型 | 為必填項目 | 預設值 | Description |
|---|---|---|---|---|
| URL前綴 | 字串 | Yes | — | 用於匹配 Git 遠端 URL 的前綴。 |
| ssl驗證 | 布爾值 | 否 | true | 是否要驗證 SSL 憑證。 |
| caCert路徑 | 字串 | 否 | “”(空) | 此遠端的自訂 CA 憑證路徑的工作區路徑。 |
| HTTP代理 | 字串 | 否 | “”(空) | HTTP 代理伺服器用來路由 Git 流量。 |
| 客制化 HTTP 埠 | 整數 | 否 | 未指定 | Git 伺服器的自訂 HTTP 連接埠。 |
範例配置,無遠端特定配置
{
"default": {
"sslVerify": false
}
}
完整配置範例
{
"default": {
"sslVerify": true,
"caCertPath": "/Workspace/my_ca_cert.pem",
"httpProxy": "https://git-proxy-server.company.com",
"customHttpPort": "8080"
},
"remotes": [
{
"urlPrefix": "https://my-private-git.company.com/",
"caCertPath": "/Workspace/my_ca_cert_2.pem"
},
{
"urlPrefix": "https://another-git-server.com/project.git",
"sslVerify": false
}
]
}
註釋
- 該
default部分必須存在,即使只是部分。 - 該
remotes列表是可選的,可以完全省略。 - 每一個遠端項目至少必須包含
urlPrefix。 - 如果您未指定欄位的值,則會使用預設值。
- 會忽略未知欄位。
局限性
- 無伺服器 Proxy 日誌目前無法使用。
- 僅適用於 Azure 無伺服器區域。