Configurar a conectividade Git privada para pastas Git do Azure Databricks (Repos)

Conheça e configure o proxy de servidor Git para pastas Git do Databricks, um serviço configurável que permite usar um proxy de comandos Git nas pastas Git do workspace do Databricks para os repositórios locais atendidos pelo GitHub Enterprise Server, pelo Azure DevOps Server, pelo Bitbucket Server e pelo GitLab autogerenciado.

Observação

Os usuários com um proxy de servidor Git do Databricks configurado durante a versão prévia devem atualizar as permissões de cluster para obter o melhor desempenho. Consulte Remover permissões CAN_ATTACH_TO globais.

O proxy de servidor Git do Databricks foi projetado especificamente para funcionar com a versão do DBR incluída no notebook de configuração. Os usuários são desencorajados a atualizar a versão DBR do cluster de proxy.

O que é proxy de servidor Git para pastas Git do Databricks?

O proxy de servidor Git para pastas Git do Databricks é um recurso que permite usar um proxy de comandos Git do workspace do Azure Databricks para um servidor Git local.

As pastas Git do Databricks (anteriormente Repos) representam seus repositórios Git conectados como pastas. O conteúdo dessas pastas é controlado por versão ao sincronizá-las com o repositório Git conectado. Por padrão, as pastas Git podem sincronizar somente com provedores Git públicos (como GitHub público, GitLab, Azure DevOps e outros). No entanto, se você hospedar seu servidor Git local (como o GitHub Enterprise Server, o Bitbucket Server ou o GitLab autogerenciado), deve usar o proxy de servidor Git com pastas Git para fornecer acesso ao Databricks no servidor Git. O servidor Git deve estar acessível no plano de dados do Azure Databricks (nó do driver).

Se sua rede corporativa for apenas acesso privado (VPN) (sem acesso público), você deverá executar um proxy de servidor Git para acessar repositórios Git localizados fora dela e adicionar pastas Git aos seus workspaces.

Como funciona o proxy de servidor Git para pastas Git do Databricks?

O proxy de servidor Git para pastas Git do Databricks realiza proxies de comandos Git do painel de controle do Databricks em um “cluster proxy” em execução no plano de computação do workspace do Databricks. Nesse contexto, o cluster proxy é um cluster configurado para executar um serviço de proxy para comandos Git das pastas Git do Databricks para o repositório Git auto-hospedado. Esse serviço proxy recebe os comandos Git do painel de controle do Databricks e os encaminha para a instância do servidor Git.

O diagrama abaixo ilustra a arquitetura geral do sistema:

Diagrama que mostra como o proxy de servidor Git para pastas Git do Databricks está configurado para ser executado a partir do plano de computação do cliente

Atualmente, um proxy de servidor Git não requer mais permissão CAN_ATTACH_TO para todos os usuários. Administradores com clusters proxy existentes agora podem modificar a permissão de ACL do cluster para habilitar esse recurso. Para habilitá-lo:

  1. Selecione Computação na barra lateral e, em seguida, clique no menu kebab Menu kebab ao lado da entrada de computação para o proxy de servidor Git que você está executando:

    Selecione Computação na barra lateral, selecione o kebab à direita do recurso de computação do seu servidor proxy Git

  2. Na caixa de diálogo, remova a entrada Pode ser anexado a para Todos os Usuários:

    Na caixa de diálogo modal que aparece, clique em X à direita de Todos os Usuários, Pode Anexar a

Como configurar o proxy de servidor Git para pastas Git do Databricks?

Esta seção descreve como preparar a instância do servidor Git para o proxy de servidor Git para pastas Git do Databricks, criar o proxy e validar a configuração.

Antes de começar

Antes de habilitar o proxy, considere os seguintes pré-requisitos e tarefas de planejamento:

  • Seu workspace tem o recurso de pastas Git do Databricks habilitado.
  • Sua instância do servidor Git está acessível no VPC do plano de computação do espaço de trabalho do Azure Databricks e tem HTTPS e tokens de acesso pessoal (PATs) habilitados.

