我有一个后端服务,我将使用 Kubernetes(带有 Helm 图表)来控制它。这个后端服务连接到一个数据库(MonogoDB,它就是这样)。在数据库准备好接收连接之前启动后端服务是没有意义的(后端将通过重试来处理丢失的数据库,但它会浪费资源并填充日志文件以分散注意力错误信息)。
为此,我相信我可以将一个init 容器添加到我的后端,并让该 init 容器等待(或轮询)直到数据库准备好。这似乎是init 容器的预期用途之一
因为 init 容器在任何应用程序容器启动之前运行完成,所以 init 容器提供了一种机制来阻止或延迟应用程序容器启动,直到满足一组先决条件。
也就是说,让我的服务的 init 容器执行与数据库的就绪探测相同的操作。这反过来意味着将代码从数据库的配置(Helm 图表)复制并粘贴到我的后端的配置(或 Helm 图表)。不理想。有没有更简单的方法?有没有一种方法可以向 Kubernetes声明,在知道数据库准备好之前不应该启动我的服务?