Connettersi ai repository GitLab Enterprise in una rete privata

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

Queste istruzioni sono rivolte a sviluppatori di applicazioni, amministratori di piattaforme e responsabili della sicurezza che vogliono utilizzare i repository di codice sorgente GitLab Enterprise con Google. In particolare, puoi utilizzare i repository GitLab 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 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 GitLab Enterprise.

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

  10. Assicurati di essere il proprietario di un repository GitLab Enterprise o di disporre delle autorizzazioni a livello di amministratore su un repository condiviso.
  11. Assicurati di avere una risorsa del servizio Service Directory per la connessione alle reti private o crea una risorsa del servizio Service Directory. Puoi creare la risorsa del 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. Consulta Utilizzare Service Directory per raggiungere gli host esterni Google Cloud.

  12. (Facoltativo) Crea una chiave di crittografia gestita dal cliente (CMEK) per criptare i secret di autenticazione creati da Developer Connect.
  13. (Facoltativo) Per utilizzare le istruzioni della riga di comando in questa guida, completa i seguenti passaggi:
    1. Installa la 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 il seguente comando, dove PROJECT_ID è il tuo Google Cloud ID progetto:
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

Requisiti dell'host

Se non hai installato un'istanza di GitLab Enterprise Edition Server, consulta la guida all'installazione di GitLab Enterprise Edition per le istruzioni.

Quando segui le istruzioni per installare un'istanza di GitLab Enterprise Edition Server, tieni presente quanto segue:

  • Devi configurare l'host per gestire il protocollo HTTPS. Gli host configurati con il protocollo HTTP non sono supportati.

  • Devi configurare l'host con lo stesso URL utilizzato per raggiungere l'host da Google Cloud. Per saperne di più, consulta la documentazione di GitLab per la configurazione dell'URL esterno.

Ruoli obbligatori

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

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.

Concedere 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 della rete VPC.

  1. Concedi le autorizzazioni al 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 Google Cloud ID progetto.
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: l' ID progetto del Google Cloud progetto che contiene la risorsa del servizio Service Directory.
  2. Concedi le autorizzazioni a Service Directory per accedere alla risorsa della 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 della 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 esterno a Google Cloud. Devi aggiungere questo intervallo a una lista consentita nel firewall. Inoltre, la 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 in modo che comunichi l'intervallo alla tua rete privata.

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

Utilizzare Cloud Load Balancing per raggiungere gli host esterni a 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 di Service Directory, assicurati di utilizzare l'indirizzo IP della regola di forwarding del bilanciatore del carico anziché l'indirizzo IP dell'host. Puoi utilizzare un bilanciatore del carico HTTPS interno o un bilanciatore del carico del protocollo TCP (Transmission Control Protocol) interno quando crei l'endpoint.

Quando crei il bilanciatore del carico TCP, tieni presente 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 criptata per il certificato SSL.
  • La configurazione di Cloud VPN deve utilizzare il router Cloud con routing dinamico globale. Se Cloud VPN utilizza il routing statico, puoi utilizzare un proxy che utilizza Cloud Service Mesh. Per saperne di più, consulta Configurare i servizi 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 Configurare un bilanciatore del carico di rete proxy interno regionale con connettività ibrida.

Creare token di accesso

Per creare token di accesso in GitLab, completa i seguenti passaggi:

  1. Accedi a GitLab.

  2. Segui le istruzioni nella documentazione di GitLab per creare token di accesso personale, token di accesso di gruppo, o token di accesso al progetto con le seguenti autorizzazioni:

    • Un token con ambito api per collegare e scollegare i repository.
    • Un token con ambito read_api per consentire a Developer Connect di leggere il codice sorgente nei repository.
    • Per i token di accesso di gruppo e i token di accesso al progetto, i token devono avere un ruolo di Maintainer o superiore.

Creare una connessione

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

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

Console

Avvia una connessione completando i seguenti passaggi:

  1. Nella Google Cloud console, apri Developer Connect.

    Vai a Developer Connect

    Developer Connect mostra 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 GitLab Enterprise.
    • Se vedi una tabella che elenca le connessioni esistenti: imposta il provider di gestione del codice sorgente facendo clic su Crea connessione > GitLab Enterprise.

      Si apre la pagina Crea connessione.

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

    1. In Nome, inserisci un nome per la nuova connessione.
  3. Nella sezione Token di accesso, inserisci i token per il tuo account:

    • Token di accesso all'API: inserisci il token di accesso con ambito api.
    • Token di accesso alle API in lettura: inserisci il token di accesso con read_api ambito.

    È tua responsabilità assicurarti che i token GitLab rimangano validi. I token GitLab hanno una durata massima di 365 giorni, se non diversamente specificato dal creatore del token o da un amministratore. Per scoprire come gestire le impostazioni e le notifiche di scadenza dei token, consulta la documentazione di GitLab sui token di accesso personale, token di accesso di gruppo, e token di accesso al progetto.

  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 GitLab Enterprise.

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

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

      La dimensione del certificato non deve 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 località del servizio:

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

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

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

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

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

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

  6. Fai clic su Continua.

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

