Databricks Git フォルダー (Repos) のプライベート Git 接続を設定する
Git フォルダーの Git サーバー プロキシについて学習し、構成することで、Databricks Git フォルダーから GitHub Enterprise Server、Bitbucket Server、GitLab の自己管理によって提供されるオンプレミスの Git リポジトリに Git コマンドをプロキシできます。
プレビュー期間中に Databricks Git サーバー プロキシが構成されているユーザーは、最適なパフォーマンスを得るためにクラスターのアクセス許可をアップグレードする必要があります。 「グローバルCAN_ATTACH_TO権限の削除」を参照してください。
Databricks Git サーバー プロキシは、構成ノートブックに含まれる Databricks Runtime のバージョンで動作するように特別に設計されています。 ユーザーは、プロキシ クラスターの Databricks Runtime バージョンを更新することはお勧めしません。
Databricks GitフォルダのGitサーバープロキシとは何ですか?
Git フォルダーの Databricks Git サーバー プロキシは、Databricks ワークスペースからオンプレミスの Git サーバーに Git コマンドをプロキシできる機能です。
Databricks Git フォルダー (旧称 Repos) は、接続されている Git リポジトリをフォルダーとして表します。 これらのフォルダの内容は、接続された Git リポジトリに同期することでバージョン管理されます。 デフォルトでは、 Git フォルダはパブリック Git プロバイダー(パブリック GitHub、 GitLab、 Azure DevOpsなど)とのみ同期できます。 ただし、独自のオンプレミス Git サーバー (GitHub Enterprise Server、Bitbucket Server、GitLab 自己管理など) をホストしている場合は、Git フォルダーで Git サーバー プロキシを使用して、Git サーバーへの Databricks アクセスを提供する必要があります。 Git サーバーは、Databricks データ プレーン (ドライバー ノード) からアクセスできる必要があります。
企業ネットワークがプライベート (VPN) アクセスのみ (パブリック アクセスなし) の場合、Git サーバー プロキシを実行して、その外部にある Git リポジトリにアクセスし、ワークスペースに Git フォルダーを追加する必要があります。
Databricks Git フォルダーの Git サーバー プロキシはどのように機能しますか?
GitDatabricksGitGitフォルダーの サーバー プロキシは、Databricks Databricksコントロール プレーンから ワークスペースのコンピュート プレーンで実行されている プロキシ クラスター にコマンド プロキシします。このコンテキストでは、プロキシ クラスターは、Git DatabricksGitフォルダーからセルフホステッド リポジトリにコマンド プロキシ サービスを実行するように構成されたクラスターです。Gitこのプロキシ サービスは、Databricks コントロール プレーンから Git コマンドを受け取り、それらを Git サーバー インスタンスに転送します。
次の図は、システム全体のアーキテクチャを示しています。
Databricks には、 Git サーバー インスタンスを Databricks Git フォルダーのプロキシ コマンドに構成するために実行できる有効化ノートブックが用意されています。 イネーブルメントノートブックは GitHub で入手できます。
現在、Git サーバー プロキシでは、すべてのユーザーに対して CAN_ATTACH_TO
アクセス許可は不要になりました。 既存のプロキシクラスターを使用している管理者は、クラスター ACL 権限を変更してこの機能を有効にできるようになりました。 有効にするには:
-
サイドバーから
[ コンピュート] を選択し、実行しているGit Server Proxy のコンピュート エントリの横にある [ ケバブ] メニューをクリックします。
-
ダイアログから、 すべてのユーザー の [アタッチ可能] エントリを削除します。
Databricks Git フォルダーの Git サーバー プロキシを設定するにはどうすればよいですか?
このセクションでは、Databricks Git フォルダーの Git サーバー プロキシ用に Git サーバー インスタンスを準備し、プロキシを作成し、構成を検証する方法について説明します。
始める前に
プロキシを有効にする前に、次のことを確認してください。
- ワークスペースで Databricks Git フォルダー機能が有効になっている。
- Git サーバーインスタンスは、DatabricksワークスペースのコンピュートプレーンVPCからアクセスでき、HTTPS とパーソナルアクセストークン (PAT) の両方が有効になっています。
Databricks の Git サーバープロキシは、VPC でサポートされているすべてのリージョンで機能します。
ステップ 1: Git サーバーインスタンスを準備する
コンピュート リソースを作成し、このタスクを完了するには、アクセス権を持つワークスペースの管理者である必要があります。
Git サーバーインスタンスを設定するには:
-
プロキシクラスターのドライバーノードに Git サーバーへのアクセス権を付与します。
エンタープライズ Git サーバーには、アクセスを許可する IP アドレスの
allowlist
を含めることができます。- プロキシ クラスターから発信されるトラフィックの静的送信 IP アドレスを関連付けます。 これを行うには、NAT ゲートウェイ経由でトラフィックをプロキシします。
- 前の手順の IP アドレスを Git サーバーの許可リストに追加します。
-
HTTPS トランスポートを許可するように Git サーバー インスタンスを設定します。
- GitHub Enterprise については、GitHub Enterprise ヘルプの「 どのリモート URL を使用すべき か」を参照してください。
- Bitbucket の場合は、Bitbucket サーバー管理ページに移動して、サーバー設定を選択します。 [HTTP(S) SCM ホスティング] セクションで、[ HTTP(S) 有効 ] チェックボックスをオンにします。
ステップ 2: イネーブルメントノートブックを実行する
プロキシを有効にするには:
-
Databricksワークスペースに、アクセス権を持つワークスペース管理者としてログインし、クラスターを作成します。
-
このノートブックをインポートし、Git プロキシを実行するためにクラウドプロバイダーから利用可能な最小のインスタンスタイプを選択します。
ノートブック: Git フォルダー内のプライベート Git サーバー接続のために、Databricks Git フォルダーの Git サーバー プロキシを有効にします。
-
「 実行 All 」をクリックしてノートブックを実行し、次のタスクを実行します。
- 「DatabricksGit Proxy」という名前の 単一ノード コンピュート リソース を作成します。このリソースは、自動終了しません。これは、Databricks ワークスペースからオンプレミスの Git サーバーに Git コマンドを処理して転送する Git プロキシ サービスです。
- GitDatabricksGitフォルダー内の 要求がコンピュート インスタンスを介してプロキシされるかどうかを制御する機能フラグを有効にします。
ベスト プラクティスとして、 Git プロキシ コンピュート リソースを実行する単純なジョブを作成することを検討してください。 これは、"Git プロキシ サービスが実行されています" などの状態を印刷またはログに記録する単純なノートブックにすることができます。 ジョブを定期的に実行するように設定して、ユーザーが Git プロキシ サービスを常に使用できるようにします。
プロキシ ソフトウェアをホストするために、実行時間の長いコンピュート リソースを追加で実行すると、DBU が余分に発生します。 コストを最小限に抑えるために、ノートブックは、安価なノード タイプで単一ノードのコンピュート リソースを使用するようにプロキシを構成します。 ただし、ニーズに合わせてコンピュート オプションを変更したい場合があります。 コンピュート instance 価格の詳細については、 Databricks 価格計算ツールを参照してください。
ステップ 3: Git サーバーの構成を検証する
Gitサーバーの設定を検証するには、プロキシクラスターを使用して、プライベートGitサーバーでホストされているリポジトリのクローンを作成してみてください。クローン作成が成功したということは、ワークスペースの Git サーバープロキシが正常に有効化されたことを意味します。
ステップ 4: プロキシ対応 Git リポジトリを作成する
ユーザーが Git 資格情報を構成した後は、リポジトリを作成または同期するために追加の手順は必要ありません。 資格情報を構成し、プログラムで Git フォルダーのリポジトリにアクセスするには、「 Git 資格情報を構成し、リモート リポジトリを Databricks に接続する」を参照してください。
グローバルCAN_ATTACH_TO権限を削除する
既存のプロキシ クラスターを使用している管理者は、クラスター ACL のアクセス許可を変更して、一般公開されている Git サーバー プロキシの動作を活用できるようになりました。
以前に Databricks Git サーバー プロキシを CAN_ATTACH_TO
特権で構成した場合は、次の手順を使用してこれらのアクセス許可を削除します。
-
サイドバーから 「コンピュート 」を選択し、実行している
サーバープロキシのコンピュートエントリの横にある「 ケバブ」メニューをクリックします。Git
-
ダイアログから、 すべてのユーザー の [アタッチ可能] エントリを削除します。
トラブルシューティング
Databricks Git フォルダーの Git サーバー プロキシの構成中にエラーが発生しましたか? ここでは、一般的な問題と、それらをより効果的に診断する方法をいくつか紹介します。
一般的な問題のチェックリスト
エラーの診断を開始する前に、次の手順を完了したことを確認してください。
- プロキシ クラスターが、この Git プロキシ サーバー デバッグ ノートブックで実行されていることを確認します。(これは Git プロキシ サーバー有効化ノートブックとは異なるノートブックであり、Databricks によっても提供されます)。
- ワークスペース管理者であることを確認します。
- デバッグ ノートブックの残りの部分を実行し、結果をキャプチャします (まだキャプチャしていない場合)。 問題をデバッグできない場合、またはデバッグ ノートブックからエラーが報告されない場合は、Databricks サポートが結果を確認できます。 必要に応じて、デバッグ ノートブックを DBC アーカイブとしてエクスポートして送信できます。
Git プロキシの設定を変更する
Git プロキシ サービスがデフォルト設定で動作しない場合は、特定の環境変数を設定して変更を加え、ネットワーク インフラストラクチャをより適切にサポートできます。
次の環境変数を使用して、Git プロキシ サービスの構成を更新します。
環境変数 | フォーマット | 説明 |
---|---|---|
|
| プライベート Git サーバーに自己署名証明書を使用している場合は、これを |
| ファイルパス (文字列) | これを、SSL 検証に使用される CA 証明書ファイルへのパスに設定します。 例: |
|
| これを、HTTP トラフィック用のネットワークのファイアウォール プロキシの HTTPS URL に設定します。 |
| ポート番号 (整数) | これを Git サーバーの HTTP ポートに割り当てられたポート番号に設定します。 |
これらの環境変数を設定するには、 Databricks ワークスペースのコンピュート タブに移動し、 Git プロキシ サービスのコンピュート設定を選択します。 [構成 ] ウィンドウの下部にある [ 詳細設定 ] を展開し、その下にある [Spark ] タブを選択します。これらの環境変数を 1 つ以上設定するには、 それらを [環境変数 ] テキスト領域に追加します。
プロキシ クラスターのログを検査する
プロキシ クラスター上の /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 SLL problems
多くの場合、これは特別なSSL証明書が必要なリポジトリを使用していることを意味します。 プロキシクラスター上の
/databricks/git-proxy/git-proxy.log
ファイルの内容を確認します。 証明書の検証に失敗したと表示される場合は、認証局の証明書をシステム証明書チェーンに追加する必要があります。 まず、ルート証明書を ( ブラウザー またはその他のオプションを使用して) 抽出し、DBFS にアップロードします。 次に、 Git フォルダ Git プロキシ クラスターを編集して、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 プロキシ サーバーが実行されているかどうかを確認する最も簡単な方法は何ですか?
Databricks によって提供される Git プロキシ デバッグ ノートブック をインポートします。 それをローカル コンピューターにダウンロードし、Databricks ワークスペースにインポートします。
ノートブックを実行すると、Git プロキシ サービスにエラーや問題があるかどうかが報告されます。
Git サーバー プロキシのセキュリティにはどのような影響がありますか?
知っておくべき最も重要なことは次のとおりです。
- プロキシは、Databricks コントロール プレーンのセキュリティ アーキテクチャには影響しません。
- ワークスペースごとに 1 つの Git プロキシ サーバー クラスターのみを持つことができます。
すべての Databricks Git フォルダー関連の Git トラフィックは、パブリック Git リポジトリの場合でも、プロキシクラスターを介してルーティングされますか?
はい。 現在のリリースでは、Databricks ワークスペースでは、プロキシされたリポジトリとプロキシされていないリポジトリは区別されません。
Git プロキシ機能は、他の 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
を設定して、ポート値を優先値で上書きできます。
複数のワークスペースで 1 つのプロキシを共有できますか、それともワークスペースごとに 1 つのプロキシ クラスターが必要ですか?
ワークスペースごとに 1 つのプロキシ クラスター Databricks 必要です。
プロキシは、従来の単一ノートブックのバージョン管理で動作しますか?
いいえ、プロキシは従来の単一ノートブックのバージョン管理では機能しません。 ユーザーは、Databricks Git フォルダーのバージョン管理に移行する必要があります。
DatabricksはプロキシされているGitサーバーのURLを隠すことができますか? ユーザーは、プロキシされたURLではなく、元のGitサーバーのURLを入力できますか?
両方の質問にはい。 ユーザーは、プロキシの動作を調整する必要はありません。 現在のプロキシ実装では、Databricks Git フォルダーのすべての Git トラフィックはプロキシ経由でルーティングされます。 ユーザーは、 https://git.company.com/org/repo-name.git
などの通常の Git リポジトリ URL を入力します。
ユーザーはどのくらいの頻度で Git URL を使用しますか?
通常、ユーザーは新しいリポジトリを作成するとき、またはまだチェックアウトしていない既存のリポジトリをチェックアウトするときに、Git URL を追加するだけです。
この機能は、認証データを Git サーバーに透過的にプロキシしますか?
はい、プロキシはユーザーアカウントのGitサーバートークンを使用してGitサーバーへの認証を行います。
Git サーバー コードへの Databricks アクセスはありますか?
Databricks プロキシ サービスは、ユーザー指定の資格情報を使用して Git サーバー上の Git リポジトリにアクセスし、リポジトリ内のコード ファイルを Git フォルダーと同期します。 アクセスは、ユーザー指定のパーソナル アクセス トークン (PAT) で指定されたアクセス許可によって制限されます。