Dockerfile
im Stammverzeichnis haben.
So automatisieren Sie die Bereitstellung mit Cloud Build:
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.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:
Öffnen Sie in der Cloud Console die Seite mit den Cloud Build-Einstellungen:
Legen Sie im Bereich „Dienstkontoberechtigungen“ den Status der Rolle Cloud Run-Administrator auf Aktivieren fest:
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:
Öffnen Sie in der Cloud Console die Seite mit den Cloud Build-Einstellungen:
Legen Sie im Bereich „Dienstkontoberechtigungen“ den Status der Rolle Kubernetes Engine-Entwickler auf Aktivieren fest:
Klicken Sie im linken Navigationsbereich auf Trigger, um die Seite Trigger zu öffnen:
- Klicken Sie auf Trigger erstellen.
- Geben Sie im Feld Name einen Namen für den Trigger ein.
- Wählen Sie unter Ereignis das Repository-Ereignis aus, um den Trigger zu starten.
- 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.
- Wählen Sie unter Build-Konfiguration die Option Cloud Build-Konfigurationsdatei aus.
- Geben Sie im Feld Speicherort der Cloud Build-Konfigurationsdatei
cloudbuild.yaml
nach/
ein. - Klicken Sie auf Erstellen, um den Build-Trigger zu speichern.
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
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
Wählen Sie das Laufzeitdienstkonto Ihres vollständig verwalteten Cloud Run-Dienstes aus (standardmäßig
PROJECT_NUMBER-compute@developer.gserviceaccount.com
).Klicken Sie oben rechts auf Infofeld ansehen, um den Tab Berechtigungen aufzurufen.
Klicken Sie auf die Schaltfläche Mitglied hinzufügen.
Geben Sie das Cloud Build-Dienstkonto ein (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
).Wählen Sie im Drop-down-Menü Rolle auswählen die Rolle Dienstkonten > Dienstkontonutzer aus.
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.