Blog
So planen Sie serverlose Anwendungen auf Google Cloud Platform

Google Cloud Run ist eine einfache Möglichkeit, Ihre serverlosen containerisierten Anwendungen bereitzustellen. Wenn Sie Ihre Anwendung in regelmäßigen Abständen ausführen müssen, können Sie dazu Google
- ein Dienstkonto erstellen
- Ihre serverlose Anwendung bereitstellen
- dem Planer die Erlaubnis erteilen
- einen Zeitplan erstellen Da ich das Prinzip von Infrastruktur als Code vertrete, zeige ich Ihnen, wie Sie dies mit Hilfe von terraform Codeschnipseln tun können.
Erstellen Sie ein Dienstkonto
Sie können ein Dienstkonto für den Scheduler erstellen, mit dem Sie die Anwendung wie folgt aufrufen können:
resource "google_service_account" "scheduler" {
display_name = "Google Cloud Scheduler"
account_id = "scheduler"
}
Bereitstellen mit Ihrer serverlosen Anwendung
Als nächstes können Sie Ihre serverlose Anwendung bereitstellen:
resource "google_cloud_run_service" "application" {
name = "application"
location = "europe-west1"
template {
spec {
containers {
image = "gcr.io/binx-io-public/paas-monitor:latest"
}
}
}
timeouts {
create = "10m"
}
depends_on [google_project_service.run]
}
In diesem Fall ist die eingesetzte Anwendung meine bewährte paas-monitor-Anwendung.
Erteilen Sie dem Planer die Erlaubnis
Nachdem die Anwendung bereitgestellt wurde, erteilen Sie dem Dienstkonto die Berechtigung, sie aufzurufen:
resource "google_cloud_run_service_iam_member" "scheduler-run-invoker" {
role = "roles/run.invoker"
member = "serviceAccount:${google_service_account.scheduler.email}"
service = google_cloud_run_service.application.name
location = google_cloud_run_service.application.location
}
Einen Zeitplan erstellen
Schließlich erstellen Sie einen Zeitplan, um den Dienst wie folgt aufzurufen:
resource "google_cloud_scheduler_job" "application" {
name = "application"
description = "invoke every 5 minutes"
schedule = "*/5 * * * *" #<-- Cron expression
http_target {
http_method = "GET"
uri = "${google_cloud_run_service.application.status[0].url}/status"
oidc_token {
service_account_email = google_service_account.scheduler-invoker.email
}
}
depends_on = [google_app_engine_application.app]
}
Der Zeitplan wird über einen Cron-Ausdruck definiert. Beachten Sie
, dass Google Cloud Scheduler eine App-Engine-Anwendung für die Bereitstellung erfordert:
resource "google_app_engine_application" "app" {
project = data.google_project.current.project_id
location_id = "europe-west"
depends_on = [google_project_service.appengine]
}
Installation
Wenn Sie das komplette Beispiel einsetzen möchten, laden Sie main.tf herunter und geben Sie ein:
export TF_VAR_project=$(gcloud config get-value project)
terraform init
terraform apply
Fazit
Mit Google Cloud Run können Sie Ihre containerisierten Anwendungen ganz einfach serverlos bereitstellen und
den Google Cloud Scheduler verwenden, um den Aufruf der Anwendung auf sichere Weise zu planen.
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Contact