繁体   English   中英

GKE:具有推送订阅者的 Pod 之间的 Pubsub 消息

[英]GKE: Pubsub messages between pods with push subscribers

我正在使用具有多个 pod 的 GKE 部署,我需要在 pod 之间发送和接收消息。 我想使用pubsub 推送订阅者

我发现对于推送,我需要为订阅者 pod 配置 https 访问。

为了接收推送消息,您需要一个可公开访问的 HTTPS 服务器来处理 POST 请求。 服务器必须提供由证书颁发机构签名且可由 DNS 路由的有效 SSL 证书。 您还需要验证您是否拥有该域(或对端点具有同等访问权限)。

这是真的需要还是有一些解决方法。 这是否意味着我应该使用 Ingress 公开每个订阅者 pod,即使是用于内部通信?

如果您只需要在某个端口上公开 pod(用于 pod 到 pod 通信),那么您只需要通过针对该端口的服务(在您的情况下为端口 443)来公开每个 pod。

例如,通过使用以下 YAML,您可以创建一个以 Pod 上的端口为目标的服务:

apiVersion: v1
kind: Service
metadata:
  name: my-pod
  labels:
    run: my--pod
spec:
  ports:
  - port: 443
    targetPort: 443
    protocol: TCP
  selector:
    run: my-pod

以上将创建一个服务,该服务以任何带有run: my-pod标签的 Pod 上的 TCP 端口 443 为目标。 在文件中, targetPort是容器(在 pod 内)接受流量的portport是抽象的 Service 端口,它可以是其他 pod 用来访问 Service 的任何端口)。

编辑:

但是,如果您需要 pod 能够与 Pub-Sub API 进行通信,则需要具有与外部通信的能力,因此建议使用 yes ingress。

在评论中回答您的问题“我想知道为什么 Google 需要使用公共 HTTPS 而不是在某些内部请求上访问 Kubernetes”-原因是它不是内部请求。 Pub-Sub API 位于您的项目/网络之外,因此数据可以跨其他网络传输。 为了安全起见,它需要加密——这就是使用 HTTPS 的原因。

我还不能确认这一点,但是根据GCP 的这篇文章,如果您可以通过向集群授予正确的服务帐户权限来对 Cloud Platform 服务进行身份验证,则可以使用 Pub/Sub Push 机制在 Kubernetes 引擎上使用消息。

编辑:好的,这仅适用于基于拉的模型,但基于拉的模型在任何一天都可以更好地扩展,您有更多的控制权:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM