Hooks vor und nach der Bereitstellung ausführen
In dieser Kurzanleitung erfahren Sie, wie Sie einen Bereitstellungshook ausführen. Das ist ein beliebiges Programm, das vor oder nach der Bereitstellung mit Cloud Deploy ausgeführt wird.
Dieser Schnellstart erläutert folgende Schritte:
Erstellen Sie einen GKE-Cluster oder einen Cloud Run-Dienst.
Sie können dafür auch angehängte GKE-Cluster verwenden. In dieser Kurzanleitung werden jedoch nur GKE und Cloud Run verwendet.
Definieren Sie Ihre Cloud Deploy-Bereitstellungspipeline und das Bereitstellungsziel.
Die Konfiguration der Bereitstellungspipeline enthält die Definitionen der Bereitstellungshooks als
tasks.Diese Pipeline enthält nur eine Phase und verwendet nur ein Ziel.
Erstellen Sie eine Skaffold-Konfiguration und entweder ein Kubernetes -Manifest oder eine Cloud Run-Dienstdefinition.
In der Skaffold-Konfigurationsdatei geben Sie die Manifeste an, die Sie mit Cloud Deploy bereitstellen möchten.
Erstellen Sie einen Release, der automatisch für das Ziel bereitgestellt wird.
Einer der Hooks wird vor der Bereitstellung der Anwendung und der andere danach ausgeführt.
Rufen Sie die Ergebnisse der Hooks vor und nach der Bereitstellung in den Cloud Build Logs auf. Verwenden Sie dazu in der Google Cloud Console die Cloud Deploy-Seite Rollout-Details.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto bei Google Cloudhaben, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis zu sehen und zu bewerten. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init - Prüfen Sie, ob das Standard
Compute Engine-Dienstkonto die erforderlichen Berechtigungen hat.
Das Dienstkonto hat möglicherweise bereits die erforderlichen Berechtigungen. Diese Schritte gelten für Projekte, die automatische Rollenzuweisungen für Standarddienstkonten deaktivieren.
- Fügen Sie zuerst die Rolle
clouddeploy.jobRunnerhinzu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" - Fügen Sie die Entwicklerrolle für Ihre spezifische Laufzeit hinzu.
- Für GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/container.developer" - Für Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer" -
Fügen Sie die Rolle
iam.serviceAccountUserhinzu, die die BerechtigungactAszum Bereitstellen in der Laufzeit enthält:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
Wenn Sie die CLI bereits installiert haben, prüfen Sie, ob Sie die neueste Version verwenden:
gcloud components update
Laufzeitumgebung erstellen
Wenn Sie in Cloud Run bereitstellen, können Sie diesen Befehl überspringen.
Erstellen Sie für GKE einen Cluster: deploy-hooks-cluster mit Standardeinstellungen. Der Kubernetes API-Endpunkt des Clusters muss über das öffentliche Internet erreichbar sein. GKE-Cluster sind standardmäßig extern zugänglich.
gcloud container clusters create-auto deploy-hooks-cluster \
--project=PROJECT_ID \
--region=us-central1
Bereitstellungspipeline und Ziel erstellen
Sie können Pipeline und Ziel in einer Datei oder in separaten Dateien definieren. In dieser Kurzanleitung erstellen Sie nur eine Datei.
Öffnen Sie ein Terminalfenster.
Erstellen Sie ein neues Verzeichnis und wechseln Sie in dieses Verzeichnis.
GKE
mkdir deploy-hooks-gke-quickstart cd deploy-hooks-gke-quickstartCloud Run
mkdir deploy-hooks-run-quickstart cd deploy-hooks-run-quickstartErstellen Sie die Definition für die Bereitstellungspipeline und das Ziel:
GKE
Erstellen Sie im Verzeichnis
deploy-hooks-gke-quickstarteine neue Datei:clouddeploy.yamlmit folgendem Inhalt:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: