共用方式為


開始使用 Azure Databricks Serverless Private Git

備註

Azure Databricks 無伺服器私人 Git 目前處於 公開預覽階段。 當無伺服器運算資源連接外部資源時,計算與網路成本會產生。 請參閱 「了解 Databricks 無伺服器網路成本 」以了解帳單細節。

Azure Databricks 無伺服器私人 Git 可讓您使用無伺服器計算和 Azure Private Link 將 Databricks 工作區連線到私人 Git 伺服器。 如果 Git 伺服器無法從網路存取,則是私人伺服器。

下圖說明整體系統架構:

Databricks 無伺服器私人存放庫架構

為什麼要使用無伺服器私有 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

  1. 請遵循步驟, 為您的私人 Git 伺服器設定 Private Link。 這可讓您建立從無伺服器到 SLB 後方網路中後端的 Azure Private Link 連線。
  2. 建立網路連線設定(NCC),以設定出口至標準負載平衡器。 此步驟的考量事項:
    • 只能為私人 Git 的工作區設定一個 NCC。 如果工作區需要連線到多個私人 Git 伺服器,請確認它們可以使用相同的 NCC 連線。
    • 限制,例如區域中支援的 NCC 數目,以及可連結至 NCC 的工作區數目,記載在 需求中。

Azure 網路連線設定

  1. 使用 具有帳戶層級存取權的服務主體來取得帳戶 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
  1. 新增一個私有端點規則,用 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"]}
  1. 設定 NCC 私人端點規則之後,請稍等幾分鐘。 NCC 中出現的私有端點規則未指定子資源,且狀態為待處理。
  2. 步驟 1 中設定的 Private Link 服務也有一個待批准的私人端點連線。 核准此連線。

私人端點連線

  1. 返回帳戶控制台內的NCC,並檢查它是否已建立。
  2. 移至工作區並嘗試 Git 作業。 您應該會看到無伺服器私人 Git 的 UI 指示器。 這個頁面可能會載入幾秒鐘,因為 Git 代理的無伺服器運算正在啟動中。

設定之後,無伺服器私人 Git 會優先於您已佈建的其他形式的私人 Git 連線,例如傳統 Git Proxy。 如果您有執行傳統 Git Proxy 叢集,請在設定無伺服器私人 Git 之後終止它。

其他組態

使用 config.json 檔案自訂您的 Git 作業。

  1. 建立位於 /Workspace/.git_settings/config.json 的配置檔案,並遵循下列規格。
  2. 授與所有 Git 使用者組態檔及其所參考的任何 CA 憑證檔案的檢視權限。
  3. 與 Git 互動以驗證與 Git 遠端的連線,例如複製伺服器上遠端儲存庫的 Git 資料夾。
  4. 對組態檔的變更最多可能需要 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 無伺服器區域。