谷歌发布订阅。从 AppEngine 到 Kubernetes pod 以及从一个 Kubernetes pod 到另一个 Kubernetes pod 的通信
Posted
技术标签:
【中文标题】谷歌发布订阅。从 AppEngine 到 Kubernetes pod 以及从一个 Kubernetes pod 到另一个 Kubernetes pod 的通信【英文标题】:Google PubSub. Communication From AppEngine to Kubernetes pod and from one Kubernetes pod to another Kubernetes pod 【发布时间】:2020-08-12 18:35:18 【问题描述】:在这两种情况下如何发送和接收消息?
我们正在将我们的应用从 appengine 迁移到 kubernetes。我们有两个以这种方式分布的微服务:
开发环境
服务 1:在 Kubernetes pod(名为 1 的集群)上运行。它在 AppEngine 上运行 服务 2:在 Kubernetes pod(名为 1 的集群)上运行。它在 AppEngine 上运行问题是服务 1 不断向 AppEngine 上的服务 2 发送 pubsub 消息。它应该向运行在 Kubernetes 上的服务 2 发送 pubsub 消息
生产环境
服务 1:在 AppEngine 上运行,但很快它将在 Kubernetes pod(名为 1 的集群) 服务 2:在 AppEngine 上运行,但很快它将在 Kubernetes pod(名为 1 的集群)在生产环境中,现在服务 1 和 2 通过 pubsub 进行通信。将生产环境中的两种服务迁移到 Kubernetes pod 的最佳方式是哪种(以及以什么顺序)?
我正在考虑将服务 1 和 2 同时移动到 Kubernetes 并开始使用 http rest 在它们之间发送和接收消息(这意味着停止使用 Google PubSub),但我不确定。我看到的另一个问题是推送端点需要 https,而我的 kubernetes 服务的外部 ip 是 http
【问题讨论】:
【参考方案1】:解决办法是:
1) 将 pubsub 订阅更改为 pull 类型
2) 创建服务帐号凭据
3) 适配的服务代码(现在在 Kubernetes 中运行),以便它实际拉取 pubsub 消息
【讨论】:
【参考方案2】:PubSub 消息被发送到一个主题。该主题的每个侦听器(例如 GAE 服务 2 和 k8s 服务 2)都会收到发送的消息。
如果您想根据来源(GAE 和 k8s)区分消息,最简单的方法是创建另一个主题。并且只在 k8s 服务中配置这个新主题。
但是,如果服务也这样做,我看不出共享 pubsub 主题可能是什么问题。
【讨论】:
感谢您的回答。问题是我没有看到 k8s 服务 2 接收 pubsub 消息 啊,好的。这个tutorial 在Kubernetes 中为主题echo
设置了一个回显服务。在代码 main.py
here 上,您可以将主题名称更改为您的主题名称以测试连接。
谢谢,但我看到的另一个问题是推送端点需要 https,而我的 kubernetes 服务的外部 IP 是 http以上是关于谷歌发布订阅。从 AppEngine 到 Kubernetes pod 以及从一个 Kubernetes pod 到另一个 Kubernetes pod 的通信的主要内容,如果未能解决你的问题,请参考以下文章
在谷歌应用引擎中将数据流式传输到 bigquery - java