Google 部署管理器 Cloud Scheduler 类型

Posted

技术标签:

【中文标题】Google 部署管理器 Cloud Scheduler 类型【英文标题】:Google Deployment Manager Cloud Scheduler type 【发布时间】:2019-06-10 12:48:03 【问题描述】:

我发现 GCP 没有提供时间表类型。我想知道创建模板、复合类型或类似类型以提供 Cloud Scheduler 类型的步骤。我知道谷歌已经提供了an example。

如果可以通过代码这样做它可以使用python client library,尽管它在文档中说这个库不可用,我可以在代码中内联它。

我想不出一种方法来针对 google API 进行身份验证以执行此类请求。

简而言之,我的问题是如何为云创建 Deployment Manager 类型?我知道这有点模糊。只是想知道它是否可行。

另一方面,我在哪里可以找到这个的官方开发 GCP 服务?

为了完整起见,这里也是相关的Github issue

【问题讨论】:

【参考方案1】:

根据GCP's documentation,尚不支持云调度器类型。

除了我上面链接的那个之外,我不知道这个 GCP 服务的任何官方开发。话虽如此,我将为您的用例创建一个feature request。请添加我遗漏的任何其他内容,您可以使用相同的线程与部署经理团队进行沟通。

【讨论】:

【参考方案2】:

我一直在寻找此功能,并认为我应该提供有关该主题的最新答案。

感谢https://***.com/users/9253778/dany-l 提出的功能请求,让我得到了这个答案。

看起来确实提供了此功能,只是文档尚未更新以反映它。

这是来自https://issuetracker.google.com/issues/123013878的sn-p:

  - type: gcp-types/cloudscheduler-v1:projects.locations.jobs
    name: <YOUR_JOB_NAME_HERE>
    properties:
      parent: projects/<YOUR_PROJECT_ID_HERE>/locations/<YOUR_REGION_HERE>
      name: <YOUR_JOB_NAME_HERE>
      description: <YOUR_JOB_DESCRIPTION_HERE>
      schedule: "0 2 * * *" # daily at 2 am
      timeZone: "Europe/Amsterdam"
      pubsubTarget:
        topicName: projects/<YOUR_PROJECT_ID_HERE>/topics/<YOUR_EXPECTED_TOPIC_HERE>
        data: aGVsbG8hCg== # base64 encoded "hello!"

【讨论】:

此问题是在向 GCP 提出合作伙伴支持请求后打开的。他们只用了一年半的时间就解决了。很好,但事实证明 Terraform 比 DM 更可靠。它具有更好的支持、更多的覆盖范围、灵活性和更多的扩展性。我真的很喜欢 DM,它是静态方法,但我们无法使用这种支持,这是不可接受的 :(【参考方案3】:

您可以将一般的YAML 文件与deployment-manager 一起使用:

config.yaml:

resources:
  - name: <<YOUR_JOB_NAME>>
    type: gcp-types/cloudscheduler-v1:projects.locations.jobs # Cloud scheduler
    properties:
      parent: "projects/<<YOUR_PROJECT_NAME>>/locations/<<YOUR_LOCATION_ID>>"
      description: "<<JOB_DESCRIPTION_OPTIONAL>>"
      schedule: "* */2 * * *" # accepts 'cron' format
      http_target:
        http_method: "GET"
        uri: "<<URI_TO_YOUR_FUNCTION>>" # trigger link in cloud functions

您甚至可以添加以创建 Pub/Sub 工作和其他 deployment-manager 只需添加:

  - name: <<TOPIC_NAME>>
    type: pubsub.v1.topic
    properties:
      topic: <<TOPIC_NAME>>
  - name: <<NAME>>
    type: pubsub.v1.subscription
    properties:
      subscription: <<SUBSCRIPTION_NAME>>
      topic: $(ref.<<TOPIC_NAME>>.name)
      ackDeadlineSeconds: 600

注意:要获取 >,请使用 gcloud app describe

部署使用: gcloud deployment-manager deployments create &lt;&lt;DEPLOYMENT_NAME&gt;&gt; --config=&lt;&lt;PATH_TO_YOUR_YAML_FILE&gt;&gt;

删除使用: gcloud deployment-manager deployments delete &lt;&lt;DEPLOYMENT_NAME&gt;&gt; -q

有关Cloud Scheduler 上的更多properties,请阅读文档: https://cloud.google.com/scheduler/docs/reference/rpc/google.cloud.scheduler.v1#google.cloud.scheduler.v1.HttpTarget

【讨论】:

我很高兴在功能请求 GCP 最终决定实施这一点将近两年之后。从那以后,我们决定 GCP DM 不是管理部署的可靠工具,因为它的支持很差。从第一天开始,它就在 Terraform 中实施和维护

以上是关于Google 部署管理器 Cloud Scheduler 类型的主要内容,如果未能解决你的问题,请参考以下文章

Google Deployment Manager Extensions

Google Cloud Build - 查看日志权限

Cloud Function 部署问题以安排每日 Cloud SQL 导出到 Google Cloud Storage

Google Cloud Functions 部署问题

Google加入Cloud Foundry基金会影响几何?

在 Google Cloud Vertex AI 上使用客户处理程序进行部署