Testing markdown upload through wordpress API11

Google Cloud Run is an easy way to deploy your serverless containerized applications. If you need to run your application periodically, you can use Google Cloud Scheduler to do so. In this blog I will show you how to configure a schedule for a serverless application using Terraform.

To invoke serverless applications on a schedule, you need to:

  1. create a service accounts
  2. deploy your serverless application
  3. grant the scheduler permission
  4. create a schedule

As I promote the principle of infrastructure as code, I will show you how to do this using terraform code snippets.

Create a service account

You can create a service account for the scheduler with which to invoke the application as follows:

resource "google_service_account" "scheduler" {
  display_name = "Google Cloud Scheduler"
  account_id   = "scheduler"
}

Deploy using your serverless application

Next you can deploy your serverless application:

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 this case, the applicaton deployed is my trusty paas-monitor application.

Grant the scheduler permission

After the application is deploy, you grant the service account permission to invoke it:

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
}

Create a schedule

Finally you create a schedule to invoke the service as follows:

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]
}

The schedule is defined using a cron expression. Note that Google Cloud Scheduler requires an app engine application to be deployed:

resource "google_app_engine_application" "app" {
  project     = data.google_project.current.project_id
  location_id = "europe-west"
  depends_on  = [google_project_service.appengine]
}

Installation

If you want to deploy the complete example, download main.tf and type:

export TF_VAR_project=$(gcloud config get-value project)
terraform init
terraform apply

Conclusion

With Google Cloud Run it is easy to deploy your containerized applications in a serverless fashion and use the Google Cloud Scheduler to schedule invocation of application in a secure way.

binx.io logo

下载地址
阿里云盘
密码:无
123盘
密码:无
蓝奏云
密码:无

版权声明:
作者:xinyu2ru
链接:https://www.rxx0.com/jinzhan/try-this-one11.html
来源:RUBLOG-分享我的生活
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>