共用方式為


設定 Azure Databricks Git 資料夾的私人 Git 連接。

如果你架設私人 Git 伺服器(例如 GitHub Enterprise Server、Bitbucket Server 或 GitLab 自管理),或你的 Git 伺服器位於防火牆後方,你可以使用 Git 伺服器代理將 Databricks Git 資料夾連接到你的私人倉庫。 代理伺服器會將 Git 指令從你的 Azure Databricks 工作區經由運算資源路由到你的私人 Git 伺服器。

關於 Git 伺服器代理

Databricks 的 Git 伺服器代理伺服器讓你能將 Git 指令從 Azure Databricks 工作區代理到無法在網路上存取的私人 Git 伺服器。

Databricks Git 資料夾會將你連接的 Git 倉庫呈現為資料夾。 這些資料夾的內容會透過同步到連接的 Git 儲存庫來進行版本控制。 預設情況下,Git 資料夾只能與網路上可存取的儲存庫同步。 如果你架設私人 Git 伺服器,或你的 Git 伺服器被防火牆保護,你必須使用 Git 伺服器代理和 Git 資料夾。 你的 Git 伺服器必須能從你的 Azure Databricks 運算平面存取。

Git 伺服器代理的運作方式

Databricks Git 資料夾的 Git 伺服器代理會將 Git 命令從 Databricks 控制平面代理到您工作區域的計算平面中運行的 代理叢集。 代理叢集會設定為執行代理服務,接收來自 Databricks 控制平面的 Git 指令,並將其轉發給你的 Git 伺服器。 代理不會影響 Databricks 控制平面的安全架構。

以下說明整體系統架構:

此圖顯示如何設定 Git Server Proxy,使其能從客戶的計算平面執行 Databricks Git 資料夾

這很重要

Databricks 提供一個 啟用筆記本 ,讓你的 Git 伺服器實例能代理 Databricks Git 資料夾的指令。 取得 GitHub 上的啟用手冊。 Databricks Git 伺服器代理程式設計用於與設定筆記本中包含的 Databricks 執行時版本相容。 不要更新代理叢集的 Databricks 執行時版本。

設定 Git Server 代理

要啟用 Databricks Git 資料夾的私人 Git 連線,請先準備你的 Git 伺服器實例,執行啟用筆記本建立代理,並驗證你的設定。

要設定 Git 伺服器代理:

  1. 用靜態 IP 位址和 HTTPS 傳輸來準備你的 Git 伺服器實例。
  2. 執行支持功能筆記本以建立代理伺服器群集。
  3. 透過複製一個儲存庫來驗證你的設定。
  4. 為使用者設定 Git 憑證。

先決條件

啟用代理前,請先確認以下事項:

  • 你的 Git 伺服器實例可從 Azure Databricks 工作空間的計算平面 Azure 虛擬網路(VNet)存取,且同時啟用了 HTTPS 和個人存取權杖(PAT)。

備註

Databricks 的 Git 伺服器代理在你 VNet 支援的所有區域都能運作。

步驟 1:準備 Git 伺服器實例

這很重要

若要建立計算資源並完成此工作,您必須是具有存取權限的工作區系統管理員。

設定你的 Git 伺服器接受來自代理叢集的連線並啟用 HTTPS 傳輸。

你的企業 Git 伺服器通常會有一個允許存取的 IP 位址清單。 要讓代理叢集驅動節點存取你的 Git 伺服器,請為來自代理叢集的流量綁定一個靜態的外站 IP 位址,並將其加入 Git 伺服器的允許清單。

  1. 透過 Azure 防火牆或出口設備,為來自代理叢集的流量綁定一個靜態的外站 IP 位址。
  2. 將上一個步驟中的IP位址新增至 Git 伺服器的允許清單。

接著,設定你的 Git 伺服器實例允許 HTTPS 傳輸:

  • GitHub Enterprise:請參考 GitHub Enterprise 說明中 應該使用哪個遠端 URL
  • Bitbucket 伺服器:在 Bitbucket 伺服器管理頁面,點選伺服器設定並選擇啟用 HTTP(S)。

