【问题标题】:Adding auxiliary DB data during deployment在部署期间添加辅助数据库数据
【发布时间】:2017-06-02 20:30:36
【问题描述】:

我的应用由两个容器组成:应用本身和数据库。我打算将应用程序包装到图表中​​,从而为轻松的可重复部署铺平道路。

除了设置/读取环境 envs(helm+kubernetes 似乎处理得很好)之外,应用程序的部分配置是:

确保数据库预先填充了特殊的辅助数据(例如管理员用户存在,创建新用户所需的一些用户角色名称存在等)。

我喜欢让可读的 yaml 文件以人类可读的格式保存整个配置的想法。但是乍一看,helm 似乎对这种(数据库记录)类型的配置没有任何帮助。

话虽如此,放置代码/配置以确保数据库包含某些辅助记录的最佳位置是什么?配置 yaml 文件?一个容器初始化脚本,用 bash 写的?

【问题讨论】:

    标签: sql configuration kubernetes kubernetes-helm


    【解决方案1】:

    您说得对,Kubernetes 或 Helm 无法帮助您准备预填充的数据库记录/模式。

    您可能应该让您的应用程序初始化这些预填充的数据。如果您不想将此逻辑放入您的应用程序中,您可以发布一个初始化脚本并使用 Kubernetes 配置一个 init container

    Kubernetes 确保每次重新启动应用程序容器时,init 容器首先运行。在 init 容器中,你可以执行一个 bash/python/... 脚本来确保你想要的记录在那里。

    【讨论】:

    • 谢谢艾哈迈德!我不知道初始化容器的概念。这超级有用。我在单独的 ReplicationControllers 中有应用程序 pod 和 DB pod(以便两者都可以独立扩展,以备不时之需)。您认为 init 容器属于哪个 Replication Controller?我认为它应该是包含应用程序代码的复制控制器?
    • 我认为,因为它是应用程序需要这些记录,所以它属于应用程序的初始化容器,而不是数据库。但是如果数据库只提供一项服务,那么您也可以在数据库的 init 容器中对其进行初始化。但我敢打赌,如果您将脚本与应用程序一起发布,您可以重用代码。也使用 ReplicaSets 或 Deployments 而不是 Replicationcontrollers。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多