Manuelle Einrichtung der kontinuierlichen Bereitstellung aus Git mit Cloud Build

In der folgenden Anleitung wird davon ausgegangen, dass Sie ein Git-Repository mit einem Dockerfile im Stammverzeichnis haben.

So automatisieren Sie die Bereitstellung mit Cloud Build:

  1. Erstellen Sie eine Cloud Build-Konfiguration, die:

    • Das Container-Image erstellt
    • Das Image per Push in die Container Registry überträgt
    • Eine neue Überarbeitung für den Cloud Run for Anthos in Google Cloud-Dienst bereitstellt

    Fügen Sie dazu eine Datei namens cloudbuild.yaml mit folgendem Inhalt im Stammverzeichnis Ihres Repositorys hinzu:

    Komplette Verwaltung

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--region'
       - '[REGION]'
       - '--platform'
       - 'managed'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    Ersetzen Sie

    • [SERVICE-NAME] durch den Namen Ihres Dienstes von Cloud Run for Anthos in Google Cloud.
    • [REGION] durch die Region Dienstes von Cloud Run for Anthos in Google Cloud, den Sie bereitstellen.

    Anthos in Google Cloud

     steps:
     # build the container image
     - name: 'gcr.io/cloud-builders/docker'
       args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.']
     # push the container image to Container Registry
     - name: 'gcr.io/cloud-builders/docker'
       args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA']
     # Deploy container image to Cloud Run
     - name: 'gcr.io/cloud-builders/gcloud'
       args:
       - 'run'
       - 'deploy'
       - '[SERVICE-NAME]'
       - '--image'
       - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
       - '--cluster'
       - '[CLUSTER]'
       - '--cluster-location'
       - '[CLUSTER_LOCATION]'
       - '--platform'
       - 'gke'
     images:
     - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
    

    Ersetzen Sie

    • [SERVICE-NAME] durch den Namen Ihres Dienstes von Cloud Run for Anthos in Google Cloud.
    • [CLUSTER] durch den Namen Ihres Cloud Run for Anthos in Google Cloud-Clusters.
    • [CLUSTER_LOCATION] durch den Speicherort Ihres Cloud Run for Anthos in Google Cloud-Clusters.

    Die Substitutionsvariable $COMMIT_SHA wird von Cloud Build ersetzt, wenn sie von einem Git-Repository ausgelöst wird.

  2. Gewähren Sie dem Cloud Build-Dienstkonto Zugriff, um den Dienst bereitzustellen:

    Komplette Verwaltung

    Weisen Sie dem Cloud Build-Dienstkonto die Rollen Cloud Run-Administrator und Dienstkontonutzer zu:

    1. Öffnen Sie in der Cloud Console die Seite mit den Cloud Build-Einstellungen:

      Zur Seite „Cloud Build-Einstellungen“

    2. Legen Sie im Bereich „Dienstkontoberechtigungen“ den Status der Rolle Cloud Run-Administrator auf Aktivieren fest:

      Screenshot der Seite „Dienstkontoberechtigungen“

    3. Wählen Sie Zugriff auf alle Dienstkonten gewähren aus, um allen Dienstkonten im Projekt auf der Seite die Rolle Dienstkontonutzer zu gewähren.

    Anthos in Google Cloud

    Weisen Sie dem Cloud Build-Dienstkonto die Rolle Kubernetes Engine-Entwickler zu:

    1. Öffnen Sie in der Cloud Console die Seite mit den Cloud Build-Einstellungen:

      Zur Seite „Cloud Build-Einstellungen“

    2. Legen Sie im Bereich „Dienstkontoberechtigungen“ den Status der Rolle Kubernetes Engine-Entwickler auf Aktivieren fest:

      Screenshot der Seite „Dienstkontoberechtigungen“

  3. Klicken Sie im linken Navigationsbereich auf Trigger, um die Seite Trigger zu öffnen:

    Zur Seite „Trigger“

    1. Klicken Sie auf Trigger erstellen.
    2. Geben Sie im Feld Name einen Namen für den Trigger ein.
    3. Wählen Sie unter Ereignis das Repository-Ereignis aus, um den Trigger zu starten.
    4. Wählen Sie unter Quelle Ihr Repository und den Branch- oder Tag-Namen aus, der den Trigger auslöst. Weitere Informationen zum Angeben, welche Branches automatisch erstellt werden sollen, finden Sie unter Build-Trigger erstellen.
    5. Wählen Sie unter Build-Konfiguration die Option Cloud Build-Konfigurationsdatei aus.
    6. Geben Sie im Feld Speicherort der Cloud Build-Konfigurationsdatei cloudbuild.yaml nach / ein.
    7. Klicken Sie auf Erstellen, um den Build-Trigger zu speichern.
  4. Fertig! Von nun an werden bei jeder Übertragung in Ihr Repository automatisch ein Build und eine Bereitstellung für Ihren Cloud Run-Dienst ausgelöst.

Kontinuierliche Bereitstellung mit minimalen IAM-Berechtigungen

Wenn ein Container in einem Cloud Run-Dienst (vollständig verwaltet) bereitgestellt wird, wird er mit der Identität des Laufzeitdienstkontos dieses Cloud Run-Dienstes (vollständig verwaltet) ausgeführt. Da Cloud Build neue Container automatisch bereitstellen kann, muss Cloud Build als Laufzeitdienstkonto Ihres Cloud Run-Dienstes (vollständig verwaltet) fungieren können.

So gewähren Sie eingeschränkten Zugriff auf Cloud Build für die Bereitstellung in einem vollständig verwalteten Cloud Run-Dienst:

Console-UI

  1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.

    Zur Seite „Dienstkonten“

  2. Wählen Sie das Laufzeitdienstkonto Ihres vollständig verwalteten Cloud Run-Dienstes aus (standardmäßig PROJECT_NUMBER-compute@developer.gserviceaccount.com).

  3. Klicken Sie oben rechts auf Infofeld ansehen, um den Tab Berechtigungen aufzurufen.

  4. Klicken Sie auf die Schaltfläche Mitglied hinzufügen.

  5. Geben Sie das Cloud Build-Dienstkonto ein (PROJECT_NUMBER@cloudbuild.gserviceaccount.com).

  6. Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Dienstkontonutzer aus.

  7. Klicken Sie auf Speichern.

gcloud

Führen Sie den Befehl gcloud iam service-accounts add-iam-policy-binding aus:

gcloud iam service-accounts add-iam-policy-binding \
  PROJECT_NUMBER-compute@developer.gserviceaccount.com \
  --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
  --role="roles/iam.serviceAccountUser"

Ersetzen Sie PROJECT_NUMBER durch die numerische ID Ihres Projekts.

Wenn Sie Cloud Run (vollständig verwaltet) mit einer benutzerdefinierten Dienstidentität verwenden, ersetzen Sie PROJECT_NUMBER-compute@developer.gserviceaccount.com durch die Adresse Ihres Dienstkontos.

Weitere Informationen finden Sie unter Bereitstellungsberechtigungen.

Weitere Informationen

  • Informationen zum Bereitstellen oder Veröffentlichen eines Container-Images in einer privaten Registry in einem anderen Projekt finden Sie unter Dienstkontoberechtigungen festlegen.