步驟 2:執行啟動筆記本程式碼

若要啟用 Proxy:

  1. 以具有建立叢集訪問許可權的工作區管理員身分登入 Azure Databricks 工作區。

  2. 匯入這個筆記本,它會選擇你雲端供應商提供的最小實例類型來執行 Git 代理:

    Notebook:啟用 Databricks Git 資料夾的 Git 伺服器代理,以便連接私人 Git 伺服器的 Git 資料夾

  3. 按一下 [全部執行] 以執行筆記本,這會執行以下工作:

    • 建立一個名為「Databricks Git Proxy」的 單一節點運算資源 ,且不會自動終止。 這個代理服務會處理並轉發 Azure Databricks 工作區的 Git 指令到你的私人 Git 伺服器。
    • 啟用一個功能標誌,控制 Databricks Git 資料夾中的 Git 請求是否透過計算實例代理。

    作為最佳實務,建立一個作業,以定期排程執行 Git 代理計算資源。 這樣可以讓 Git 代理服務對你的使用者保持可用性。

備註

額外運行長時間運算資源會產生額外的 Databricks 單元(DBU)。 為了將成本降到最低,Notebook 會設定 Proxy 以使用具有廉價節點類型的單一節點計算資源。 調整運算選項以符合你的需求。 有關價格資訊,請參閱 Databricks 價格計算機

步驟 3:驗證您的 Git 伺服器設定

要驗證你的 Git 伺服器設定,可以透過代理叢集複製一個存放在私人 Git 伺服器上的倉庫。 成功的複製可以確認 Git 伺服器代理在你的工作空間上正常運作。

步驟 4:建立已啟用 Proxy 的 Git 存放庫

使用者設定 Git 憑證後,無需額外步驟來建立或同步儲存庫。 若要設定憑證並以程式方式存取資料庫,請參見 「Connect your Git provider to Databricks」。

移除全域 CAN ATTACH TO 權限

Git 伺服器代理不需要 CAN ATTACH TO 權限給任何使用者。 為防止使用者在代理叢集上執行任意工作負載,請限制代理伺服器的叢集存取控制清單(ACL)權限:

  1. 從側邊欄點選 Compute ,然後點選 Kebab 選單圖示。 在你正在執行的 Git Server 代理伺服器計算項目旁的 Kebab 選單。

  2. 點擊 編輯權限

  3. 在對話框中,移除「可附加至所有使用者」條目。

故障排除

本節涵蓋常見問題及診斷方法。

常見問題的檢查清單

在開始診斷錯誤之前,請確認以下事項:

執行偵錯筆記本的其餘部分,並擷取結果。 如果你無法解決問題或沒有看到任何失敗回報,Databricks 客服可以審查結果。 如果需要,請匯出並以 DBC 歸檔形式傳送除錯筆記本。

變更 Git Proxy 設定

如果你的 Git 代理服務無法支援預設設定,請設定環境變數以支援你的網路基礎設施。

使用下列環境變數來更新 Git Proxy 服務的組態:

環境變數 格式 說明
GIT_PROXY_ENABLE_SSL_VERIFICATION true/false 如果您使用私人 Git 伺服器的自我簽署憑證,請將此 false 設定為 。
GIT_PROXY_CA_CERT_PATH 檔案路徑 (字串) 將此設定為用於 SSL 驗證的 CA 憑證檔案路徑。 範例:/FileStore/myCA.pem
GIT_PROXY_HTTP_PROXY https://<hostname>:<port #> 將此設定為網路防火牆 Proxy 的 HTTPS URL,以用於 HTTP 流量。
GIT_PROXY_CUSTOM_HTTP_PORT 連接埠號碼 (整數) 將此設定為指派給 Git 伺服器 HTTP 埠的埠號碼。

