다음을 통해 공유


Azure Databricks Git 폴더에 대한 프라이빗 Git 연결 설정

개인 Git 서버(예: GitHub Enterprise Server, Bitbucket Server 또는 GitLab 자체 관리)를 호스트하거나 Git 서버가 방화벽 뒤에 있는 경우 Git 서버 프록시를 사용하여 Databricks Git 폴더를 개인 리포지토리에 연결할 수 있습니다. 프록시는 컴퓨팅 리소스를 통해 Azure Databricks 작업 영역에서 개인 Git 서버로 Git 명령을 라우팅합니다.

Git 서버 프록시 정보

Git 폴더에 대한 Databricks Git 서버 프록시를 사용하면 Azure Databricks 작업 영역에서 인터넷에서 액세스할 수 없는 프라이빗 Git 서버로 Git 명령을 프록시할 수 있습니다.

Databricks Git 폴더는 연결된 Git 리포지토리를 폴더로 나타냅니다. 이러한 폴더의 내용은 연결된 Git 리포지토리에 동기화하여 버전 제어됩니다. 기본적으로 Git 폴더는 인터넷에서 액세스할 수 있는 리포지토리와만 동기화할 수 있습니다. 프라이빗 Git 서버를 호스트하거나 Git 서버가 방화벽 뒤에 있는 경우 Git 폴더에서 Git 서버 프록시를 사용해야 합니다. Git 서버는 Azure Databricks 컴퓨팅 평면에서 액세스할 수 있어야 합니다.

Git 서버 프록시 작동 방식

Databricks Git 폴더에 대한 Git 서버 프록시는 Databricks 컨트롤 플레인에서 작업 영역의 컴퓨팅 평면에서 실행되는 프록시 클러스터 로 Git 명령을 프록시합니다. 프록시 클러스터는 Databricks 컨트롤 플레인에서 Git 명령을 수신하고 Git 서버로 전달하는 프록시 서비스를 실행하도록 구성됩니다. 프록시는 Databricks 컨트롤 플레인의 보안 아키텍처에 영향을 주지 않습니다.

다음은 전체 시스템 아키텍처를 보여 줍니다.

고객의 컴퓨팅 평면에서 Databricks Git 폴더를 실행하도록 Git Server 프록시를 구성하는 방법을 보여 주는 다이어그램

중요합니다

Databricks는 Databricks Git 폴더에 대한 프록시 명령으로 Git 서버 인스턴스를 구성하는 사용 가능 Notebook 을 제공합니다. GitHub에서 활성화 노트북을 가져옵니다. Databricks Git 서버 프록시는 구성 Notebook에 포함된 Databricks 런타임 버전에서 작동하도록 설계되었습니다. 프록시 클러스터의 Databricks 런타임 버전을 업데이트하지 마세요.

Git 서버 프록시 설정

Databricks Git 폴더에 대한 프라이빗 Git 연결을 사용하도록 설정하려면 Git 서버 인스턴스를 준비하고, 활성화 Notebook을 실행하여 프록시를 만들고, 구성의 유효성을 검사합니다.

Git 서버 프록시를 설정하려면 다음을 수행합니다.

  1. 고정 IP 주소 및 HTTPS 전송을 사용하여 Git 서버 인스턴스를 준비합니다.
  2. Enablement Notebook을 실행하여 프록시 클러스터를 만듭니다.
  3. 리포지토리를 복제하여 구성의 유효성을 검사합니다.
  4. 사용자에 대한 Git 자격 증명을 구성합니다.

필수 조건

프록시를 사용하도록 설정하기 전에 다음을 확인합니다.

  • Git 서버 인스턴스는 Azure Databricks 작업 영역의 컴퓨팅 평면 Azure VNet(가상 네트워크)에서 액세스할 수 있으며 HTTPS 및 개인용 액세스 토큰(PAT)을 모두 사용할 수 있습니다.

비고

Databricks에 대한 Git 서버 프록시는 VNet에서 지원하는 모든 지역에서 작동합니다.

1단계: Git 서버 인스턴스 준비

중요합니다

컴퓨팅 리소스를 만들고 이 작업을 완료하려면 액세스 권한이 있는 작업 영역 관리자여야 합니다.

프록시 클러스터의 연결을 수락하고 HTTPS 전송을 사용하도록 Git 서버를 구성합니다.

