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 <<DEPLOYMENT_NAME>> --config=<<PATH_TO_YOUR_YAML_FILE>>
删除使用:
gcloud deployment-manager deployments delete <<DEPLOYMENT_NAME>> -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