Databricks Git フォルダー (Repos) のプライベート Git 接続を設定する
Databricks Git フォルダーからインターネットからアクセスできないプライベート Git リポジトリに Git コマンドをプロキシできる Git フォルダー用の Git サーバー プロキシについて学習し、構成します。
サーバレス版の Git プロキシがプレビューで公開されています。 Databricks サーバレスプライベート Gitの入門を参照してください。
Databricks GitフォルダのGitサーバープロキシとは何ですか?
Git フォルダー用の Databricks Git サーバー プロキシは、Databricks ワークスペースからプライベート Git サーバーに Git コマンドをプロキシできる機能です。Git サーバーは、インターネット上でアクセスできない場合、プライベートです。
Databricks Git フォルダー (旧称 Repos) は、接続されている Git リポジトリをフォルダーとして表します。これらのフォルダーの内容は、接続された Git リポジトリに同期することでバージョン管理されます。によって デフォルト、 Git フォルダーはインターネット上でアクセス可能なフォルダーとのみ同期できます。 独自のプライベート Git サーバー (GitHub Enterprise Server、Bitbucket Server、GitLab セルフマネージドなど) をホストしている場合、または Git サーバーがファイアウォールの内側にある場合は、Git フォルダーを持つGitサーバー プロキシを使用してGit サーバーへのDatabricks アクセスを提供する必要があり、Git サーバーにはDatabricks コンピュート プレーンからアクセスできる必要があります。
Databricks Git フォルダーの Git サーバー プロキシはどのように機能しますか?
Databricks Git フォルダー プロキシのサーバー プロキシGit コマンドをDatabricks コントロール プレーンからDatabricks ワークスペースのコンピュート プレーンで実行されている プロキシ クラスタリング にGitします。このコンテキストでは、プロキシ クラスタリングは、 実行 プロキシ サービス コマンドをDatabricks GitフォルダからセルフホストGitリポジトリに実行Git。プロキシは、Databricks コントロール プレーンのセキュリティ アーキテクチャには影響しません。このプロキシ サービスは、Databricks コントロール プレーンから Git コマンドを受信し、Git サーバー インスタンスに転送します。
次の図は、システム全体のアーキテクチャを示しています。
Databricks には、 Databricks Git フォルダーのコマンドをプロキシするように Git サーバー インスタンスを構成するために実行できるイネーブルメント ノートブックが用意されています。GitHub でイネーブルメント ノートブックを入手します。Databricks Git サーバー プロキシは、構成ノートブックに含まれる Databricks Runtime のバージョンで動作するように特別に設計されています。プロキシ クラスタリングの Databricks Runtime バージョンは更新しないでください。
Databricks Git フォルダーの 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 」をクリックしてノートブックを実行し、次のタスクを実行します。
- 自動終了しない「Databricks Git Proxy」という名前の単一ノードコンピュートリソースを作成します。これは、Databricks ワークスペースからプライベート Git サーバーに Git コマンドを処理して転送する Git プロキシ サービスです。
- GitDatabricksGitフォルダー内の 要求がコンピュート インスタンスを介してプロキシされるかどうかを制御する機能フラグを有効にします。
ベストプラクティスとして、単純なジョブを作成することを検討してください 実行 Git proxy コンピュートリソース。 これは、"Git プロキシ サービスが実行中です" などの状態を印刷またはログに記録する単純なノートブックにすることができます。ジョブを一定の時間間隔で実行するように設定して、ユーザーが常に Git プロキシ サービスを使用できるようにします。
プロキシ ソフトウェアをホストするために、実行時間の長いコンピュート リソースを追加で実行すると、DBU が余分に発生します。 コストを最小限に抑えるために、ノートブックは、安価なノード タイプで単一ノードのコンピュート リソースを使用するようにプロキシを構成します。 ただし、ニーズに合わせてコンピュート オプションを変更したい場合があります。 コンピュート instance 価格の詳細については、 Databricks 価格計算ツールを参照してください。
ステップ 3: Git サーバーの構成を検証する
Git サーバー構成を検証するには、プロキシ クラスタリングを介してプライベート Git サーバーでホストされているリポジトリのクローンを作成してみてください。クローンが成功すると、ワークスペースの Git サーバー プロキシが正常に有効になったことを意味します。
ステップ 4: プロキシ対応 Git リポジトリを作成する
ユーザーが Git 資格情報を構成した後は、リポジトリを作成または同期するために追加の手順は必要ありません。 資格情報を構成し、プログラムで Git フォルダーのリポジトリにアクセスするには、「 Git 資格情報を構成し、リモート リポジトリを Databricks に接続する」を参照してください。
グローバルCAN_ATTACH_TO権限を削除する
Git サーバー プロキシには、ユーザーの CAN_ATTACH_TO
アクセス許可は必要ありません。ユーザーがプロキシ クラスタリングで任意のワークロードを実行し、信頼性の問題を引き起こすのを防ぐには、管理者はプロキシ サーバーでクラスタリング ACL 権限を制限する必要があります。
-
サイドバーから
[ コンピュート] を選択し、実行しているGit Server Proxy のコンピュート エントリの横にある [ ケバブ] メニューをクリックします。
-
ダイアログから、 すべてのユーザー の [アタッチ可能] エントリを削除します。
トラブルシューティング
Databricks Git フォルダーの Git サーバー プロキシの構成中にエラーが発生しましたか? ここでは、一般的な問題と、それらをより効果的に診断する方法をいくつか紹介します。
一般的な問題のチェックリスト
エラーの診断を開始する前に、次の手順を完了したことを確認してください。
- プロキシ クラスターが、この Git プロキシ サーバー デバッグ ノートブックで実行されていることを確認します。
- ワークスペース管理者であることを確認します。
- デバッグ ノートブックの残りの部分を実行し、結果をキャプチャします。問題をデバッグできない場合、またはデバッグ ノートブックからエラーが報告されない場合は、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 SSL problems
多くの場合、これは特別なSSL証明書を必要とするリポジトリを使用していることを意味します。プロキシ クラスタリング上の
/databricks/git-proxy/git-proxy.log
ファイルの内容を確認します。 証明書の検証に失敗したと表示された場合は、認証局証明書をシステム証明書チェーンに追加する必要があります。まず、ルート証明書を抽出し( ブラウザ またはその他のオプションを使用して)、DBFSにアップロードします。次に、Proxy クラスタリング GitGitフォルダー を編集して、GIT_PROXY_CA_CERT_PATH
環境変数を使用してルート証明書ファイルを指します。詳細については、 情報 編集 クラスタリング 環境変数については、「 環境変数」を参照してください。その手順を完了したら、クラスターを再開します。
よくある質問
Git プロキシ サーバーがワークスペースで実行されているかどうかを確認するにはどうすればよいですか?
Git プロキシ デバッグ ノートブックをインポートして実行します。ノートブックの実行結果には、Git プロキシ サービスに問題があるかどうかが表示されます。
複数のワークスペースで 1 つのプロキシ クラスタリングを共有できますか? ワークスペースに複数のプロキシ クラスタリングを含めることができますか?
Databricksワークスペースごとに 1 つのプロキシ クラスタリングが必要であり、複数のワークスペース間で 1 つを共有することはできません。ワークスペースごとに 1 つの Git プロキシ サーバー クラスタリングのみを持つことができます。
プロキシ クラスタリングは、 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
を設定して、ポート値を優先値で上書きできます。
DatabricksはプロキシされているGitサーバーのURLを隠すことができますか? ユーザーは、プロキシされたURLではなく、元のGitサーバーのURLを入力できますか?
どちらの質問にも「はい」です。ユーザーは、プロキシの動作を調整する必要はありません。現在のプロキシ実装では、Databricks Git フォルダーのすべての Git トラフィックはプロキシを介してルーティングされます。ユーザーは、 https://git.company.com/org/repo-name.git
などの通常の Git リポジトリ URL を入力します。
この機能は、認証データを Git サーバーに透過的にプロキシしますか?
はい、プロキシはユーザー アカウントの Git 資格情報を使用して Git サーバーに対して認証します。アクセスは、ユーザーの Git 資格情報で指定されたアクセス許可によって制限されます。