為 Azure Databricks Git 資料夾設定私有 Git 連線 (Repos)

了解及設定適用於 Databricks Git 資料夾的 Git Server Proxy,這種可設定的服務,讓您將 Git 命令從 Databricks 工作區 Git 資料夾代理傳送至 GitHub Enterprise Server、Azure DevOps Server、Bitbucket Server 和 GitLab 自我管理提供的內部部署儲存庫。

注意

在預覽期間設定 Databricks Git 伺服器 Proxy 的使用者應該升級叢集權限,才能獲得最佳效能。 請參閱移除全域 CAN_ATTACH_TO 權限

Databricks Git 伺服器 Proxy 是專為使用組態筆記本包含的 DBR 版本所設計。 不建議使用者更新 Proxy 叢集的 DBR 版本。

Databricks Git 資料夾的 Git 伺服器 Proxy 是什麼?

適用於 Git 資料夾的 Databricks Git 伺服器 Proxy 這項功能,讓您將 Git 命令從 Azure Databricks 工作區代理傳送至內部部署 Git 伺服器。

Databricks Git 資料夾 (前身為 Repos) 以資料夾形式呈現連線的 Git 存放庫。 這些資料夾內容控制版本的方式,是將資料夾與連線的 Git 存放庫同步。 根據預設,Git 資料夾只能與公用 Git 提供者同步 (例如公用 GitHub、GitLab、Azure DevOps 和其他提供者)。 不過,如果您自行託管內部部署 Git 伺服器 (例如 GitHub Enterprise Server、Bitbucket Server 或 GitLab 自我管理),必須使用 Git 伺服器 Proxy 搭配 Git 資料夾,提供 Git 伺服器的 Databricks 存取權。 Git 伺服器必須可從 Azure Databricks 資料平面 (驅動程式節點) 存取。

Databricks Git 資料夾的 Git 伺服器 Proxy 如何運作?

適用於 Databricks 的 Git 伺服器 Proxy Git 資料夾,將 Git 命令從 Databricks 控制平面代理傳送至 Databricks 工作區運算平面中執行的「Proxy 叢集」。 在這個內容,Proxy 叢集是設定為將 Git 命令的 Proxy 服務從 Databricks Git 資料夾傳送至自我裝載 Git 存放庫的叢集。 這個 Proxy 服務從 Databricks 控制平面接收 Git 命令,然後轉傳至 Git 伺服器執行個體。

下圖說明整體系統結構:

這張圖顯示,Databricks Git 資料夾的 Git 伺服器 Proxy 如何設定為從客戶的計算平面執行

目前,Git 伺服器 Proxy 不再要求所有使用者都必須有 CAN_ATTACH_TO 權限。 有現有 Proxy 叢集的管理員,現在可以將叢集 ACL 權限修改為啟用這個功能。 若要啟用該功能:

  1. 從側邊欄選取 [計算],然後按下您正在執行之 Git 伺服器 Proxy 計算項目旁的Kebab 功能表 Kebab 功能表:

    從側邊欄選取 [計算],選取 Git Proxy 伺服器計算資源右邊的 Kebab

  2. 從對話方塊移除 [所有使用者] 的 [可以附加至] 項目:

    在快顯的強制回應對話方塊中,按下 [所有使用者] [可附加至] 右邊的 X

我如何設定 Databricks Git 資料夾的 Git 伺服器 Proxy?

本節說明如何為 Databricks Git 資料夾的 Git 伺服器 Proxy 準備 Git 伺服器執行個體、建立 Proxy,以及驗證組態。

開始之前

啟用 Proxy 之前,請考慮下列必要條件和策劃工作:

  • 工作區已啟用 Databricks Git 資料夾功能。
  • Git 伺服器執行個體可從 Azure Databricks 工作區的計算平面存取,並同時啟用 HTTPS 和個人存取權杖 (PAT)。

注意

適用於 Databricks 的 Git 伺服器 Proxy 可在 VPC 支援的所有區域運作。

步驟 1:準備 Git 伺服器執行個體

重要

您必須是有存取權限的工作區管理員,才能建立運算資源並完成這項工作。

