Crea repository da GitHub Enterprise in una rete privata

Cloud Build ti consente di creare trigger su un'istanza GitHub Enterprise. Questa pagina spiega come utilizzare i trigger di GitHub Enterprise per richiamare le build in risposta a commit o richieste di pull da un'istanza GitHub Enterprise e spiega come creare repository GitHub Enterprise se la tua istanza è ospitata in una rete privata.

Prima di iniziare

  • Abilita le API Cloud Build and Service Directory.

    Abilita le API

  • Se non hai creato un pool privato, segui le istruzioni in Crea e gestisci pool privati per creare un pool privato. È necessario un pool privato in una rete privata.

Crea repository da GitHub Enterprise in una rete privata

Completa i seguenti passaggi per connettere la tua istanza GitHub Enterprise a Cloud Build da una rete privata:

  1. Concedi l'accesso all'agente di servizio Cloud Build da utilizzare Service Directory:

    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 Google Cloud.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY è l'ID del tuo progetto Google Cloud che contiene Service Directory.
  2. Concedi l'accesso alla tua risorsa di rete VPC, dove PROJECT_ID_CONTAINING_NETWORK_RESOURCE è l'ID progetto Google Cloud che contiene la risorsa di rete.

    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
      --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
      --role="roles/servicedirectory.pscAuthorizedService"
    
  3. Per configurare un servizio Service Directory, completa i passaggi riportati di seguito:

    1. Configura uno spazio dei nomi per il tuo servizio:

       gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
      

      Sostituisci quanto segue:

      • NAMESPACE è il nome dello spazio dei nomi di Service Directory.
      • LOCATION è la regione in cui crei connessioni e colleghi repository.
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY è l'ID del tuo progetto Google Cloud che contiene Service Directory.
    2. Configura un servizio per il tuo spazio dei nomi:

       gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
      

      Sostituisci quanto segue:

      • SERVICE è il nome della risorsa Service Directory.
      • NAMESPACE è il nome dello spazio dei nomi di Service Directory.
      • LOCATION è la regione in cui crei connessioni e colleghi repository.
    3. Configura un endpoint per il tuo servizio:

       gcloud service-directory endpoints create ENDPOINT_NAME \
         --namespace=NAMESPACE \
         --service=SERVICE \
         --location=LOCATION \
         --address=INSTANCE_IP_ADDRESS \ 
         --port=PORT \
         --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/us-central1/ networks/NETWORK
      

      Sostituisci quanto segue:

      • ENDPOINT_NAME è il nome del tuo endpoint.
      • NAMESPACE è il nome dello spazio dei nomi di Service Directory.
      • SERVICE è il nome della risorsa Service Directory.
      • LOCATION è la regione in cui crei connessioni e colleghi repository.
      • INSTANCE_IP_ADDRESS è l'indirizzo IP della tua risorsa GitHub Enterprise in esecuzione nella tua rete. Ad esempio, 123.45.67.89. Per saperne di più, vedi Utilizzare Service Directory per raggiungere host al di fuori di Google Cloud.
      • PORT è il nome della porta per HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK è l'ID del progetto Google Cloud che contiene la tua rete VPC.
      • NETWORK è il nome della tua rete VPC.

    Ora puoi utilizzare la risorsa di servizio (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) per creare la connessione nei passaggi seguenti.

  4. Connetti un host GitHub Enterprise.

  5. Connetti un repository GitHub Enterprise.

  6. Crea un trigger GitHub Enterprise per creare repository ospitati sul tuo GitHub Enterprise.

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 il tuo host GitHub Enterprise. Devi inserire questo intervallo nella lista consentita del tuo firewall. Inoltre, la rete privata deve essere configurata per instradare questo intervallo tramite la connessione Cloud VPN o Cloud Interconnect.

Se per la connessione viene utilizzato un router Cloud, puoi configurare la connessione a pubblicizzare l'intervallo sulla tua rete privata.

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

Utilizzo di Cloud Load Balancing per raggiungere host al di fuori di Google Cloud

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

Quando crei l'endpoint di Service Directory, assicurati di utilizzare il protocollo della regola di forwarding del bilanciatore del carico, l'indirizzo IP del tuo host. Puoi utilizzare un bilanciatore del carico HTTPS interno o una bilanciatore del carico TCP (protocollo di controllo della trasmissione interno) durante la creazione l'endpoint.

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

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

Per saperne di più sulla creazione di un bilanciatore del carico HTTPS, vedi 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.

Passaggi successivi