비고
Azure Databricks 서버리스 프라이빗 Git은 공개 미리 보기로 제공됩니다. 컴퓨팅 및 네트워킹 비용은 서버리스 컴퓨팅 리소스가 외부 리소스에 연결할 때 적용됩니다. 청구 세부 정보는 Databricks 서버리스 네트워킹 비용 이해 를 참조하세요.
Azure Databricks 서버리스 프라이빗 Git을 사용하면 서버리스 컴퓨팅 및 Azure Private Link를 사용하여 Databricks 작업 영역을 프라이빗 Git 서버에 연결할 수 있습니다. 인터넷에서 액세스할 수 없는 경우 Git 서버는 프라이빗 서버입니다.
다음 다이어그램에서는 전체 시스템 아키텍처를 보여 줍니다.
서버리스 프라이빗 Git을 사용하는 이유는 무엇인가요?
Git 프록시에 비해 서버리스 프라이빗 Git은 다음과 같은 이점을 제공합니다.
서버리스 Private Git은 Git 요청을 받을 때만 서버리스 컴퓨팅을 획득하며 사용하지 않을 때는 비활성 상태일 수 있습니다. 반면, Git 프록시는 사용자가 Git 요청을 제출할 때 프록시 클러스터가 활성화되어야 합니다.
서버리스 프라이빗 Git은 Azure Private Link를 사용하여 프라이빗 Git 인스턴스에 안전하게 연결합니다.
요구 사항
- 서버리스 기능을 활성화하려면 작업 공간을 설정해야 합니다.
- 프라이빗 Git 서버는 표준 Load Balancer와 동일한 Azure VNet에 있어야 합니다.
- 프라이빗 Git 서버에는 서명된 인증서/유효한 HTTPS FQDN이 있어야 합니다.
- VNet은 Private Link 서비스에 사용되는 SLB(표준 Load Balancer)에 대해 구성됩니다.
서버리스 프라이빗 Git 설정
- 단계에 따라 프라이빗 Git 서버에 대한 Private Link를 설정합니다. 이렇게 하면 서버리스에서 SLB 뒤에 있는 네트워크의 백 엔드로 Azure Private Link 연결을 만들 수 있습니다.
- NCC(네트워크 연결 구성)를 만들어 표준 부하 분산 장치에 송신을 구성합니다. 이 단계의 고려 사항:
- 프라이빗 Git의 작업 영역에 대해 하나의 NCC만 구성할 수 있습니다. 작업 영역이 여러 개인 Git 서버에 연결해야 하는 경우 동일한 NCC를 사용하여 연결할 수 있는지 확인합니다.
- 지역에서 지원되는 NCC 수 및 NCC에 연결할 수 있는 작업 영역 수와 같은 제한 사항은 요구 사항에 설명되어 있습니다.
- 계정 수준 액세스 권한이 있는 서비스 주체를 사용하여 계정 api 토큰을 가져옵니다.
curl
--location 'https://accounts.azuredatabricks.net/oidc/accounts/{accountid}/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=SP_CLIENT_ID_HERE' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default' \
--data-urlencode 'client_secret=SP_CLIENT_SECRET_HERE'
Response
{"access_token":"...","scope":"all-apis","token_type":"Bearer","expires_in":3600}
계정 API 토큰을 가져오는 대체 방법:
- 인증을 위한 액세스 토큰: Databricks 계정 REST API를 호출하려면 인증을 수행하고 액세스 토큰을 가져와야 합니다.
- Microsoft Entra ID 액세스 토큰을 사용합니다.
BEARER_TOKEN = `az account get-access-token --resource
2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query "accessToken" -o tsv
- API를 사용하여 DNS 논리를 정의하는 프라이빗 엔드포인트 규칙을 추가합니다.
예제에서 다음을 지정합니다.
- 계정 ID
- NCC ID
- 계정 OAuth 토큰
- Private Link 서비스 리소스 ID
- domain_name 목록에 있는 Git Server의 FQDN
curl --location 'https://accounts.azuredatabricks.net/api/2.0/accounts/{accountid}/network-connectivity-configs/{nccid}/private-endpoint-rules' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer BEARER_TOKEN' \
--data '{
"resource_id": "/subscriptions/3f262328b/resourceGroups/rg/providers/Microsoft.Network/privateLinkServices/example",
"domain_names": [
"git-server.contoso.com"
]
}
'
응답
{"rule_id":"843ba2e5-bbbb-bbbb-bbbb-7f0d55555215","network_connectivity_config_id":"5a9bdc5f-c43d-41cd-9a6d-1b653e20c7d2","resource_id":"/subscriptions/3f262328b/resourceGroups/rg/providers/Microsoft.Network/privateLinkServices/example","endpoint_name":"databricks-5a9bdc5f-c43d-41cd-9a6d-1b653e20c7d2-pe-99cbbac3","connection_state":"PENDING","creation_time":1740000647980,"updated_time":1740000647949,"domain_names":["git-server.contoso.com"]}
- NCC 프라이빗 엔드포인트 규칙을 설정한 후 몇 분 정도 기다립니다. 프라이빗 엔드포인트 규칙은 보류 중인 상태의 지정된 하위 리소스 없이 NCC에 나타납니다.
- 1단계에서 구성된 Private Link 서비스에는 승인을 기다리고 있는 보류 중인 프라이빗 엔드포인트 연결도 있습니다. 이 연결을 승인합니다.
- 계정 콘솔 내의 NCC로 돌아가서 설정되었는지 확인합니다.
- 작업 영역으로 이동하여 Git 작업을 시도합니다. 서버리스 프라이빗 Git에 대한 UI 표시기가 표시됩니다. 이 페이지는 Git 프록시용 서버리스 컴퓨팅이 초기화되는 동안 몇 초 동안 로드될 수 있습니다.
구성한 후 서버리스 프라이빗 Git은 클래식 Git 프록시와 같이 이미 프로비전한 다른 형태의 프라이빗 Git 연결보다 우선합니다. 클래식 Git 프록시 클러스터가 실행 중인 경우 서버리스 프라이빗 Git을 설정한 후 종료합니다.
추가 구성
config.json 파일을 사용하여 git 작업을 사용자 지정합니다.
- 아래 사양에
/Workspace/.git_settings/config.json따라 구성 파일을 만듭니다. - 모든 Git 사용자에게 구성 파일 및 해당 파일이 참조하는 CA 인증서 파일에 대한 보기 권한을 부여합니다.
- Git과 상호 작용하여 서버의 원격 리포지토리에 대한 Git 폴더 복제와 같이 Git 원격에 대한 연결의 유효성을 검사합니다.
- 구성 파일의 변경 내용을 적용하는 데 최대 1분이 걸릴 수 있습니다.
최상위 구성 파일 구조
{
"default": { ... }, // Optional global settings
"remotes": [ ... ] // Optional list of per-remote settings
}
default 섹션(선택 사항)
전역 기본값은 특정 원격으로 재정의되지 않는 한 모든 Git 작업에 적용됩니다.
| 분야 | 유형 | 필수 | 기본값 | Description |
|---|---|---|---|---|
| sslVerify | 불리언 | 아니오 | true | SSL 인증서를 확인할지 여부입니다. |
| caCertPath | 문자열 | 아니오 | ""(비어 있음) | 사용자 지정 CA 인증서에 대한 작업 영역 경로입니다. |
| http프록시 | 문자열 | 아니오 | ""(비어 있음) | Git 트래픽을 라우팅하는 HTTP 프록시입니다. |
| 사용자 정의 HTTP 포트 | integer | 아니오 | 지정되지 않음 | Git 서버의 사용자 지정 HTTP 포트입니다. |
remotes 섹션(선택 사항)
개별 원격 Git 서버에 대한 설정을 정의하는 개체 목록입니다. 이러한 설정은 default 블록을 원격별로 재정의합니다.
| 분야 | 유형 | 필수 | 기본값 | Description |
|---|---|---|---|---|
| urlPrefix | 문자열 | Yes | — | Git 원격 URL과 일치하는 접두사입니다. |
| sslVerify | 불리언 | 아니오 | true | SSL 인증서를 확인할지 여부입니다. |
| caCertPath | 문자열 | 아니오 | ""(비어 있음) | 이 원격에 대한 사용자 지정 CA 인증서 경로에 대한 작업 영역 경로입니다. |
| http프록시 | 문자열 | 아니오 | ""(비어 있음) | Git 트래픽을 라우팅하는 HTTP 프록시입니다. |
| 사용자 정의 HTTP 포트 | integer | 아니오 | 지정되지 않음 | Git 서버의 사용자 지정 HTTP 포트입니다. |
원격 특정 구성이 없는 예제 구성
{
"default": {
"sslVerify": false
}
}
전체 구성 예제
{
"default": {
"sslVerify": true,
"caCertPath": "/Workspace/my_ca_cert.pem",
"httpProxy": "https://git-proxy-server.company.com",
"customHttpPort": "8080"
},
"remotes": [
{
"urlPrefix": "https://my-private-git.company.com/",
"caCertPath": "/Workspace/my_ca_cert_2.pem"
},
{
"urlPrefix": "https://another-git-server.com/project.git",
"sslVerify": false
}
]
}
비고
- 섹션은 부분적으로만 존재하더라도 반드시 있어야 합니다.
- 목록은
remotes선택 사항이며 완전히 생략할 수 있습니다. - 각 원격 항목에는 적어도
urlPrefix가 포함되어야 합니다. - 필드에 대한 값을 지정하지 않으면 기본값을 사용합니다.
- 알 수 없는 필드는 무시됩니다.
제한점
- 서버리스 프록시 로그는 현재 사용할 수 없습니다.
- Azure 서버리스 지역에서만 사용할 수 있습니다.