运行 Kubernetes 集群上的 Common Lisp 应用程序
running Common Lisp application on Kubernetes cluster
我已经在 GKE 中部署了 prod 10+ java/js 微服务,一切都很好,none 使用外部卷,这是生成新映像、推送到容器注册表和将应用程序升级到新版本时,只需使用新映像部署新部署,并使用滚动更新 pods 进行升级。
我的问题是使用 Common Lisp 应用程序会是什么样子?该语言的主要好处是代码可以在运行时更改。配置 .lisp
文件是否应该附加为 ConfigMap? (更新到 ConfigMap 仍然需要重新创建 pods 才能应用新的 ConfigMap 更改)或者可能是一些卷? (但是相同部署有 10 倍 pods 怎么办?全部从同一卷读取?如果有 50 pods 或更多(不会有问题吗?))并且应该部署应用程序的新版本看起来像 v1 和 v2(新 pods),或者我们是否以某种方式使用运行时更改的好处(使用我上面提到的解决方案),并且 pods 版本保持不变,而通过一些外部解决方案添加了新代码
我可能会用编译后的代码生成一个图像,可能还有一个 post-dump 图像,然后依靠 Kubernetes 以合理的方式在您的 Deployment 或 StatefulSet 中重新启动 pods。如有必要(并且基于网络),使用就绪检查来确定 pods 将接收请求的内容。
顺便说一句,ConfigMap 的投影内容应该显示在容器内,除非您从 ConfigMap 中指定了投影键的文件名,因此应该可以保留源方式,然后让代码本身检查更新或使用另一种机制来发出“重新加载时间”的信号。但是,除非你将它与编译结合起来,否则你最终可能会得到解释代码。
我已经在 GKE 中部署了 prod 10+ java/js 微服务,一切都很好,none 使用外部卷,这是生成新映像、推送到容器注册表和将应用程序升级到新版本时,只需使用新映像部署新部署,并使用滚动更新 pods 进行升级。
我的问题是使用 Common Lisp 应用程序会是什么样子?该语言的主要好处是代码可以在运行时更改。配置 .lisp
文件是否应该附加为 ConfigMap? (更新到 ConfigMap 仍然需要重新创建 pods 才能应用新的 ConfigMap 更改)或者可能是一些卷? (但是相同部署有 10 倍 pods 怎么办?全部从同一卷读取?如果有 50 pods 或更多(不会有问题吗?))并且应该部署应用程序的新版本看起来像 v1 和 v2(新 pods),或者我们是否以某种方式使用运行时更改的好处(使用我上面提到的解决方案),并且 pods 版本保持不变,而通过一些外部解决方案添加了新代码
我可能会用编译后的代码生成一个图像,可能还有一个 post-dump 图像,然后依靠 Kubernetes 以合理的方式在您的 Deployment 或 StatefulSet 中重新启动 pods。如有必要(并且基于网络),使用就绪检查来确定 pods 将接收请求的内容。
顺便说一句,ConfigMap 的投影内容应该显示在容器内,除非您从 ConfigMap 中指定了投影键的文件名,因此应该可以保留源方式,然后让代码本身检查更新或使用另一种机制来发出“重新加载时间”的信号。但是,除非你将它与编译结合起来,否则你最终可能会得到解释代码。