要設定這些環境變數:

  1. 在 Azure Databricks 工作區內,前往 Compute 標籤。
  2. 選擇你的 Git 代理服務的運算配置。
  3. 設定 面板底部,展開 「進階 」並選擇 Spark 標籤。
  4. Environment variables 欄位新增環境變數。

檢查 Proxy 叢集上的記錄

Proxy 叢集上的 檔案 /databricks/git-proxy/git-proxy.log 包含可用於偵錯用途的記錄。

日誌檔應該以Data-plane proxy server binding to ('', 8000)…開頭。 如果不成功,代表代理伺服器沒有正常啟動。 重新啟動叢集,或刪除叢集後重新執行啟用筆記本。

如果日誌檔案以這行開頭,請檢視隨後的日誌語句,以了解在 Databricks Git 資料夾中由 Git 操作所引發的每個 Git 請求。

例如:

  do_GET: https://server-address/path/to/repo/info/refs?service=git-upload-pack 10.139.0.25 - - [09/Jun/2021 06:53:02] /
  "GET /server-address/path/to/repo/info/refs?service=git-upload-pack HTTP/1.1" 200`

寫入此檔案的錯誤記錄對於協助您或 Databricks 支援偵錯問題很有用。

SSL 憑證錯誤

您可能會看到下列錯誤:

  https://git.consult-prodigy.com/Prodigy/databricks_test: Secure connection to https://git.consult-prodigy.com/Prodigy/databricks_test could not be established because of SSL problems

這通常代表你使用的是需要特殊 SSL 憑證的儲存庫。 檢查代理叢集中的 /databricks/git-proxy/git-proxy.log 檔案。 若憑證驗證失敗,則將該憑證授權單位加入系統憑證鏈:

  1. 瀏覽器 或其他方法擷取根憑證,然後上傳到 Databricks 檔案系統。
  2. 編輯 Git 資料夾的 Git 代理 叢集,設定 GIT_PROXY_CA_CERT_PATH 環境變數指向根憑證檔案。 請參閱 環境變數。

完成這些步驟後,重新啟動叢集。

常見問題

以下是關於 Git 伺服器代理設定與使用的常見問題。

我要怎麼檢查 Git 代理是否正在執行?

匯入並執行 Git Proxy 偵錯筆記本。 結果顯示 Git 代理服務是否有問題。

工作區可以共用代理叢集嗎?

每個 Azure Databricks 工作區都需要自己的代理叢集。 你不能在多個工作區共用代理叢集,每個工作區只能有一個 Git 代理伺服器叢集。

我可以只透過代理伺服器路由部分 Git 流量嗎?

所有 Databricks Git 資料夾相關的流量都會經過代理叢集,即使是公開的 Git 倉庫也是如此。 你的 Azure Databricks 工作空間不會區分代理和非代理倉庫。

哪些 Git 供應商被支援?

Databricks Git 資料夾支援 GitHub Enterprise、Bitbucket Server、Azure DevOps Server 和 GitLab 自我管理。 其他企業級 Git 伺服器供應商若符合共同 Git 規範,也應該能正常運作。

GNU Privacy Guard(GPG)承諾簽署是否被支援?

否。

支援 SSH 傳輸嗎?

否。 僅支援 HTTPS。

我可以使用非預設的 HTTPS 埠嗎?

啟用筆記本假設你的 Git 伺服器使用預設的 HTTPS 443 埠。 設定環境變數 GIT_PROXY_CUSTOM_HTTP_PORT 使用不同的埠。

使用者需要更改代理的 Git 網址嗎?

否。 使用者輸入一般的 Git 儲存庫 URL,例如 https://git.company.com/org/repo-name.git。 Databricks Git 資料夾的所有 Git 流量都會透明地透過代理伺服器路由。

代理伺服器的認證是如何運作的?

是的,代理伺服器會使用使用者的 Git 憑證來驗證 Git 伺服器。 存取權限受該憑證中指定的權限限制。