Connettiti ai repository GitHub Enterprise ospitati in una rete privata

Questa pagina descrive come connettersi ai repository GitHub Enterprise ospitati in una rete privata utilizzando Developer Connect e Service Directory. Puoi completare queste attività utilizzando la console Google Cloud o Google Cloud CLI.

Queste istruzioni sono destinate a sviluppatori di applicazioni, amministratori di piattaforme e responsabili della sicurezza che vogliono utilizzare i repository del codice sorgente di GitHub Enterprise con Google. In particolare, puoi utilizzare i repository GitHub Enterprise con Gemini Code Assist.

Per saperne di più su Developer Connect, consulta la panoramica di Developer Connect.

Prima di iniziare

  1. Accedi al tuo Account Google.

    Se non ne hai già uno, registrati per creare un nuovo account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Developer Connect and Service Directory APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Developer Connect and Service Directory APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. L'abilitazione di Developer Connect abilita anche l'API Secret Manager.

  9. Assicurati di avere accesso a un account su GitHub Enterprise.

    Per proteggere il lavoro del tuo team, ti consigliamo di completare le attività di questa guida utilizzando un account bot o un account condiviso dal tuo team, non un account personale.

  10. Assicurati di essere proprietario di un repository GitHub Enterprise o di disporre delle autorizzazioni a livello di amministratore per un repository condiviso.
  11. Quando utilizzi un repository in un'organizzazione GitHub Enterprise, assicurati di disporre delle autorizzazioni GitHub App Manager.

  12. Assicurati di disporre di una risorsa di servizio Service Directory per la connessione a reti private oppure crea una risorsa di servizio Service Directory. Puoi creare la risorsa di servizio Service Directory nello stesso progetto che utilizzi con Developer Connect oppure puoi utilizzare un progetto diverso.

    Per le connessioni a reti esterne a Google Cloud, potrebbe essere necessario configurare Service Directory in modo diverso. Vedi Utilizzare Service Directory per raggiungere gli host al di fuori di Google Cloud.

  13. (Facoltativo) Crea una chiave di crittografia gestita dal cliente (CMEK) per criptare i secret di autenticazione creati da Developer Connect.
  14. (Facoltativo) Per utilizzare le istruzioni della riga di comando in questa guida, completa i seguenti passaggi:
    1. Installa Google Cloud CLI. Se hai già installato gcloud CLI, assicurati di avere l'ultima versione disponibile eseguendo gcloud components update.
    2. Crea un service account Developer Connect eseguendo questo comando, dove PROJECT_ID è il tuo Google Cloud ID progetto:
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

Concedi le autorizzazioni IAM richieste

Per ottenere le autorizzazioni necessarie per creare connessioni e link, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Se non sei il proprietario del progetto: Amministratore di Developer Connect (roles/developerconnect.admin) sul tuo account utente.
  • Se prevedi di utilizzare una CMEK per criptare i secret creati da Developer Connect: Autore crittografia/decrittografia CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) sul service account Secret Manager.
  • Se prevedi di utilizzare gcloud CLI per completare i passaggi di questa guida: Ruolo Amministratore Secret Manager (roles/secretmanager.admin) nell'account di servizio Developer Connect.
  • Se prevedi di utilizzare la Google Cloud console per completare i passaggi descritti in questa guida: Project IAM Admin (roles/resourcemanager.projectIamAdmin) sul tuo account utente.

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Concedi le autorizzazioni per utilizzare Service Directory

Completa i seguenti passaggi per consentire a Developer Connect di utilizzare Service Directory e a Service Directory di accedere alla risorsa di rete VPC.

  1. Concedi le autorizzazioni all'account di servizio Developer Connect per utilizzare Service Directory eseguendo i seguenti comandi:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
    SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-devconnect.iam.gserviceaccount.com"
    
    gcloud projects add-iam-policy-binding SERVICE_DIRECTORY_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.viewer"
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: l'ID progetto per il progetto Google Cloud che contiene la risorsa di servizio Service Directory.
  2. Concedi le autorizzazioni a Service Directory per accedere alla risorsa di rete VPC. La risorsa di rete può trovarsi in un progetto diverso.

    gcloud projects add-iam-policy-binding NETWORK_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.pscAuthorizedService"
    

    Sostituisci NETWORK_RESOURCE_PROJECT_ID con l'ID progetto del progetto che contiene la risorsa di rete VPC.