엔터프라이즈 Git 서버에는 일반적으로 액세스가 허용되는 IP 주소의 허용 목록이 있습니다. 프록시 클러스터 드라이버 노드가 Git 서버에 액세스할 수 있도록 하려면 프록시 클러스터에서 발생하는 트래픽에 대한 정적 아웃바운드 IP 주소를 연결하고 Git 서버의 허용 목록에 추가합니다.

  1. Azure Firewall 또는 egress 어플라이언스를 사용하여 프록시 클러스터에서 발생하는 트래픽에 정적 아웃바운드 IP 주소를 연결합니다.
  2. 이전 단계의 IP 주소를 Git 서버의 허용 목록에 추가합니다.

그런 다음 HTTPS 전송을 허용하도록 Git 서버 인스턴스를 구성합니다.

  • GitHub Enterprise: GitHub Enterprise 도움말에서 사용해야 하는 원격 URL 을 확인합니다.
  • Bitbucket 서버: Bitbucket 서버 관리 페이지에서 서버 설정을 클릭하고 HTTP(S)를 사용하도록 설정합니다.

2단계: 활성화 노트북 실행

프록시를 사용하도록 설정하려면 다음을 수행합니다.

  1. Azure Databricks 작업 영역에 액세스 권한이 있는 작업 영역 관리자로 로그인하여 클러스터를 만듭니다.

  2. Git 프록시를 실행하기 위해 클라우드 공급자에서 사용할 수 있는 가장 작은 인스턴스 유형을 선택하는 이 Notebook을 가져옵니다.

    Notebook: Git 폴더에서 프라이빗 Git 서버 연결을 위해 Databricks Git 폴더에 Git 서버 프록시를 사용하도록 설정합니다.

  3. 클릭하여 모든을 실행하면 Notebook이 다음 작업을 수행합니다.

    • 자동 종료되지 않는 "Databricks Git 프록시"라는 단일 노드 컴퓨팅 리소스 를 만듭니다. 이 프록시 서비스는 Azure Databricks 작업 영역에서 Git 명령을 처리하고 프라이빗 Git 서버로 전달합니다.
    • Databricks Git 폴더의 Git 요청이 컴퓨팅 인스턴스를 통해 프록시되는지 여부를 제어하는 기능 플래그를 사용하도록 설정합니다.

    일반적인 일정에 따라 Git 프록시 컴퓨팅 리소스를 실행하는 작업을 만드는 것이 가장 좋습니다. 이렇게 하면 사용자가 Git 프록시 서비스를 사용할 수 있습니다.

비고

추가로 장기 실행 컴퓨팅 리소스를 실행할 경우 추가 Databricks 유닛(DBU)이 소모됩니다. 비용을 최소화하기 위해 Notebook은 저렴한 노드 형식의 단일 노드 컴퓨팅 리소스를 사용하도록 프록시를 구성합니다. 요구 사항에 맞게 컴퓨팅 옵션을 수정합니다. 가격 책정 정보는 Databricks 가격 계산기를 참조하세요.

3단계: Git 서버 구성 유효성 검사

Git 서버 구성의 유효성을 검사하려면 프록시 클러스터를 통해 프라이빗 Git 서버에서 호스트되는 리포지토리를 복제합니다. 복제가 성공하면 Git 서버 프록시가 작업 영역에서 작동하는지 확인합니다.

4단계: 프록시 사용 Git 리포지토리 만들기

사용자가 Git 자격 증명을 구성한 후에는 리포지토리를 만들거나 동기화하는 추가 단계가 필요하지 않습니다. 자격 증명을 구성하고 프로그래밍 방식으로 리포지토리에 액세스하려면 Git 자격 증명 구성 및 Azure Databricks에 원격 리포지토리 연결을 참조하세요.

전역 CAN ATTACH TO 권한 제거

Git 서버 프록시는 어떤 사용자에게도 CAN ATTACH TO 권한이 필요하지 않습니다. 사용자가 프록시 클러스터에서 임의 워크로드를 실행하지 못하도록 하려면 프록시 서버에 대한 ACL(클러스터 액세스 제어 목록) 권한을 제한합니다.

  1. 사이드바에서 컴퓨팅 을 클릭한 다음 Kebab 메뉴 아이콘 을 클릭합니다. 실행 중인 Git 서버 프록시의 컴퓨팅 항목 옆에 있는 kebab 메뉴입니다.

  2. 권한 편집을 클릭합니다.

  3. 대화 상자에서 모든 사용자에 대한 연결 가능 항목을 제거합니다.

문제 해결

이 섹션에서는 일반적인 문제와 이를 진단하는 방법을 설명합니다.

