从 Kubernetes 上的应用 运行 订阅云 pub/sub 主题

Subscribe cloud pub/sub topic from app running on Kubernetes

我创建了一个 pub/sub 主题,每当有新对象上传到存储桶时,我都会向该主题发布一条消息。现在我想创建一个订阅,以便在每次将新对象上传到该存储桶时将通知推送到端点。按照文档,我想要这样的东西:

gcloud alpha pubsub subscriptions create orderComplete \ --topic projects/PROJECT-ID/topics/TOPIC \ --push-endpoint http://localhost:5000/ENDPOINT/ --ack-deadline=60 但是,我的应用程序在 kubernetes 上是 运行,似乎 pub/sub 无法到达我的端点。有什么建议吗?

为了让 Cloud Pub/Sub 将消息推送到您的应用程序,您需要提供一个可公开访问的端点。在 Kubernetes 中,这很可能意味着公开 Service。有了这个,你应该有一个non-local(即没有“localhost”)URL来访问你的二进制文件pods 运行。

在创建 Cloud Pub/Sub 订阅之前,您还应该 verify your domain 使用 Cloud Console。

最后,您可以通过changing its configuration将您的订阅设置为推送消息:

gcloud pubsub subscriptions modify-push-config mySubscription \
  --push-endpoint="https://publicly-available-domain.com/push-endpoint"

站在documentation

In general, the push endpoint must be a publicly accessible HTTPS server, presenting a valid SSL certificate signed by a certificate authority and routable by DNS.

因此,您必须按照此处所述使用 Ingress 通过 HTTPS 公开您的服务: https://cloud.google.com/kubernetes-engine/docs/concepts/ingress

是的,@jakub-bujny 指出您需要一个 SSL 端点。因此,在 GKE 上,一种解决方案是将 google's managed certificates 与 Ingress 资源一起使用(link 向您展示如何操作)