Utilizzare Service Directory per raggiungere gli host esterni a Google Cloud

Service Directory utilizza l'intervallo di indirizzi IP 35.199.192.0/19 per connettere l'host al di fuori di Google Cloud. Devi aggiungere questo intervallo a una lista consentita nel firewall. Inoltre, la tua rete privata deve essere configurata per instradare questo intervallo tramite la connessione Cloud VPN o Cloud Interconnect.

Se la connessione utilizza un router Cloud, puoi configurarla per comunicare l'intervallo alla tua rete privata.

Per saperne di più, consulta Configurare l'accesso alla rete privata.

Utilizza Cloud Load Balancing per raggiungere gli host al di fuori di Google Cloud

Se la configurazione di rete non consente di instradare l'intervallo di indirizzi IP di Service Directory 35.199.192.0/19 a Cloud VPN o Cloud Interconnect, puoi creare un bilanciatore del carico utilizzando Cloud Load Balancing che indirizza il traffico all'host.

Quando crei l'endpoint Service Directory, assicurati di utilizzare l'indirizzo IP della regola di forwarding del bilanciatore del carico anziché l'indirizzo IP dell'host. Quando crei l'endpoint, puoi utilizzare un bilanciatore del carico HTTPS interno o un bilanciatore del carico TCP (Transmission Control Protocol) interno.

Quando crei il bilanciatore del carico TCP, considera quanto segue:

  • Per raggiungere l'host è necessario solo un gruppo di endpoint di rete (NEG) con connettività ibrida.
  • Il bilanciatore del carico TCP non richiede la chiave privata non crittografata per il tuo certificato SSL.
  • La configurazione di Cloud VPN deve utilizzare router Cloud con il routing dinamico globale. Se la tua Cloud VPN utilizza il routing statico, puoi utilizzare un proxy che utilizza Cloud Service Mesh. Per saperne di più, vedi Configurare i servizi edge di rete per i deployment ibridi.

Per saperne di più sulla creazione di un bilanciatore del carico HTTPS, consulta Configurare un bilanciatore del carico delle applicazioni interno con connettività ibrida. Per saperne di più sulla creazione di un bilanciatore del carico TCP, consulta Configura un bilanciatore del carico di rete proxy interno regionale con connettività ibrida.

Crea una connessione

Questa sezione descrive come creare una connessione tra Developer Connect e GitHub Enterprise. Se utilizzi la console Google Cloud , puoi anche iniziare ad aggiungere link ai repository al termine della configurazione della connessione.

Per creare una nuova connessione GitHub Enterprise, seleziona una delle seguenti opzioni:

Console

