共用方式為


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

了解及配置 Databricks Git 資料夾的 Git 伺服器 Proxy。這是一項可配置的服務,使您能夠將 Git 命令從 Databricks 工作區的 Git 資料夾中透過 Proxy 代理到由 GitHub Enterprise Server、Azure DevOps Server、Bitbucket Server 及自我管理的 GitLab 提供的內部部署 Git 存放庫。

注意

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

Databricks Git 伺服器代理專為與配置筆記本中所包含的 Databricks Runtime 版本協同運作而設計。 不建議使用者更新 Proxy 叢集的 Databricks Runtime 版本。

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 資料平面 (驅動程式節點) 存取。

如果您的公司網路僅限私人(VPN)存取(無公用存取),您必須執行 Git 伺服器 Proxy 來存取位於其外部的 Git 存放庫,並將 Git 資料夾新增至您的工作區。

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

Databricks Git 資料夾的 Git 伺服器代理會將 Git 指令從 Databricks 控制平面轉發到運行於 Databricks 工作區計算平面的 代理叢集。 在此情境中,代理叢集是一個設定用於執行 Proxy 服務的叢集,其功能是將 Git 命令從 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 存放庫

使用者設定 Git 認證之後,不需要為建立或同步處理存放庫採取後續步驟。 若要以程式設計方式設定認證並存取 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 叢集正在使用此 Git Proxy 伺服器偵錯筆記本執行。 (這是與 Git Proxy 伺服器啟用筆記本不同的筆記本,也由 Databricks 提供。
  • 確認您是工作區系統管理員。
  • 如果您尚未完成,請執行偵錯筆記本的其餘部分並擷取結果。 如果您無法使用偵錯工具解決問題,或是在偵錯筆記本中未看到任何失敗回報,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 repository access.
    

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

常見問題集

瞭解 Git Proxy 伺服器是否正在執行的最簡單方式為何?

匯入 Databricks 所提供的 Git Proxy 偵錯筆記本。 將它下載到本機計算機,然後將它匯入 Azure Databricks 工作區。

如果發生任何錯誤或 Git Proxy 服務的問題,執行筆記本將會回報。

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 存放庫,並將存放庫中的任何程式碼檔案與 Git 資料夾同步處理。 存取受限於使用者提供之個人存取權杖 (PAT) 指定的權限。