Databricks Git フォルダー (Repos) のプライベート Git 接続をセットアップする

Git フォルダーの Git サーバー プロキシについて説明し、構成することで、Databricks Git フォルダーから GitHub Enterprise Server、Bitbucket Server、および GitLab 自己管理型によって提供されるオンプレミス リポジトリに Git コマンドをプロキシできるようになります。

注:

プレビュー中に Databricks Git サーバー プロキシが構成されているユーザーは、最高のパフォーマンスを得るためにクラスターのアクセス許可をアップグレードする必要があります。 「グローバルCAN_ATTACH_TO権限の削除」を参照してください。

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 データ プレーン (ドライバー ノード) からアクセスできる必要があります。

注:

現在、Databricks Git フォルダーには、Databricks ノートブックとサブフォルダー、およびその他のアセット タイプの特定のセットのみを含めることができます。 サポートされているアセット タイプの現在のリストについては、 「Databricks Git フォルダーとの Git 統合の制限と FAQ」を参照してください。

Databricks Git フォルダーの Git サーバー プロキシはどのように機能しますか?

Databricks の Git サーバー プロキシ Git フォルダーは、Databricks コントロール プレーンから Databricks ワークスペースのコンピュート プレーンで実行されている「プロキシ クラスター」に Git コマンドをプロキシします。 このコンテキストでは、プロキシ クラスターは、Databricks Git フォルダーからセルフホスト Git リポジトリへの 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 サーバー接続のために、Databricks Git フォルダーの Git サーバー プロキシを有効にします

  3. 「すべて実行」を選択して、次のタスクを実行します。

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

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

重要

クラスターを作成するには、アクセス権を持つワークスペースの管理者である必要があります。

注:

次の点に注意する必要があります。

  • プロキシ ソフトウェアをホストするために追加の long-稼働中のクラスターを実行すると、追加の DBU が発生します。 コストを最小限に抑えるために、ノートブックは、安価なノードタイプの単一ノードクラスターを使用するようにプロキシを構成します。 ただし、必要に応じてクラスター オプションを変更することもできます。

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

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

手順 4: プロキシ対応repo を作成する

ユーザーが Git 資格情報を構成した後、リポジトリを作成または同期するためにそれ以上のステップは必要ありません。 資格情報を構成し、Databricks 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 サーバー プロキシを構成中にエラーが発生しましたか? ここでは、一般的な問題と、それらをより効果的に診断する方法をいくつか紹介します。

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

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

  • プロキシ クラスターが実行されていることを確認します。

  • Databricks Git フォルダーのユーザーがプロキシ クラスターに対する「接続」権限を持っていることを確認します。

  • イネーブルメントノートブックを再度実行し、結果をキャプチャします (まだキャプチャしていない場合)。 問題をデバッグできない場合は、Databricks サポートが結果を確認できます。 イネーブルメント・ノートブックをエクスポートして、DBC アーカイブとして送信できます。

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

プロキシ クラスター上の /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 プロキシの環境変数を設定する Databricks モーダル ダイアログ
  • 「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 repo access.
    

    組織で SAML SSO を使用している場合は、トークンが承認されていることを確認します (これは、Git サーバーの個人用アクセストークン (PAT) 管理ページから実行できます)。

よくある質問

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 を使用しますか?

通常、ユーザーは、新しい repo を作成するとき、またはまだチェックアウトしていない既存の repo をチェックアウトするときに、Git URL を追加するだけです。

この機能は認証データを Git サーバーに透過的にプロキシしますか?

はい、プロキシはユーザー アカウントの Git サーバー トークンを使用して Git サーバーに対する認証を行います。

Gitサーバーコードへの Databricks アクセスはありますか?

Databricks プロキシ サービスは、ユーザーが指定した資格情報を使用して Git サーバー上の Git リポジトリにアクセスし、リポジトリ内のすべてのコード ファイルを repoと同期します。 アクセスは、ユーザー指定の個人用アクセストークン (PAT) で指定されたアクセス許可によって制限されます。