Avvia una connessione completando i seguenti passaggi:

  1. Nella console Google Cloud , apri Developer Connect.

    Vai a Developer Connect

    Developer Connect visualizza la pagina Repository Git.

    • Se vedi un elenco di provider di gestione del codice sorgente: inizia a configurare la prima connessione selezionando un provider di gestione del codice sorgente. Fai clic su Connetti nella scheda GitHub Enterprise.
    • Se vedi una tabella che elenca le connessioni esistenti: imposta il provider di gestione del codice sorgente facendo clic su Crea connessione > GitHub Enterprise.

      Si apre la pagina Crea connessione.

  2. Per Regione, scegli una regione per le risorse di connessione.

    1. In Nome, inserisci un nome per la nuova connessione.
  3. Attiva la casella di controllo Abilita una connessione conforme alla residenza dei dati per rendere questa connessione conforme ai requisiti di residenza dei dati.

    Le connessioni GitHub create utilizzando la console Google Cloud sono conformi alla residenza dei dati se attivi questa casella di controllo quando crei la connessione. Quando lo fai, Developer Connect crea un'app GitHub

    Quando crei connessioni GitHub utilizzando Google Cloud CLI, queste non sono conformi alla residenza dei dati. Tutti gli altri tipi di connessione sono conformi alla residenza dei dati.

  4. In URL host, inserisci l'URL dell'host a cui vuoi connetterti.

  5. Fai clic su Mostra altro per visualizzare le impostazioni di configurazione facoltative.

    1. La casella di controllo Abilita proxy Developer Connect è selezionata per impostazione predefinita, in modo che Developer Connect possa fungere da proxy per le chiamate Git a GitHub Enterprise.

    2. Nella sezione Networking, per Tipo di rete, scegli Rete privata.

    3. In Certificato CA, fai clic su Sfoglia per caricare il certificato autofirmato.

      Le dimensioni del certificato non devono superare i 10 KB e deve essere in formato PEM (.pem, .cer o .crt). Se questa sezione viene lasciata vuota, verrà utilizzato un insieme predefinito di certificati.

    4. Nella sezione Servizio Service Directory, seleziona la posizione del tuo servizio:

      • Nel progetto your-project
      • In un altro progetto
      • Inserisci manualmente

      Se selezioni In un altro progetto o Inserisci manualmente, specifica l'ID Google Cloud progetto. Seleziona il progetto nel menu a discesa o inserisci manualmente l'ID progetto.

    5. Regione: seleziona la regione del tuo servizio Service Directory. La regione specificata per il tuo servizio deve corrispondere a quella associata alla tua connessione.

    6. Spazio dei nomi: seleziona lo spazio dei nomi del tuo servizio Service Directory.

    7. Servizio: seleziona il nome del servizio Service Directory nel tuo spazio dei nomi.

    8. (Facoltativo) Nella sezione Crittografia, seleziona una chiave CMEK per crittografare i secret di Secret Manager creati da Developer Connect.

  6. Fai clic su Continua.

    Viene visualizzata una finestra di dialogo di GitHub che ti invita a creare un'app GitHub.

  7. Segui le istruzioni in GitHub per completare queste attività:

    1. Inserisci un nome per l'app.

    2. Scegli l'organizzazione in cui vuoi installare l'app.

    3. Seleziona i repository a cui vuoi concedere l'accesso.

    La finestra di dialogo si chiude.

    Developer Connect recupera la chiave privata da GitHub e la archivia nel tuo progetto Google Cloud come secret di Secret Manager. Per visualizzare i tuoi secret, elenca i secret in Secret Manager.

Una volta creata la connessione, viene visualizzata la pagina Collega repository.

Completa i seguenti passaggi per collegare i repository alla tua connessione:

  1. Nell'elenco dei repository disponibili, seleziona quelli che vuoi utilizzare.

  2. Fai clic su OK.

  3. Fai clic su Collega.

La connessione viene aggiunta alla pagina Connessioni e i link al repository vengono aggiunti alla pagina Repository nella console Google Cloud . Puoi aggiungere altri link alle connessioni esistenti in qualsiasi momento.

Se stai configurando Gemini Code Assist, continua la procedura seguendo i passaggi descritti in Configurare e utilizzare la personalizzazione del codice di Gemini Code Assist.

gcloud

