Google 滚动部署的云 CDN 和资产指纹识别

Google cloud CDN and asset fingerprinting with rolling deployments

我在 GKE 上设置了一个 kubernetes 环境,其中有 6 个副本 pods 和一个连接到启用了 Google Cloud CDN 的 GCP 负载均衡器的入口。

滚动部署如何在资产指纹识别方面发挥作用?在滚动部署正在进行中并且对新资产指纹的请求被路由到还没有新资产指纹的 pod 的情况下?如何缓解这种情况?或者 Google Cloud CDN 会处理这个问题吗?

这篇文章描述了我想到的情况: https://buildingvts.com/serving-assets-while-rolling-your-deploys-c656ce6a2123

此处的回复将基于与指纹哈希相关的shared link。请澄清资产指纹识别和 运行-time (python, ruby, nodejs) 的含义,这将有助于更好地回答问题。

根据提出这个问题的方式,我怀疑容器和 Kubernetes 的使用方式存在反模式。当您询问资产而不是动态内容的路径时,我怀疑您正在启动 Pod 并在开始时编译所有资产。通常,您会在图像创建时完成所有这些工作。所以服务应该不会中断,因为他们的所有资产都是在开始时间之前预先生成的(因为我假设共享 link 上的白屏意味着服务中断)。

对于手头的问题,Kubernetes 不会做任何普通负载均衡器不会做的事情。 Kubernetes 5 元组哈希连接通过负载均衡器连接到节点,然后连接到 pod。一旦从 Web 浏览器创建连接,它将(可能)继续由 pod 提供服务,直到连接终止。

Google Cloud CDN 中没有机制来确保不中断。如果缓存中没有资产,它将必须转到 pod,而 pod 可能有也可能没有相关资产。如果资产在缓存中,那么它将在不连接到 pod 的情况下提供它。