Git フォルダーの Git サーバー プロキシについて説明し、構成します。これにより、Databricks Git フォルダーから、インターネットからアクセスできないプライベート Git リポジトリに Git コマンドをプロキシできます。
Databricks Git フォルダーの Git サーバー プロキシとは何ですか?
Git フォルダー用の Databricks Git サーバー プロキシは、Azure Databricks ワークスペースからプライベート Git サーバーに Git コマンドをプロキシできる機能です。 インターネット上でアクセスできない場合、Git サーバーはプライベートです。
Databricks Git フォルダー (旧称 Repos) は、接続されている Git リポジトリをフォルダーとして表します。 これらのフォルダーの内容は、接続されている Git リポジトリに同期することでバージョン制御されます。 既定では、Git フォルダーはインターネット上でアクセスできるフォルダーとのみ同期できます。 独自のプライベート Git サーバー (GitHub Enterprise Server、Bitbucket Server、GitLab セルフマネージドなど) をホストする場合、または Git サーバーがファイアウォールの内側にある場合は、Git フォルダーで Git サーバー プロキシを使用して、Git サーバーへの Databricks アクセスを提供し、Git サーバーに Azure 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 サーバー プロキシを設定する
Databricks Git フォルダーのプライベート Git 接続を有効にするには、Git サーバー インスタンスを準備し、有効化ノートブックを実行してプロキシを作成し、構成を検証します。
[前提条件]
プロキシを有効にする前に、次のことを確認します。
- ワークスペースで Databricks Git フォルダー機能が有効になっています。
- Git サーバー インスタンスには、Azure Databricks ワークスペースのコンピューティング プレーン Azure 仮想ネットワーク (VNet) からアクセスでき、HTTPS と個人用アクセス トークン (AT) の両方が有効になっています。
メモ
Databricks の Git サーバー プロキシは、VNet でサポートされているすべてのリージョンで機能します。
手順 1: Git サーバー インスタンスを準備する
重要
コンピューティング リソースを作成してこのタスクを完了するには、アクセス権を持つワークスペース管理者である必要があります。
プロキシ クラスターからの接続を受け入れ、HTTPS トランスポートを有効にするように Git サーバーを構成します。
エンタープライズ Git サーバーには、通常、アクセスが許可される IP アドレスの許可リストがあります。 プロキシ クラスター ドライバー ノードが Git サーバーにアクセスできるようにするには、プロキシ クラスターから送信されるトラフィックの静的送信 IP アドレスを関連付け、Git サーバーの許可リストに追加します。
- Azure Firewall またはエグレス アプライアンスを使用して、プロキシ クラスターから送信されるトラフィックの静的送信 IP アドレスを関連付けます。
- 前の手順の IP アドレスを Git サーバーの許可リストに追加します。
次に、HTTPS トランスポートを許可するように Git サーバー インスタンスを構成します。
- GitHub Enterprise: GitHub Enterprise ヘルプで 使用する必要があるリモート URL を 確認します。
- Bitbucket サーバー: Bitbucket サーバーの管理ページで、[ サーバーの設定 ] をクリックし、[ HTTP(S) が有効] を選択します。
手順 2: 有効化ノートブックを実行する
プロキシを有効にするには:
クラスターを作成するためのアクセス権を持つワークスペース管理者として Azure Databricks ワークスペースにログインします。
このノートブックをインポートします。これにより、Git プロキシを実行するためにクラウド プロバイダーから使用できる最小のインスタンスの種類が選択されます。
ノートブック: Git フォルダーでプライベート Git サーバー接続に対して Databricks Git フォルダーの Git サーバー プロキシを有効にします。
[すべてを 実行] をクリックしてノートブックを実行すると、次のタスクが実行されます。
- 自動終了しない単一ノード コンピューティング リソースを "Databricks Git Proxy" という名前で作成します。 これは、Git コマンドを処理し、Azure Databricks ワークスペースからプライベート Git サーバーに転送する Git プロキシ サービスです。
- Databricks Git フォルダーの Git 要求をコンピューティング インスタンスでプロキシするかどうかを制御する機能フラグを有効にします。
ベスト プラクティスとして、Git プロキシ コンピューティング リソースを実行する単純なジョブを作成することを検討してください。 これは、"Git プロキシ サービスが実行されています" などの状態を出力またはログに記録する単純なノートブックです。 ユーザーが Git プロキシ サービスを常に使用できるように、ジョブを一定の時間間隔で実行するように設定します。
メモ
プロキシ ソフトウェアをホストするために長時間実行するコンピューティング リソースを追加で実行すると、追加の DBU が発生します。 コストを最小限に抑えるため、ノートブックは、安価なノード タイプの単一ノード コンピューティング リソースを使用するようにプロキシを設定します。 ただし、ニーズに合わせてコンピューティング オプションを変更することもできます。 コンピューティング インスタンスの価格の詳細については、Databricks 料金計算ツールを参照してください。
手順 3: Git サーバーの構成を検証する
Git サーバーの構成を検証するには、プロキシ クラスター経由でプライベート Git サーバーでホストされているリポジトリを複製してみてください。 複製が成功したということは、ワークスペースに対して Git サーバー プロキシが正常に有効になっていることを意味します。
手順 4: プロキシが有効な Git リポジトリを作成する
ユーザーが Git 資格情報を設定した後は、リポジトリの作成または同期に必要なその他の手順はありません。 資格情報を構成し、Git フォルダーのリポジトリにプログラムでアクセスするには、リモート リポジトリを Azure Databricksに接続 & Git 資格情報の構成
グローバル CAN_ATTACH_TO アクセス許可を削除する
Git サーバー プロキシでは、ユーザー CAN_ATTACH_TO アクセス許可は必要ありません。 ユーザーがプロキシ クラスターで任意のワークロードを実行して信頼性の問題を引き起こさないようにするには、管理者はプロキシ サーバーでのクラスター ACL アクセス許可を制限する必要があります。
サイドバーから [コンピューティング ] を選択し、
をクリックします。実行中の Git Server プロキシのコンピューティング エントリの横にある kebab メニュー:
ダイアログから、すべてのユーザー のための アタッチ先 エントリを削除します。
トラブルシューティング
Databricks Git フォルダーの Git サーバー プロキシの構成中にエラーが発生しましたか? いくつかの一般的な問題と、それらをより効果的に診断する方法を次に示します。
一般的な問題のチェックリスト
エラーの診断を開始する前に、次の手順が完了していることを確認します。
- この Git プロキシ サーバー デバッグ ノートブックを使用して、プロキシ クラスターが実行されていることを確認します。
- 自分がワークスペース管理者であることを確認します。
- デバッグ ノートブックの残りの部分を実行し、結果をキャプチャします。 問題をデバッグできない場合、またはデバッグ ノートブックから報告されたエラーが表示されない場合は、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 ポートに割り当てられているポート番号に設定します。 |
これらの環境変数を設定するには、Azure 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 にアップロードします。 その後、Git フォルダー Git Proxy クラスターを編集し、GIT_PROXY_CA_CERT_PATH環境変数を使用してルート証明書ファイルをポイントします。 クラスター環境変数の編集の詳細については、「環境変数」を参照してください。その手順が完了したら、クラスターを再起動します。
よく寄せられる質問
Git プロキシ サーバーがワークスペースで実行されているかどうかを確認するにはどうすればよいですか?
Git プロキシ デバッグ ノートブックをインポートして実行します。 ノートブックの実行結果は、Git プロキシ サービスに問題があるかどうかを示します。
複数のワークスペースで 1 つのプロキシ クラスターを共有できますか? ワークスペースに複数のプロキシ クラスターを含めることができますか?
Azure Databricks ワークスペースごとに 1 つのプロキシ クラスターが必要であり、複数のワークスペース間で 1 つを共有することはできません。 ワークスペースごとに使用できる Git プロキシ サーバー クラスターは 1 つだけです。
プロキシ クラスターは Git トラフィックの一部のみをルーティングできますか?
Databricks Git フォルダーに関連するすべての Git トラフィックは、パブリック Git リポジトリの場合でも、プロキシ クラスターを介してルーティングされます。 Azure 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 トラフィックがプロキシ経由でルーティングされます。 ユーザーは、通常の Git リポジトリ URL ( https://git.company.com/org/repo-name.gitなど) を入力します。
この機能は、Git サーバーに認証データを透過的にプロキシしますか?
はい。プロキシは、ユーザー アカウントの Git 資格情報を使用して Git サーバーに対する認証を行います。 アクセスは、ユーザーの Git 資格情報で指定されたアクセス許可によって制限されます。