Le seguenti attività richiedono alcune azioni nel browser web.

  1. Esegui il comando gcloud developer-connect connections create per creare una connessione a GitHub Enterprise:

    gcloud developer-connect connections create CONNECTION_NAME \
        --location=REGION \
        --project=PROJECT_ID \
        --github-enterprise-config-host-uri=HOST_URI
        --github-enterprise-config-service-directory=SERVICE_DIRECTORY_RESOURCE
        --git-proxy-config-enabled
    

    Sostituisci quanto segue:

    • CONNECTION_NAME: il nome della connessione.
    • REGION: la regione per la connessione.
    • HOST_URI: l'URI dell'host a cui vuoi connetterti.
    • SERVICE_DIRECTORY_RESOURCE: il percorso della risorsa Service Directory, nel formato projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE.
    • --git-proxy-config-enabled è un flag facoltativo che consente a Developer Connect di fungere da proxy per le chiamate Git a GitHub Enterprise. Devi attivare questa funzionalità quando esegui la personalizzazione del codice di Gemini Code Assist nei repository di codice sorgente GitHub Enterprise ospitati in reti private.
    • --github-enterprise-config-ssl-ca-certificate è un flag facoltativo per aggiungere un certificato SSL nel formato $HOME/my-ssl-ca.txt.
  2. Devi creare un'app GitHub per gestire le connessioni con GitHub. Esegui questo comando per ottenere l'URI per la configurazione dell'app:

    gcloud developer-connect connections describe CONNECTION_NAME \
        --location=REGION
    

    Sostituisci quanto segue:

    • CONNECTION_NAME: il nome della connessione.
    • REGION: la regione per la connessione.

    Developer Connect restituisce un link per completare i passaggi successivi in una finestra del browser. Copia questo link.

  3. Apri il link in un browser web.

  4. Se richiesto, accedi al tuo account GitHub.

  5. Segui le istruzioni in GitHub per completare queste attività:

    1. Inserisci un nome per l'app.

    2. Scegli l'organizzazione in cui vuoi installare l'app.

    3. Seleziona i repository a cui vuoi concedere l'accesso.

    La finestra di dialogo si chiude.

    Developer Connect recupera la chiave privata da GitHub e la archivia nel tuo progetto Google Cloud come secret di Secret Manager. Per visualizzare i tuoi secret, elenca i secret in Secret Manager.

Verificare la connessione

Verifica la creazione della connessione GitHub eseguendo questo comando:

gcloud developer-connect connections describe CONNECTION_NAME \
    --location=REGION

Dove:

  • CONNECTION_NAME: il nome della connessione.
  • REGION: la regione per la connessione.

Developer Connect restituisce uno stato nel campo installationState. Se il valore di questo campo è COMPLETE, l'installazione dell'app è completata. In caso contrario, Developer Connect restituisce un URI per tornare alla configurazione nel browser.

Una volta completata la connessione, scegli i repository da collegare seguendo le istruzioni riportate in Collegamento ai repository.

Una volta stabilita una connessione a GitHub Enterprise, puoi collegarti ai repository. Puoi ripetere questi passaggi in un secondo momento per collegare altri repository in base alle tue esigenze.

Per creare link ai repository in una connessione GitHub Enterprise esistente, seleziona una delle seguenti opzioni:

Console

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repository

  2. Fai clic su Collega repository.

    Si apre il riquadro Collega repository Git.

  3. Nell'elenco delle connessioni, scegli una connessione.

  4. Fai clic su Continua.

  5. Nell'elenco dei repository, seleziona quelli a cui vuoi collegarti.

  6. Fai clic su Crea.

Developer Connect crea i link ai repository e li visualizza nella console Google Cloud .

gcloud

Esegui questo comando:

gcloud developer-connect connections git-repository-links create REPO_NAME \
    --clone-uri=REPO_URI \
    --connection=CONNECTION_NAME \
    --location=REGION

Sostituisci quanto segue:

  • REPO_NAME: un nome per il link al repository.
  • REPO_URI: il link al repository. Ad esempio, https://github.com/cloud-build/test-repo.git.
  • CONNECTION_NAME: il nome della connessione.
  • REGION: la regione per la connessione.

Developer Connect crea i link ai repository.

Per elencare i repository collegati, esegui il comando developer-connect connections git-repository-links list.

Se stai configurando Gemini Code Assist, continua la procedura seguendo i passaggi descritti in Configurare e utilizzare la personalizzazione del codice di Gemini Code Assist.

Condivisione dei dati

I contenuti delle risorse Google Cloud collegate a questa connessione potrebbero essere trasferiti a GitHub. Questa affermazione si applica a tutte le risorse esistenti e future che utilizzano questa connessione. Per interrompere la condivisione delle informazioni con GitHub, elimina le connessioni Developer Connect nella console Google Cloud o in gcloud CLI e revoca l'accesso in GitHub.

Passaggi successivi