若要設定 Git 伺服器執行個體:

  1. 提供 Proxy 叢集的驅動程式節點存取 Git 伺服器。

    企業 Git 伺服器可以有允許存取的 IP 位址 allowlist

    1. 為源自 Proxy 叢集的流量建立靜態輸出 IP 位址的關聯。 使用 Azure 防火牆或輸出設備即可執行這個動作。
    2. 將上一個步驟的 IP 位址新增至 Git 伺服器的允許清單。
  2. 將 Git 伺服器執行個體設定為允許 HTTPS 傳輸。

    • 針對 GitHub Enterprise,請參閱 GitHub Enterprise 說明的我該使用哪個遠端 URL
    • 針對 Bitbucket,移至 [Bitbucket 伺服器管理] 頁面,然後選取 [伺服器設定]。 在 [HTTP (S) SCM 託管] 區段,啟用 [已啟用 HTTP (S)] 核取方塊。

步驟 2:執行啟用筆記本

啟用 Proxy:

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

  2. 匯入這個筆記本,它會選擇雲端提供者可用的最小執行個體類型來執行 Git Proxy:

    筆記本:為 Git 資料夾中的私人 Git 伺服器連線啟用 Databricks Git 資料夾的 Git 伺服器 Proxy

  3. 按下 [全部執行] 以執行筆記本,由它執行下列工作:

    • 建立名為「Databricks Git Proxy」的單一節點運算資源,該資源不會自動終止。 這個「Git Proxy 服務」會處理 Git 命令,並將命令從 Azure Databricks 工作區轉送至內部部署 Git 伺服器。
    • 啟用功能旗標,控制 Databricks Git 資料夾中的 Git 要求,是否透過計算執行個體進行 Proxy 處理。

    最佳做法是考慮建立執行 Git Proxy 運算資源的簡單工作。 工作可以是列印或記錄狀態的簡單筆記本,例如「Git Proxy 服務正在執行中」。 將工作設定為定期執行,確保 Git Proxy 服務一律可供使用者使用。

注意

執行額外的長時間執行運算資源託管 Proxy 軟體時,會產生額外的 DBU。 為了將成本降到最低,筆記本將 Proxy 設定為使用節點類型廉價的單一節點運算資源。 不過,您不妨配合需求修改計算選項。 如需計算執行個體的詳細資訊,請參閱 Databricks 價格小算盤

步驟 3:驗證 Git 伺服器組態

若要驗證 Git 伺服器組態,請嘗試透過 Proxy 叢集複製託管於私人 Git 伺服器的存放庫。 成功的複製品意味著,您已為工作區成功啟用 Git 伺服器 Proxy。

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

使用者設定 Git 認證之後,不需要為建立或同步處理存放庫採取後續步驟。 若要在 Databricks Git 資料夾設定認證並建立存放庫,請參閱 設定 Git 認證並將遠端存放庫連線至 Azure Databricks

移除全域 CAN_ATTACH_TO 權限

已經有 Proxy 叢集的管理員,現在可以將叢集 ACL 權限修改為,利用正式發行的 Git 伺服器 Proxy 行為。

如果您先前以 CAN_ATTACH_TO 權限設定 Databricks Git 伺服器 Proxy,請使用下列步驟移除這些權限:

  1. 從側邊欄選取 [計算],然後按下您正在執行之 Git 伺服器 Proxy 計算項目旁的Kebab 功能表 Kebab 功能表:

    從側邊欄選取 [計算],選取 Git Proxy 伺服器計算資源右邊的 Kebab

  2. 從對話方塊移除 [所有使用者] 的 [可以附加至] 項目:

    在快顯的強制回應對話方塊中,按下 [所有使用者] [可附加至] 右邊的 X

疑難排解

您設定 Databricks Git 資料夾的 Git 伺服器 Proxy 時發生錯誤嗎? 以下是一些常見問題,以及更有效診斷問題的方法。

常見問題的檢查清單

開始診斷錯誤之前,請確認您已完成下列步驟:

  • 確認 Proxy 叢集正在執行。
  • 確認您是工作區系統管理員。
  • 如果您尚未執行啟用筆記本,請再次執行啟用筆記本並擷取結果。 如果您無法對問題進行偵錯,Databricks 支援服務可檢閱結果。 您可以用 DBC 封存的方式匯出並傳送啟用筆記本。

變更 Git Proxy 組態

如果 Git Proxy 服務無法使用預設組態,您可以設定特定的環境變數來進行變更,進一步支援網路基礎結構。

使用下列環境變數更新 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 #> 將這個設定為 HTTP 流量網路防火牆 Proxy 的 HTTPS URL。
GIT_PROXY_CUSTOM_HTTP_PORT 連接埠號碼 (整數) 將這個設定為指派給 Git 伺服器 HTTP 連接埠的連接埠號碼。

若要設定這些環境變數,請移至 Azure Databricks 工作區中的 [計算] 索引標籤,然後選取 Git Proxy 服務的計算組態。 在 [組態] 窗格底部,展開 [進階選項],然後選取它下方的 [Spark] 索引標籤。 將一或多個環境變數新增至 [環境變數] 文字區域即可設定環境變數。