일반적인 문제에 대한 검사 목록

오류 진단을 시작하기 전에 다음을 확인합니다.

나머지 디버그 Notebook을 실행하고 결과를 캡처합니다. 문제를 해결할 수 없거나 보고된 오류가 표시되지 않으면 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 포트에 할당된 포트 번호로 설정합니다.

이러한 환경 변수를 설정하려면 다음을 수행합니다.

  1. Azure Databricks 작업 영역의 컴퓨팅 탭으로 이동합니다.
  2. Git 프록시 서비스에 대한 컴퓨팅 구성을 선택합니다.
  3. 구성 창 아래쪽에서 고급을 확장하고 Spark 탭을 선택합니다.
  4. 환경 변수 필드에 환경 변수를 추가합니다 .

프록시 클러스터에서 로그 검사

프록시 클러스터의 파일에 /databricks/git-proxy/git-proxy.log 는 디버깅에 유용한 로그가 포함되어 있습니다.

로그 파일은 .로 Data-plane proxy server binding to ('', 8000)…시작해야 합니다. 그렇지 않으면 프록시 서버가 제대로 시작되지 않았습니다. 클러스터를 다시 시작하거나 클러스터를 삭제하고 Enablement Notebook을 다시 실행합니다.

로그 파일이 이 줄로 시작하는 경우 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 파일을 확인합니다. 인증서 유효성 검사에 실패한 경우 시스템 인증서 체인에 인증 기관을 추가합니다.

  1. 브라우저 또는 다른 방법을 사용하여 루트 인증서를 추출하고 Databricks 파일 시스템에 업로드합니다.
  2. Git 폴더 Git 프록시 클러스터를 편집하여 루트 인증서 파일을 가리키도록 환경 변수를 설정합니다GIT_PROXY_CA_CERT_PATH. 환경 변수를 참조하세요.

이러한 단계를 완료한 후 클러스터를 다시 시작합니다.

자주 묻는 질문

다음은 Git 서버 프록시 구성 및 사용에 대한 일반적인 질문입니다.

Git 프록시가 실행 중인지 확인하려면 어떻게 해야 하나요?

Git 프록시 디버그 Notebook을 가져오고 실행합니다. 결과는 Git 프록시 서비스에 문제가 있는지를 보여 줍니다.

작업 영역에서 프록시 클러스터를 공유할 수 있나요?

각 Azure Databricks 작업 영역에는 자체 프록시 클러스터가 필요합니다. 여러 작업 영역에서 프록시 클러스터를 공유할 수 없으며 각 작업 영역에는 Git 프록시 서버 클러스터가 하나만 있을 수 있습니다.

프록시를 통해 일부 Git 트래픽만 라우팅할 수 있나요?

모든 Databricks Git 폴더 관련 트래픽은 공용 Git 리포지토리의 경우에도 프록시 클러스터를 통해 라우팅됩니다. Azure Databricks 작업 영역은 프록시된 리포지토리와 프록시되지 않은 리포지토리를 구분하지 않습니다.

지원되는 Git 공급자는 무엇입니까?

Databricks Git 폴더는 GitHub Enterprise, Bitbucket Server, Azure DevOps Server 및 GitLab 자체 관리형을 지원합니다. 다른 엔터프라이즈 Git 서버 공급자는 일반적인 Git 사양을 준수하는 경우에도 작동해야 합니다.

GNU PRIVACY Guard(GPG) 커밋 서명이 지원되는가요?

아니요.

SSH 전송이 지원되는가요?

아니요. HTTPS만 지원됩니다.

기본이 아닌 HTTPS 포트를 사용할 수 있나요?

"이니블먼트 노트북은 Git 서버가 기본 HTTPS 포트 443을 사용한다고 가정합니다." 다른 포트를 사용하도록 환경 변수 GIT_PROXY_CUSTOM_HTTP_PORT 를 설정합니다.

사용자가 프록시에 대한 Git URL을 변경해야 합니까?

아니요. 사용자는 일반 Git 리포지토리 URL(예: https://git.company.com/org/repo-name.git.)을 입력합니다. Databricks Git 폴더에 대한 모든 Git 트래픽은 프록시를 통해 투명하게 라우팅됩니다.

인증은 프록시에서 어떻게 작동하나요?

예, 프록시는 사용자의 Git 자격 증명을 사용하여 Git 서버에 인증합니다. 액세스는 해당 자격 증명에 지정된 권한으로 제한됩니다.