Observação

O proxy do servidor Git para Databricks funciona em todas as regiões compatíveis com seu VPC.

Etapa 1: preparar a instância do servidor Git

Importante

Você precisa ser um administrador no workspace com direitos de acesso para criar um recurso de computação e executar essa tarefa.

Para configurar a instância do servidor Git:

  1. Dê ao nó do driver do cluster proxy acesso no servidor Git.

    O servidor Git empresarial pode ter um allowlist dos endereços IP a partir dos quais o acesso é permitido.

    1. Associe um endereço IP de saída estático ao tráfego originado no cluster proxy. Você pode fazer isso usando o Firewall do Azure ou um dispositivo de saída.
    2. Adicione o endereço IP da etapa anterior à lista de permissões do servidor Git.
  2. Defina a instância do servidor Git para permitir o transporte HTTPS.

    • No GitHub Enterprise, confira Qual URL remota devo usar na ajuda do GitHub Enterprise.
    • No Bitbucket, vá para a página de administração do servidor Bitbucket e selecione as configurações do servidor. Na seção de hospedagem HTTP(S) SCM, marque a caixa de seleção HTTP(S) habilitado.

Etapa 2: executar o notebook de habilitação

Para habilitar o proxy:

  1. Faça logon no workspace do Azure Databricks como administrador de workspace com direitos de acesso para criar um cluster.

  2. Importe esse notebook, o que irá escolher o menor tipo de instância disponível no seu provedor de nuvem para executar o proxy do Git:

    Notebook: habilite o proxy do servidor do Git para as pastas do Git do Databricks para conectividade com o servidor privado do Git nas pastas do Git.

  3. Clique em "Executar Tudo" para executar o notebook, que executa as seguintes tarefas:

    • Criar um recurso de computação de nó único chamado "Proxy do Git do Databricks", que não é terminado automaticamente. Trata-se do "serviço de proxy do Git" que irá processar e encaminhar os comandos do Git do workspace do seu workspace do Azure Databricks para o servidor do Git local.
    • Habilitar um sinalizador de recurso que controle se as solicitações do Git nas pastas do Git do Databricks fazem proxy por meio da instância de computação.

    Como uma boa prática, pense em criar um trabalho simples para executar o recurso de computação do proxy do Git. Pode ser um notebook simples que imprima ou registre o status em log como "O serviço de proxy do Git está em execução". Definir o trabalho a ser executado em intervalos de tempo regulares para garantir que o serviço de proxy do Git esteja sempre disponível para seus usuários.

Observação

A execução de um cluster de execução prolongada adicional para hospedar o software de proxy incorre em DBUs extras. Para minimizar os custos, o notebook configura o proxy para usar um cluster de nó único com um tipo de nó econômico. No entanto, talvez você queira modificar as opções de computação para adaptá-las às suas necessidades. Para obter mais informações sobre os preços da instância de computação, confira Calculadora de preços do Databricks.

Etapa 3: validar a configuração do servidor Git

Para validar a configuração do servidor Git, tente clonar um repositório hospedado no servidor Git privado por meio do cluster proxy. Um clone bem-sucedido indica que você habilitou o proxy do servidor Git para o workspace.

Etapa 4: criar repositórios habilitados para proxy

Depois que os usuários configuram suas credenciais do Git, nenhuma etapa adicional é necessária para criar ou sincronizar os repositórios. Para configurar as credenciais e criar um repositório nas pastas Git do Databricks, confira Configurar as credenciais do Git e conectar um repositório remoto ao Azure Databricks.

Remover permissões CAN_ATTACH_TO globais

Os administradores com clusters proxy existentes agora podem modificar a permissão de ACL do cluster para aproveitar o comportamento de proxy do servidor Git em disponibilidade geral.