您為 Git Proxy 設定環境變數的 Databricks 計算組態頁面

檢查 Proxy 叢集上的記錄

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

記錄檔第一行應該是 Data-plane proxy server binding to ('', 8000)…,如果不是,就表示 Proxy 伺服器未正確啟動。 請嘗試重新啟動叢集,或刪除您建立的叢集,然後再次執行啟用筆記本。

如果記錄檔從這一行開始,請檢閱 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 SLL problems
    

    這通常表示,您使用的存放庫需要特殊 SSL 憑證。 查看 Proxy 叢集上 /databricks/git-proxy/git-proxy.log 檔案的內容。 如內容指出憑證驗證失敗,則必須將授權憑證新增至系統憑證鏈結。 首先,擷取根憑證 (使用瀏覽器或其他選項),並將它上傳至 DBFS。 然後,將 Git 資料夾 Git Proxy 叢集編輯為使用 GIT_PROXY_CA_CERT_PATH 環境變數,指向根憑證檔案。 如需編輯叢集環境變數的詳細資訊,請參閱環境變數

    完成該步驟之後,請重新啟動叢集。

  • 無法複製存放庫,並出現「Git 認證遺失/無效」錯誤

    首先,請檢查您已在 [使用者設定] 中設定 Git 認證

    您可能會遇到這個錯誤:

      Error: Invalid Git credentials. Go to User Settings -> Git Integration and check that your personal access token or app password has the correct repo access.
    

    如果組織使用 SAML SSO,請確定權杖已獲得授權 (從 Git 伺服器的個人存取權杖 (PAT) 管理頁面即可完成)。

常見問題集

Git 伺服器 Proxy 的安全性影響為何?

重要須知如下:

  • Proxy 不會影響 Databricks 控制平面的安全性結構。
  • 每個工作區只能有一個 Git Proxy 伺服器叢集。

是。 在目前的版本, Azure Databricks 工作區不會區分 Proxy 與非 Proxy 存放庫。

Git Proxy 功能是否可搭配其他 Git 企業伺服器提供者運作?

Databricks Git 資料夾支援 GitHub Enterprise、Bitbucket Server、Azure DevOps Server 和 GitLab 自我管理。 如果其他企業 Git 伺服器提供者符合常見的 Git 規格,應該也能正常運作。

Databricks Git 資料夾是否支援 GPG 簽署提交?

否。

Databricks Git 資料夾是否支援 Git 作業的 SSH 傳輸?

否。 僅支援 HTTPS。

是否支援在 Git 伺服器上使用非預設 HTTPS 連接埠?

目前,啟用筆記本假設 Git 伺服器使用的是預設 HTTPS 連接埠 443。 您可以設定環境變數 GIT_PROXY_CUSTOM_HTTP_PORT,以慣用的連接埠值覆寫該值。

多個工作區是否可以共用一個 Proxy,還是每個工作區都需要一個 Proxy 叢集?

每個 Azure Databricks 工作區都需要一個 Proxy 叢集。

Proxy 是否可搭配舊版單一筆記本版本設定使用?

不行,Proxy 不可搭配舊版單一筆記本版本設定使用。 使用者必須移轉至 Databricks Git 資料夾版本設定。

Databricks 可以隱藏以 Proxy 處理的 Git 伺服器 URL 嗎? 使用者是否可以輸入原始的 Git 伺服器 URL,而非輸入 Proxy 處理的 URL 嗎?

兩個問題的答案都是可以。 使用者不需要調整 Proxy 的行為。 Databricks Git 資料夾的所有 Git 流量使用目前的 Proxy 實作,都會透過 Proxy 路由傳送。 使用者輸入一般 Git 存放庫 URL,例如 https://git.company.com/org/repo-name.git

使用者使用 Git URL 的頻率為何?

一般而言,使用者建立新的存放庫或簽出尚未簽出的現有存放庫時,使用者只會新增 Git URL。

這個功能會以透明方式將驗證資料代理傳送至 Git 伺服器嗎?

是,Proxy 使用使用者帳戶的 Git 伺服器權杖驗證 Git 伺服器。

是否有 Databricks 存取 Git 伺服器程式碼?

Azure Databricks Proxy 服務使用使用者提供的認證,存取 Git 伺服器的 Git 存放庫,並將存放庫的任何程式碼檔案與存放庫同步。 存取受限於使用者提供之個人存取權杖 (PAT) 指定的權限。