Compartilhar via


Introdução ao Git Privado sem Servidor do Azure Databricks

Observação

O Git Privado sem Servidor do Azure Databricks está em Versão Prévia Pública. Os custos de computação e rede se aplicam quando recursos de computação sem servidor se conectam a recursos externos. Consulte Noções básicas sobre os custos de rede sem servidor do Databricks para obter detalhes de cobrança.

O Git Privado sem Servidor do Azure Databricks permite que você conecte um workspace do Databricks a um servidor Git privado usando computação sem servidor e Link Privado do Azure. Um servidor Git será privado se não puder ser acessado pela Internet.

O diagrama a seguir ilustra a arquitetura geral do sistema:

Arquitetura de repositórios privados sem servidor do Databricks

Por que usar o Git privado sem servidor?

Em comparação com o proxy Git, o Git Privado sem Servidor oferece as seguintes vantagens:

  • O Git privado sem servidor adquire computação sem servidor somente quando recebe uma solicitação Git e pode ser inativo quando não estiver em uso. Por outro lado, o proxy Git exige que o cluster proxy esteja ativo quando o usuário envia uma solicitação Git.

  • O Git Privado sem servidor usa o Link Privado do Azure para se conectar com segurança à instância privada do Git.

Requirements

  • Os workspaces devem ser habilitados para Serverless.
  • O Servidor Git Privado deve estar na mesma VNet do Azure que o Standard Load Balancer.
  • O Servidor Git Privado deve ter um certificado assinado/FQDN HTTPS válido.
  • A VNet está configurada para o SLB (Standard Load Balancer) usado para o serviço de Link Privado.

Configurar o Git Privado sem Servidor

  1. Siga as etapas para configurar o Link Privado para seu servidor Git privado. Isso permite que você crie uma conexão Azure Private Link de Serverless para o back-end em sua rede atrás de um SLB.
  2. Crie uma NCC (configuração de conectividade de rede) para configurar a saída para um balanceador de carga padrão. Considerações para esta etapa:
    • Apenas um NCC pode ser configurado em um workspace de Git privado. Se o workspace precisar se conectar a vários servidores Git privados, verifique se eles podem ser conectados usando o mesmo NCC.
    • Limitações como o número de NCCs com suporte em uma região e o número de workspaces que podem ser anexados a um NCC estão documentados em Requisitos.

Configuração de conectividade de rede do Azure

  1. Obtenha um token de API da conta usando uma entidade de serviço com acesso ao nível da conta.
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}
  • Maneira alternativa de obter o token de API da conta:

    • Token de acesso para autenticação: para chamar a API REST da conta do Databricks, você deve executar a autenticação e obter um token de acesso.
    • Use um token de acesso do ID do Microsoft Entra.
BEARER_TOKEN = `az account get-access-token --resource
2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query "accessToken" -o tsv
  1. Adicione uma regra de ponto de extremidade privado para definir a lógica DNS usando a API.

No exemplo, especifique o seguinte:

  • AccountID
  • NCC ID
  • Token da conta OAuth
  • ID do recurso de serviço de link privado
  • FQDN do Git Server na lista do 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"
]
}
'

Resposta

{"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. Aguarde alguns minutos após configurar as regras do endpoint privado do NCC. A regra de ponto de extremidade privado aparece no NCC sem um subrecurso especificado com um status pendente.
  2. O serviço de Link Privado configurado na Etapa 1 também tem uma conexão de ponto de extremidade privado pendente pronta para aprovação. Aprove a conexão.

Conexões de endpoint privado

  1. Volte para o NCC no console da conta e verifique se a conexão foi estabelecida.
  2. Vá para o espaço de trabalho e execute uma operação Git. Você deve ver um indicador de interface do usuário para o Git privado sem servidor. Essa página pode demorar alguns segundos para carregar enquanto o processamento serverless do proxy Git está sendo inicializado.

Depois de configurá-lo, o Git Privado sem Servidor terá precedência sobre outras formas de conectividade privada do Git que você já provisionou, como o proxy Git clássico. Se você tiver um cluster de proxy Git clássico em execução, encerre-o depois de configurar o Git Privado sem Servidor.

Configurações adicionais

Personalize suas operações git usando o arquivo config.json.

  1. Crie um arquivo de configuração em /Workspace/.git_settings/config.json, seguindo a especificação abaixo.
  2. Conceda a todos os usuários do Git permissões de exibição para o arquivo de configuração e todos os arquivos de certificado de AC referenciados por ele.
  3. Interaja com o Git para validar a conectividade com o git remoto, como clonar uma pasta Git para um repositório remoto no servidor.
  4. As alterações no arquivo de configuração podem levar até 1 minuto para serem aplicadas.

Estrutura de arquivo de configuração de nível superior

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

default seção (opcional)

Os padrões globais são aplicados a todas as operações do Git, a menos que sejam substituídos por um remoto específico.

Campo Tipo Obrigatório Valor Padrão Description
sslVerify boolean Não true Se os certificados SSL devem ser verificados.
caCertPath cadeia Não "" (vazio) Caminho do espaço de trabalho para um certificado de autoridade certificadora personalizado.
Proxy http cadeia Não "" (vazio) Proxy HTTP para rotear o tráfego do Git.
customHttpPort inteiro Não Unspecified Porta HTTP personalizada do servidor Git.

remotes seção (opcional)

Uma lista de objetos que definem as configurações para servidores Git remotos individuais. Essas configurações substituem o bloco default para cada controle remoto.

Campo Tipo Obrigatório Valor Padrão Description
urlPrefix cadeia Yes Prefixo para corresponder às URLs remotas do Git.
sslVerify boolean Não true Se os certificados SSL devem ser verificados.
caCertPath cadeia Não "" (vazio) Caminho do workspace para a localização de um certificado de autoridade certificadora personalizado para esta conexão remota.
Proxy http cadeia Não "" (vazio) Proxy HTTP para rotear o tráfego do Git.
customHttpPort inteiro Não Unspecified Porta HTTP personalizada do servidor Git.

Configuração de exemplo sem configuração específica remota

{
  "default": {
    "sslVerify": false
  }
}

Exemplo de configuração completa

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

Anotações

  • A default seção deve estar presente, mesmo que apenas parcialmente.
  • A remotes lista é opcional e pode ser omitida inteiramente.
  • Cada entrada remota deve conter pelo menos urlPrefix.
  • Se você não especificar um valor para um campo, ele usará o valor padrão.
  • Campos desconhecidos são ignorados.

Limitações

  • No momento, o log de proxy sem servidor não está disponível.
  • Disponível somente em regiões sem servidor do Azure.