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 サーバー プロキシ Git フォルダーが顧客のコンピュート プレーンから実行されるように構成されている様子を示す図

現在、Git サーバー プロキシでは、すべてのユーザーに対するCAN_ATTACH_TO権限は必要なくなりました。 既存のプロキシ クラスターを使用する管理者は、クラスター ACL 権限を変更してこの機能を有効にできるようになりました。 有効にするには:

  1. サイドバーから「コンピュート」を選択し、ケバブメニュー実行している Git サーバー プロキシのコンピュート エントリの横にある kebab メニュー:

    サイドバーから [コンピュート] を選択し、Git プロキシ サーバーのコンピュート リソースの右側にあるケバブを選択します。
  2. ダイアログから、 [すべてのユーザー]Can Attach To の 削除します。

    表示されるモーダル ダイアログ ボックスで、[すべてのユーザー、 Can Attach Toの右側にある [X] をクリックします。

Databricks Git フォルダー用に Git サーバー プロキシを設定するにはどうすればよいですか?

このセクションでは、Databricks Git フォルダーの Git サーバー プロキシ用に Git サーバー インスタンスを準備し、プロキシを作成し、構成を検証する方法について説明します。

始める前に

プロキシを有効にする前に、次のことを確認してください。

  • ワークスペースでは Databricks Git フォルダー機能が有効になっています。

  • Git サーバー インスタンスは、Databricks ワークスペースのコンピュート プレーン VPC からアクセスでき、HTTPS と個人用アクセス トークン (PAT) の両方が有効になっています。

注:

Databricks の Git サーバー プロキシは、VPC でサポートされているすべてのリージョンで動作します。

ステップ 1: Git サーバーインスタンスを準備する

重要

コンピュートリソースを作成してこのタスクを完了するには、ワークスペースの管理者としてアクセス権を持っている必要があります。

Git サーバーインスタンスを設定するには:

  1. プロキシ クラスターのドライバー ノードに Git サーバーへのアクセス権を付与します。

    エンタープライズ Git サーバーには、アクセスを許可する IP アドレスの allowlist を設定できます。

    1. プロキシー・クラスターから発信されるトラフィックの静的アウトバウンド IP アドレスを関連付けます。 これを行うには、NAT ゲートウェイを介してトラフィックをプロキシします。

    2. 前の手順の IP アドレスを Git サーバーの許可リストに追加します。

  1. HTTPS トランスポートを許可するように Git サーバーインスタンスを設定します。

    • GitHub Enterprise については、GitHub Enterprise ヘルプの「 どのリモート URL を使うべきか 」を参照してください。

    • [Bitbucket ] で [Bitbucket サーバー管理] ページに移動し、[サーバー設定] を選択します。 [HTTP(S) SCM ホスティング] セクションで、[ HTTP(S) を有効にする ] チェック ボックスをオンにします。

ステップ 2: 有効化のためのノートブックを実行する

プロキシを有効にするには:

  1. クラスターを作成するためのアクセス権を持つワークスペース管理者として Databricks ワークスペースにログインします。

  2. このノートブックをインポートすると、Git プロキシを実行するためにクラウド プロバイダーから利用可能な最小のインスタンス タイプが選択されます。

    ノートブック: Git フォルダー内のプライベート Git サーバー接続のために、Databricks Git フォルダーの Git サーバー プロキシを有効にします

  3. 実行 All 」をクリックしてノートブックを実行し、次のタスクを実行します。

    • 「DatabricksGit Proxy」という名前の 単一ノード コンピュート リソース を作成します。このリソースは、自動終了しません。これは、Databricks ワークスペースからオンプレミスの Git サーバーに Git コマンドを処理して転送する Git プロキシ サービスです。

    • GitDatabricksGitフォルダー内の 要求がコンピュート インスタンス経由でプロキシされるかどうかを制御する機能フラグを有効にします。

    ベスト プラクティスとして、 Gitプロキシ コンピュート リソースを実行するための単純なジョブを作成することを検討してください。 これは、「Git プロキシ サービスが実行中です」などのステータスを印刷または記録するシンプルなノートブックになります。 ユーザーが Git プロキシ サービスを常に利用できるように、ジョブを定期的に実行するように設定します。

注:

プロキシ ソフトウェアをホストするために追加の長時間実行されるコンピュート リソースを実行すると、追加の DBU が発生します。 コストを最小限に抑えるために、デルは安価なノード タイプを持つ単一ノード コンピュート リソースを使用するようにプロキシを構成します。 ただし、必要に応じてコンピュート オプションを変更する必要がある場合があります。 コンピュート インスタンスの価格の詳細については、 Databricks calculatorを参照してください。

ステップ 3: Git サーバーの構成を検証する

Gitサーバーの設定を検証するには、プロキシクラスタリングを使用して、プライベートGitサーバーでホストされているリポジトリのクローンを作成してみてください。クローン作成が成功したということは、ワークスペースの Git サーバープロキシが正常に有効化されたことを意味します。

ステップ 4: プロキシ対応 Git リポジトリを作成する

ユーザーが Git 資格情報を構成した後は、リポジトリを作成または同期するために追加の手順は必要ありません。 資格情報を構成し、プログラムで Git フォルダーのリポジトリにアクセスするには、「 Git 資格情報を構成し、リモート リポジトリを Databricks に接続する」を参照してください。

グローバルCAN_ATTACH_TO権限の削除

既存のプロキシ クラスターを使用する管理者は、クラスター ACL 権限を変更して、一般的に利用可能な Git サーバー プロキシ動作を活用できるようになりました。

以前に Databricks Git サーバー プロキシをCAN_ATTACH_TO権限で構成した場合は、次のステップを使用してこれらの権限を削除します。

  1. サイドバーから「コンピュート」を選択し、ケバブメニュー実行している Git サーバー プロキシのコンピュート エントリの横にある kebab メニュー:

    サイドバーから [コンピュート] を選択し、Git プロキシ サーバーのコンピュート リソースの右側にあるケバブを選択します。
  2. ダイアログから、 [すべてのユーザー]Can Attach To の 削除します。

    表示されるモーダル ダイアログ ボックスで、[すべてのユーザー、 Can Attach Toの右側にある [X] をクリックします。

トラブルシューティング

Databricks Git フォルダーの Git サーバー プロキシを構成中にエラーが発生しましたか? ここでは、一般的な問題と、それらをより効果的に診断する方法をいくつか紹介します。

一般的な問題のチェックリスト

エラーの診断を開始する前に、次の手順が完了していることを確認してください。

  • プロキシ クラスタリングが、この Git プロキシ サーバー デバッグ ノートブックで実行されていることを確認します。(これは Git プロキシ サーバー有効化ノートブックとは異なるノートブックであり、Databricks によっても提供されます)。

  • ワークスペース管理者であることを確認します。

  • デバッグ ノートブックの残りの部分を実行し、結果をキャプチャします (まだキャプチャしていない場合)。 問題をデバッグできない場合、またはデバッグ ノートブックからエラーが報告されない場合は、Databricks サポートが結果を確認できます。 必要に応じて、デバッグ ノートブックを DBC アーカイブとしてエクスポートして送信できます。

Git プロキシの設定を変更する

Git プロキシ サービスがデフォルト設定で動作しない場合は、特定の環境変数を設定して変更を加え、ネットワーク インフラストラクチャをより適切にサポートできます。

次の環境変数を使用して、Git プロキシ サービスの構成を更新します。

環境変数

フォーマット

説明

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 トラフィック用のネットワークのファイアウォール プロキシの HTTPS URL に設定します。

GIT_PROXY_CUSTOM_HTTP_PORT

ポート番号 (整数)

これを Git サーバーの HTTP ポートに割り当てられたポート番号に設定します。

これらの環境変数を設定するには、 Databricks ワークスペースのコンピュート タブに移動し、 Git プロキシ サービスのコンピュート設定を選択します。 [構成] ウィンドウの下部にある [詳細オプション] を展開し、その下にある [Spark] タブを選択します。これらの環境変数を 1 つ以上設定するには、 それらを [環境変数 ] テキスト領域に追加します。

Databricks コンピュートの設定ページで、Gitプロキシの環境変数を設定します

プロキシ クラスターのログを検査する

プロキシ クラスター上の /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 コントロール プレーンのセキュリティ アーキテクチャには影響しません。

  • ワークスペースごとに Git プロキシ サーバー クラスターを 1 つだけ使用できます。

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 つのプロキシ クラスターが必要ですか?

Databricks ワークスペースごとに 1 つのプロキシ クラスターが必要です。

プロキシは従来の単一ノートブックのバージョン管理で動作しますか?

いいえ、プロキシは従来の単一ノートブックのバージョン管理では機能しません。 ユーザーは 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) で指定されたアクセス許可によって制限されます。