从 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"
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 向您展示如何操作)
我创建了一个 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"
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 向您展示如何操作)