Creare repository da GitLab Enterprise Edition in una rete privata

Cloud Build ti consente di creare trigger per le build dai repository ospitati su GitLab Enterprise Edition, in modo da eseguire le build in risposta a eventi come push di commit o richieste di unione associate al tuo repository GitLab Enterprise Edition.

Questa pagina spiega come attivare la funzionalità di attivazione in un'istanza di GitLab Enterprise Edition se è ospitata in una rete privata.

Prima di iniziare

  • Enable the Cloud Build, Secret Manager, Compute Engine, and Service Networking APIs.

    Enable the APIs

Creare repository da GitLab Enterprise Edition in una rete privata

Se l'istanza di GitLab Enterprise Edition è accessibile solo all'interno di una rete VPC, devi configurare un servizio Service Directory ed eseguire il build utilizzando pool privati. Il progetto contenente la rete VPC può essere diverso da quello contenente il servizio Service Directory. Segui le istruzioni riportate di seguito per assicurarti che l'istanza sia raggiungibile prima di creare gli attivatori:

  1. Abilita l'API Service Directory.

  2. Assicurati di disporre del ruolo Amministratore IAM del progetto concesso al progettoGoogle Cloud in cui intendi creare il servizio Service Directory. Per scoprire come concedere i ruoli IAM, consulta Configurare l'accesso alle risorse Cloud Build.

  3. Configura un servizio Service Directory completando i seguenti passaggi:

    1. Configura un nome di spazio per il tuo progetto Google Cloud .

      La regione specificata nel tuo spazio dei nomi deve corrispondere a quella specificata nella connessione host di Cloud Build.

    2. Configura un servizio nel tuo spazio dei nomi.

    3. Configura un endpoint per il servizio registrato.

      Quando configuri un endpoint, devi utilizzare un indirizzo IP interno e specificare un numero di porta HTTPS affinché Cloud Build possa raggiungere il tuo servizio.

    Per scoprire di più sulla configurazione dell'accesso a una rete privata, consulta Configurare l'accesso a una rete privata. Service Directory fornisce anche l'integrazione con servizi come bilanciatori del carico e Google Kubernetes Engine (GKE). Per saperne di più, consulta la panoramica di Service Directory e del bilanciamento del carico o la panoramica di Service Directory per GKE.

  4. Concedi a Service Directory l'accesso all'agente di servizio Cloud Build:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding  PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.viewer"
    

    Sostituisci quanto segue:

    • PROJECT_ID è l'ID del tuo progetto Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY è l'ID del progettoGoogle Cloud che contiene la tua Service Directory.
  5. Concedi all'agente di servizio Cloud Build l'accesso alle risorse di rete VPC:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.pscAuthorizedService"
    

    Sostituisci quanto segue:

    • PROJECT_ID è l'ID del tuo progetto Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE è l'ID del progettoGoogle Cloud che contiene la risorsa di rete.
  6. Utilizza i pool privati per eseguire le tue build. Se non hai creato un pool privato, consulta la sezione Creare un nuovo pool privato.

  7. Segui le istruzioni per creare un attivatore GitLab Enterprise Edition per compilare i repository ospitati su un'istanza GitLab Enterprise Edition.

    Se includi un certificato autofirmato o privato quando colleghi l'host GitLab Enterprise Edition a Cloud Build, devi impostare l'URI dell'host come nome alternativo dell'oggetto (SAN) del certificato.

Ora l'attivatore GitLab Enterprise Edition chiamerà automaticamente le build sulla tua istanza GitLab Enterprise Edition in base alla tua configurazione.

Utilizzare Service Directory per raggiungere host esterni a Google Cloud

Service Directory utilizza l'intervallo di indirizzi IP 35.199.192.0/19 per collegare il tuo host all'esterno 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 in modo da comunicare l'intervallo alla tua rete privata.

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

Utilizzare il bilanciamento del carico su Cloud per raggiungere host esterni a Google Cloud

Se la configurazione di rete non ti consente di inoltrare l'intervallo di indirizzi IP della directory dei servizi 35.199.192.0/19 a Cloud VPN o Cloud Interconnect, puoi creare un bilanciatore del carico utilizzando Cloud Load Balancing per indirizzare il traffico al tuo 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 del tuo host. Puoi utilizzare un bilanciatore del carico HTTPS interno o un bilanciatore del carico TCP (Transmission Control Protocol) interno quando crei l'endpoint.

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

  • Per raggiungere il tuo host è necessario solo un gruppo di endpoint di rete con connettività ibrida (NEG).
  • Il bilanciatore del carico TCP non richiede la chiave privata non criptata per il tuo 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 edge di rete per le implementazioni ibride.

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

Condivisione dei dati

I dati inviati a GitLab Enterprise Edition da Cloud Build ti aiutano a identificare gli attivatori per nome e a visualizzare i risultati di compilazione nei repository GitLab Enterprise Edition.

I seguenti dati sono condivisi tra Cloud Build e GitLab Enterprise Edition:

  • ID progettoGoogle Cloud
  • Nome trigger

Passaggi successivi