Completa i seguenti passaggi per collegare i repository alla connessione:

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

  2. Fai clic su OK.

  3. Fai clic su Collega.

La connessione viene aggiunta alla pagina Connessioni e i link ai repository vengono aggiunti alla pagina Repository nella Google Cloud console. 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

  1. Crea un secret webhook in Secret Manager eseguendo il seguente comando, dove WEBHOOK_SECRET_NAME è un nome per il secret webhook:

         cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME
    
  2. Archivia i token di accesso in Secret Manager eseguendo i seguenti comandi:

    gcloud secrets create API_SECRET_NAME
    
    echo -n API_SECRET_DATA | gcloud secrets versions add API_SECRET_NAME --data-file=-
    
    gcloud secrets create READ_SECRET_NAME
    
    echo -n READ_SECRET_DATA | gcloud secrets versions add READ_SECRET_NAME --data-file=-
    

    Sostituisci quanto segue:

    • API_SECRET_NAME: un nome per il secret che memorizza il token con ambito api.
    • API_SECRET_DATA: il token con api ambito, simile a glpat-XXXXXXXXXXXXXXXX.
    • READ_SECRET_NAME: un nome per il secret che memorizza il token con ambito read_api.
    • READ_SECRET_DATA: il token con read_api ambito, simile a glpat-XXXXXXXXXXXXXXXX.
  3. Esegui il comando gcloud developer-connect connections create per creare una connessione a GitLab Enterprise:

    gcloud beta developer-connect connections create CONNECTION_NAME \
        --location=REGION \
        --gitlab-config-read-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/VERSION \
        --gitlab-config-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/API_SECRET_NAME/versions/VERSION \
        --gitlab-enterprise-config-host-uri=HOST_URI
        --gitlab-enterprise-config-webhook-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/VERSION
        --git-proxy-config-enabled
    

    Sostituisci quanto segue:

    • CONNECTION_NAME: il nome della connessione.
    • REGION: la regione della connessione.
    • PROJECT_ID: il tuo Google Cloud ID progetto.
    • READ_SECRET_NAME: il nome del secret di Secret Manager che contiene il token con ambito read_api.
    • API_SECRET_NAME: il nome del secret di Secret Manager che contiene il token con ambito api
    • VERSION: il numero di versione di ogni secret. Può essere latest per utilizzare il numero di versione più recente.
    • HOST_URI: l'URI dell'host a cui vuoi connetterti.
    • WEBHOOK_SECRET_NAME: il nome del secret di Secret Manager che contiene il secret webhook.
    • --git-proxy-config-enabled è un flag facoltativo che consente a Developer Connect di fungere da proxy per le chiamate Git a GitLab Enterprise. Devi abilitare questa funzionalità quando esegui la personalizzazione del codice di Gemini Code Assist sui repository di codice sorgente GitLab Enterprise ospitati in reti private.
    • --gitlab-enterprise-config-ssl-ca-certificate è un flag facoltativo per aggiungere un certificato SSL nel formato $HOME/my-ssl-ca.txt.

    Developer Connect completa la connessione a GitLab. Poi, collega i repository.

Dopo aver stabilito una connessione a GitLab Enterprise, puoi collegare i repository. Puoi ripetere questi passaggi in un secondo momento per collegare altri repository, se necessario.

Per creare link ai repository su una connessione GitLab Enterprise esistente, seleziona una delle seguenti opzioni:

Console

Crea link ai repository completando i seguenti passaggi:

  1. Apri la pagina Repository nella Google Cloud console.

    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 i repository a cui vuoi collegarti.

    Developer Connect mostra i nomi suggeriti per le risorse del repository.

  6. Seleziona un'opzione di denominazione delle risorse del repository:

    • Generato: utilizza i nomi delle risorse del repository generati.
    • Manuale: inserisci i nomi che preferisci.
  7. Fai clic su Crea.

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

gcloud

Collega un repository GitLab eseguendo il seguente comando:

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

Sostituisci quanto segue:

  • REPO_NAME: il nome del link al repository.
  • REPO_URI: il link al repository, simile a https://gitlab.com/my-project/test-repo.git.
  • CONNECTION_NAME: il nome della connessione.
  • REGION: la regione della connessione.

Developer Connect crea i link ai repository.

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

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.

Passaggi successivi