Se você configurou anteriormente o proxy do servidor Git do Databricks com privilégios de CAN_ATTACH_TO, use as seguintes etapas para remover essas permissões:

  1. Selecione Computação na barra lateral e, em seguida, clique no menu kebab Menu kebab ao lado da entrada de computação para o proxy do servidor Git que você está executando:

    Selecione Computação na barra lateral, selecione o kebab à direita do recurso de computação do seu servidor proxy Git

  2. Na caixa de diálogo, remova a entrada Pode ser anexado a para Todos os Usuários:

    Na caixa de diálogo modal que aparece, clique em X à direita de Todos os Usuários, Pode Anexar a

Solução de problemas

Você encontrou um erro ao configurar o proxy de servidor Git para as pastas Git do Databricks? Veja abaixo alguns problemas comuns e as maneiras de diagnosticá-los de forma mais eficaz.

Lista de verificação de problemas comuns

Antes de começar a diagnosticar um erro, confirme se você concluiu as seguintes etapas:

  • Confirme se o cluster proxy está em execução.
  • Confirme se você é um administrador do workspace.
  • Execute o notebook de habilitação novamente e capture os resultados, se ainda não o tiver feito. Se você não conseguir depurar o problema, o Suporte do Databricks poderá examinar os resultados. Você pode exportar e enviar o notebook de habilitação como arquivo DBC.

Alterar a configuração do proxy Git

Se o serviço de proxy Git não estiver funcionando com a configuração padrão, você pode definir variáveis de ambiente específicas para fazer alterações nele para oferecer melhor suporte à sua infraestrutura de rede.

Use as seguintes variáveis de ambiente para atualizar a configuração do serviço de proxy Git:

Variável de ambiente Formatar Descrição
GIT_PROXY_ENABLE_SSL_VERIFICATION true/false Defina isso como false se você estiver usando um certificado autoassinado para seu servidor Git privado.
GIT_PROXY_CA_CERT_PATH Caminho do arquivo (string) Defina isso como o caminho para um arquivo de certificado de autoridade de certificação usado para verificação SSL. Exemplo: /FileStore/myCA.pem
GIT_PROXY_HTTP_PROXY https://<hostname>:<port #> Defina isso como o URL HTTPS do proxy de firewall da sua rede para tráfego HTTP.
GIT_PROXY_CUSTOM_HTTP_PORT Número da porta (inteiro) Defina isso como o número da porta atribuído à porta HTTP do servidor Git.

Para definir essas variáveis de ambiente, acesse a guia Computação no workspace do Azure Databricks e selecione a configuração de computação para o serviço de proxy do Git. Na parte inferior do painel Configuração, expanda Opções avançadas e selecione a guia Spark nele. Defina uma ou mais dessas variáveis de ambiente adicionando-as à área de texto Variáveis de ambiente.

A página de configuração de computação do Databricks em que você define variáveis de ambiente para um proxy Git

Inspecionar logs no cluster proxy

O arquivo em /databricks/git-proxy/git-proxy.log do cluster proxy contém logs úteis para fins de depuração.

O arquivo de log deve começar com a linha Data-plane proxy server binding to ('', 8000)… Se isso não acontecer, isso significa que o servidor proxy não foi iniciado corretamente. Tente reiniciar o cluster ou exclua o cluster criado e execute o notebook de habilitação novamente.

Se o arquivo de log começar com essa linha, examine as instruções de log que o seguem para cada solicitação Git iniciada por uma operação Git nas pastas Git do Databricks.

