Настройте Databricks Serverless Private Git

Замечание

Databricks Serverless Private Git находится в общедоступной предварительной версии. Затраты на вычислительные ресурсы и сети применяются при подключении бессерверных вычислительных ресурсов к внешним ресурсам. Сведения о выставлении счетов см. в статье Сведения о расходах на сеть в Databricks.

Databricks Serverless Private Git позволяет подключить рабочую область Databricks к частному серверу Git с помощью бессерверных вычислений и Приватного канала Azure. Сервер Git является частным, если пользователи Интернета не могут получить к нему доступ.

На следующей схеме показана общая системная архитектура:

Безсерверная частная архитектура Git в Databricks

Почему бессерверные частные Git?

По сравнению с прокси-сервером Git, бессерверный частный Git предлагает следующие преимущества:

  • Бессерверный частный Git получает бессерверные вычислительные мощности только при получении запроса на выполнение Git и остается неактивным при отсутствии использования. Напротив, прокси-сервер Git требует, чтобы кластер прокси-сервера был активным при отправке запроса Git.
  • Бессерверный Private Git использует Приватный канал Azure для безопасного подключения к частному экземпляру Git.

Требования

  • Включите бессерверные вычисления для рабочей области.
  • Поместите частный сервер Git в ту же виртуальную сеть Azure, что и стандартный балансировщик нагрузки.
  • Убедитесь, что частный сервер Git имеет подписанный сертификат и допустимое полное доменное имя HTTPS (FQDN).
  • Настройте виртуальную сеть (VNet) со Стандартным модулем балансировки нагрузки (SLB) для службы Приватный канал.

Настройте бессерверный частный Git

  1. Выполните действия, чтобы настроить частное подключение к ресурсам в виртуальной сети. Это позволяет создать соединение Приватный канал Azure из бессерверных систем к серверным системам в вашей сети за стандартным балансировщиком нагрузки (SLB).
  2. Создайте конфигурацию сетевого подключения (NCC), чтобы настроить исходящий трафик в стандартную подсистему балансировки нагрузки.
    • Вы можете настроить только одну NCC для каждой рабочей области для частного Git. Если рабочая область подключается к нескольким частным серверам Git, они должны использовать один и тот же NCC.
    • Сведения об ограничениях NCC, таких как региональные ограничения и ограничения на подключение рабочих областей, см. в разделе Что такое конфигурация сетевого подключения (NCC)?.

Конфигурация сетевого подключения Azure

  1. Получите токен 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'

Ответ содержит маркер доступа:

{ "access_token": "...", "scope": "all-apis", "token_type": "Bearer", "expires_in": 3600 }

Кроме того, можно использовать токен доступа Microsoft Entra ID:

BEARER_TOKEN=$(az account get-access-token --resource \
  2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query "accessToken" -o tsv)
  1. Добавьте правило частной конечной точки для определения логики DNS с помощью API.

В примере укажите следующее:

  • ID счета
  • Идентификатор NCC
  • OAuth-токен учетной записи
  • Идентификатор ресурса службы Приватный канал
  • Полное доменное имя Git-сервера в списке domain_name
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"]
}
  1. Подождите несколько минут после настройки правил частной конечной точки NCC. NCC отображает правило для частной конечной точки, находящееся в состоянии ожидания.
  2. Утвердите ожидающее подключение частной конечной точки в службе Приватный канал, настроенной на шаге 1.

Подключения к частной конечной точке

  1. Вернитесь в NCC в консоли учетной записи и убедитесь, что соединение было установлено.
  2. Выполните операцию Git в рабочей области. Индикатор пользовательского интерфейса подтверждает, что бессерверная частная Git активна. Индикатор может появиться через несколько секунд, пока запускаются бессерверные вычисления.

После настройки бессерверный частный Git имеет приоритет над другими формами частного подключения Git, которые вы уже настроили, например, классический прокси-сервер Git. Если у вас есть классический прокси-кластер Git, завершите его после настройки бессерверного частного Git.

Дополнительные конфигурации

Настройка операций Git с помощью файла конфигурации.

  1. Создайте файл конфигурации в /Workspace/.git_settings/config.json, согласно приведенной ниже спецификации.
  2. Предоставьте всем пользователям Git разрешения на просмотр файла конфигурации и всех файлов сертификатов ЦС, на которые он ссылается.
  3. Проверьте подключение к удаленному Git, выполнив операцию Git, например клонирование папки Git.
  4. Система может занять до одной минуты, чтобы применить изменения файла конфигурации.

Структура файла конфигурации верхнего уровня

{
  "default": { ... },  // Optional global settings
  "remotes": [ ... ]   // Optional list of per-remote settings
}

default раздел (необязательно)

Глобальные значения по умолчанию применяются ко всем операциям Git, если они не переопределяются определённым удалённым репозиторием.

Поле Тип Обязательно Значение по умолчанию Description
sslVerify булевый нет true Следует ли проверять SSL-сертификаты.
caCertPath струна нет "" (пустой) Путь в рабочей области к пользовательскому сертификату Центра сертификации.
httpProxy струна нет "" (пустой) HTTP-прокси для направления трафика Git.
customHttpPort целое число нет Не определено Пользовательский HTTP-порт сервера Git.

remotes раздел (необязательно)

Список объектов, определяющих параметры для отдельных удаленных серверов Git. Эти параметры переопределяют default блок на индивидуальной основе для каждого удаленного устройства.

Поле Тип Обязательно Значение по умолчанию Description
URL-префикс струна Да Префикс для сопоставления удаленных URL-адресов Git.
sslVerify булевый нет true Следует ли проверять SSL-сертификаты.
caCertPath струна нет "" (пустой) Путь рабочего пространства к пользовательскому пути сертификата Центра сертификации для этого удаленного объекта.
httpProxy струна нет "" (пустой) HTTP-прокси для направления трафика Git.
настраиваемый HTTP порт целое число нет Не определено Пользовательский HTTP-порт сервера Git.

Пример конфигурации без удаленно-специфических настроек

{
  "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
    }
  ]
}

Примечания.

  • Раздел default должен присутствовать по крайней мере частично.
  • Раздел remotes является необязательным. Если включено, каждая запись должна содержать urlPrefix поле.
  • Поля, не указанные по умолчанию, используют значения по умолчанию.
  • Неизвестные поля игнорируются.

Ограничения

  • Бессерверные журналы прокси-сервера недоступны.
  • Бессерверный частный Git доступен только в бессерверных регионах Azure.