了解及配置 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 伺服器代理?
適用於 Git 資料夾的 Databricks Git 伺服器 Proxy 是一項功能,可讓您將 Git 命令從 Azure Databricks 工作區 Proxy 至內部部署 Git 伺服器。
Databricks Git 資料夾(先前稱為 Repos)將連線的 Git 存放庫表示為資料夾。 這些資料夾的內容透過與連接的 Git 資料庫同步來進行版本控制。 根據預設,Git 資料夾只能與公用 Git 提供者同步處理(例如公用 GitHub、GitLab、Azure DevOps 和其他提供者)。 如果您運行自己的內部部署 Git 伺服器(例如 GitHub Enterprise Server、Bitbucket Server 或自行管理的 GitLab),您必須使用 Git 伺服器代理程式搭配 Git 資料夾,才能提供 Databricks 存取權限到您的 Git 伺服器。 您的 Git 伺服器必須可從 Azure Databricks 數據平面存取(驅動程序節點)。
如果您的公司網路僅限私人(VPN)存取(無公用存取),您必須執行 Git 伺服器 Proxy 來存取位於其外部的 Git 存放庫,並將 Git 資料夾新增至您的工作區。
Databricks Git 資料夾的 Git Server Proxy 如何運作?
在 Databricks 工作區的計算平面中執行的 代理叢集 中,Databricks Git 資料夾的 Git 伺服器代理會將 Git 命令從 Databricks 控制平面代理至此。 在此情境中,代理叢集是一個設定用於執行 Proxy 服務的叢集,其功能是將 Git 命令從 Databricks 的 Git 資料夾傳送至您自我裝載的 Git 存放庫。 此 Proxy 服務會從 Databricks 控制平面接收 Git 命令,並將其轉送至您的 Git 伺服器實例。
下圖說明整體系統架構:
這很重要
Databricks 提供一個設定筆記本,您可以執行來將 Git 伺服器實例配置為代理 Databricks Git 資料夾命令。 取得 GitHub 上的啟用手冊。
目前,Git 伺服器 Proxy 不再需要 CAN_ATTACH_TO
所有用戶的許可權。 具有現有 Proxy 叢集的系統管理員現在可以修改叢集 ACL 許可權,以啟用此功能。 若要啟用該功能:
從側邊欄選取 計算,然後單擊
正在執行的 Git Server Proxy 計算項目旁的 Kebab 菜單:
從對話中的可附加至項目中移除所有使用者:
如何設定 Databricks Git 資料夾的 Git Server Proxy?
本節說明如何為 Databricks Git 資料夾的 Git 伺服器 Proxy 準備 Git 伺服器實例、建立 Proxy,以及驗證您的設定。
開始之前
啟用 Proxy 之前,請確定:
- 您的工作區已啟用 Databricks Git 資料夾功能。
- 您的 Git 伺服器實例可以從您的 Azure Databricks 工作區的計算平面 VPC 存取,並已啟用 HTTPS 和個人存取令牌(PATs)。
備註
適用於 Databricks 的 Git 代理伺服器可在您的 VPC 支援的所有區域中運作。
步驟 1:準備 Git 伺服器實例
這很重要
您必須是具有訪問許可權的工作區系統管理員,才能建立計算資源並完成這項工作。
若要設定 Git 伺服器實例:
請允許 Proxy 叢集驅動程式節點存取您的 Git 伺服器。
您的企業 Git 伺服器可以擁有一組 IP 位址,允許從該組位址進行存取。
- 為源自 Proxy 叢集的流量指派靜態輸出 IP 位址。 您可以使用 Azure 防火牆或輸出裝置來執行此動作。
- 將上一個步驟中的IP位址新增至 Git 伺服器的允許清單。
- 將您的 Git 伺服器實例設定為允許 HTTPS 傳輸。
- 針對 GitHub Enterprise,請參閱 GitHub Enterprise 說明中的我應該使用哪個遠端 URL。
- 針對 Bitbucket,移至 [Bitbucket 伺服器管理] 頁面,然後選取 [伺服器設定]。 在 [HTTP(S) SCM 代管] 區段中,啟用 HTTP(S) 啟用 複選框。
步驟 2:執行啟動筆記本程式碼
若要啟用 Proxy:
以具有建立叢集訪問許可權的工作區管理員身分登入 Azure Databricks 工作區。
匯入此筆記本,其會選擇雲端提供者中可用的最小實例類型來執行 Git Proxy:
Notebook:啟用 Databricks Git 資料夾的 Git 伺服器代理,以便連接私人 Git 伺服器的 Git 資料夾。
按一下 [全部執行] 以執行筆記本,這會執行以下工作:
- 建立名為 「Databricks Git Proxy」 的單一節點計算資源 ,而不會自動終止。 這是 Git Proxy 服務,將處理 Git 命令,並將命令從 Azure Databricks 工作區轉送至內部部署 Git 伺服器。
- 啟用功能旗標,用來控制 Databricks Git 資料夾中的 Git 請求是否透過計算實例代理。
最佳做法是考慮建立簡單的作業來執行 Git Proxy 計算資源。 這可以是列印或記錄狀態的簡單筆記本,例如「Git Proxy 服務正在執行中」。 將作業設定為定期執行,以確保 Git Proxy 服務一律可供使用者使用。
備註
執行額外的長時間執行的計算資源來裝載 Proxy 軟體會產生額外的 DBU。 為了將成本降到最低,Notebook 會設定 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,請使用下列步驟來移除這些許可權:
從側邊欄選取 計算,然後按一下正在執行的 Git 伺服器 Proxy 的計算項目旁的
從對話中的可附加至項目中移除所有使用者:
故障排除
配置 Databricks Git 資料夾的 Git 伺服器代理時是否發生錯誤? 以下是一些常見問題,以及更有效率地診斷它們的方法。
常見問題的檢查清單
開始診斷錯誤之前,請確認您已完成下列步驟:
- 確認您的 Proxy 叢集正在使用此 Git 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 #> |
將此設定為網路防火牆 Proxy 的 HTTPS URL,以用於 HTTP 流量。 |
GIT_PROXY_CUSTOM_HTTP_PORT |
連接埠號碼 (整數) | 將此設定為指派給 Git 伺服器 HTTP 埠的埠號碼。 |
若要設定這些環境變數,請移至 Azure Databricks 工作區中的 [計算] 索引標籤,然後選取 Git Proxy 服務的計算組態。 在 [ 組態 ] 窗格底部,展開 [ 進階 ],然後選取其下方的 [Spark ] 索引卷標。 將環境變數新增至環境變數文字區域,以設定其中一或多個 環境變數 。
檢查 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憑證的存放庫。 檢查代理伺服器叢集上的
/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 伺服器是否正在執行的最簡單方式為何?
匯入並執行 Git Proxy 偵錯筆記本。 筆記本執行的結果會顯示 Git Proxy 服務是否有問題。
Git 伺服器 Proxy 的安全性影響為何?
- 代理不會影響您的 Databricks 控制平面的安全架構。
- 每個工作區只能有一個 Git Proxy 伺服器叢集。
所有 Databricks Git 資料夾相關的 Git 流量是否都透過 Proxy 叢集路由傳送,即使是公用 Git 存放庫?
是的。 您的 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 叢集。
Databricks 可以隱藏被代理的 Git 伺服器 URL 嗎? 用戶可以輸入原始的 Git 伺服器 URL,而不是 Proxy URL 嗎?
這兩個問題的答案都是肯定的。 使用者不需要調整其 Proxy 的行為。 使用目前的 Proxy 實作,Databricks Git 資料夾的所有 Git 流量都會透過 Proxy 路由傳送。 使用者輸入一般 Git 存放庫 URL,例如 https://git.company.com/org/repo-name.git
。
此功能會以透明方式將驗證數據 Proxy 至 Git 伺服器嗎?
是,Proxy 會使用用戶帳戶的 Git 伺服器令牌向 Git 伺服器進行驗證。
是否有 Databricks 存取 Git 伺服器程式碼?
Azure Databricks Proxy 服務會使用使用者提供的認證存取 Git 伺服器上的 Git 存放庫,並將存放庫中的任何程式碼檔案與 Git 資料夾同步處理。 存取受限於使用者提供的個人存取令牌 (PAT) 中指定的許可權。