Por exemplo:

  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`

Os logs de erros gravados nesse arquivo podem ser úteis para ajudar você ou os problemas de depuração do Suporte ao Databricks.

Mensagens de erro comuns e as respectivas resoluções

  • Não foi possível estabelecer uma conexão segura devido a problemas de SSL

    Você pode ver os seguintes erros:

      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 SLL problems
    

    Muitas vezes, isso significa que você está usando um repositório que requer certificados SSL especiais. Verifique o conteúdo do arquivo /databricks/git-proxy/git-proxy.log no cluster proxy. Se ele indicar que a validação do certificado falhou, você deverá adicionar o certificado de autoridade à cadeia de certificados do sistema. Primeiro, extraia o certificado raiz (usando o navegador ou outra opção) e carregue-o no DBFS. Em seguida, edite o cluster Proxy Git das pastas Git para usar a variável de ambiente GIT_PROXY_CA_CERT_PATH para apontar para o arquivo de certificado raiz. Para obter mais informações sobre como editar as variáveis de ambiente do cluster, confira Variáveis de ambiente.

    Depois de concluir essa etapa, reinicie o cluster.

  • Falha ao clonar o repositório com erro "Credenciais Git ausentes/inválidas"

    Primeiro, verifique se você configurou as credenciais do Git em Configurações do Usuário.

    Você pode encontrar este erro:

      Error: Invalid Git credentials. Go to User Settings -> Git Integration and check that your personal access token or app password has the correct repo access.
    

    Se sua organização estiver usando o SSO SAML, verifique se o token foi autorizado (isso pode ser feito na página de gerenciamento do PAT (Personal Access Token) do servidor Git).

Perguntas frequentes

Quais são as implicações de segurança do proxy do servidor Git?

O mais importante a saber é o seguinte:

  • O proxy não afeta a arquitetura de segurança do plano de controle do Databricks.
  • Você só pode ter um cluster de servidor proxy Git por workspace.

Sim. Na versão atual, o workspace do Azure Databricks não diferencia entre repositórios com proxy e sem proxy.

O recurso de proxy Git funciona com outros provedores de servidor empresarial Git?

As pastas Git do Databricks são compatíveis com GitHub Enterprise, Bitbucket Server, Azure DevOps Server e GitLab autogerenciado. Outros provedores de servidores Git empresariais também devem funcionar se estiverem em conformidade com as especificações comuns do Git.

As pastas Git do Databricks dão suporte à assinatura GPG de commits?

Não.

As pastas Git do Databricks dão suporte ao transporte SSH para operações Git?

Não. Há suporte somente para HTTPS.

Há suporte para o uso de uma porta HTTPS não padrão no servidor Git?

No momento, o notebook de habilitação pressupõe que o servidor Git usa a porta HTTPS padrão 443. Você pode definir a variável de ambiente GIT_PROXY_CUSTOM_HTTP_PORT para substituir o valor da porta por um valor preferencial.

Você pode compartilhar um proxy com vários workspaces ou precisa de um cluster proxy por workspace?

Você precisa de um cluster proxy por workspace do Azure Databricks.

O proxy funciona com o controle de versão de notebook único herdado?

Não, o proxy não funciona com o controle de versão de notebook único herdado. Os usuários devem migrar para o controle de versão das pastas Git do Databricks.

O Databricks pode ocultar URLs de servidor Git que são usam um proxy? Os usuários poderiam inserir as URLs originais do servidor Git, em vez de URLs com proxy?

Sim para ambas as perguntas. Os usuários não precisam ajustar o comportamento para o proxy. Com a implementação do proxy atual, todo o tráfego Git para pastas Git do Databricks é encaminhado através do proxy. Os usuários inserem a URL de repositório Git normal, como https://git.company.com/org/repo-name.git.

Com que frequência os usuários trabalharão com as URLs do Git?

Normalmente, um usuário apenas adiciona a URL do Git quando cria um novo repositório ou faz check-out de um repositório existente do qual ainda não fez check-out.

O recurso usa um proxy de forma transparente nos dados de autenticação para o servidor Git?

Sim, o proxy usa o token do servidor Git da conta de usuário para autenticar no servidor Git.

Existe acesso do Databricks ao código do servidor Git?

O serviço proxy do Azure Databricks acessa o repositório Git no servidor Git usando a credencial fornecida pelo usuário e sincroniza todos os arquivos de código no repositório com o repositório. O acesso é restrito pelas permissões especificadas no PAT (token de acesso pessoal) fornecido pelo usuário.