不幸的是,AppsCode 的优秀人员(kubedb 的制造商)现在要求每个用户获得免费许可证。 虽然 kuby 可以做一些棘手的事情来自动获得许可证,但这并不特别道德(甚至可能合法?)我能想到的唯一解决方案是在集群设置期间将用户指向 AppsCode 网站,然后提示他们许可证文件的内容。 显然这并不理想,但我认为这是我们唯一的选择,如果我们想继续使用 kubedb 和 kuby(我认为我们这样做 - 这太棒了)。
好的,这里有一些额外的上下文。 事实证明,困难的部分不是以编程方式获取许可证(这是可能的,我们只需要提示人们输入许可证服务器令牌、电子邮件地址等)。 困难的部分是_升级_kubedb 运算符和各个数据库。 卸载 v0.12 本身就很困难,因为您显然不想删除任何现有的数据库实例,但我最终让它工作了。 幸运的是,使用 Helm 安装 v0.18(撰写本文时的最新版本)非常容易……但该死的,升级已经_已经_运行的现有 Postgres 或 MySQL 实例(零停机时间)非常困难。 以下是我(几乎)为 Postgres 工作的步骤:
Postgres
CRD。 说得通。 幸运的是,有一些方法可以诱使 k8s 做你想做的事。postgres
(Kuby 默认使用root
),请注意在新数据库中postgres
用户提供密码. 这是必要的,因为我认为这是 kubedb 初始化脚本中的一个错误。 这个新的数据库显然必须与旧的名称不同,这是一个问题。 db 的名称决定了 rails 连接的 DNS 名称,我们无法真正更改。 唔...我目前正试图弄清楚如何轻松地将 rails 应用程序指向新的数据库服务。 服务 URL 本质上是硬编码的,不能动态更改。 此外,新的数据库服务不能与现有的同名,因此我们必须将“正确”的服务存储在某个地方(可能是部署上的注释?)并在每个... docker build cuz 上查阅它那是我们重写database.yml的时候吗? 啊。
另一种解决方案可能是使用某种代理,该代理可以动态地将流量指向一个或另一个服务,例如负载均衡器,但位于服务之上。
虽然 kuby 可以做一些棘手的事情来自动获得许可证,但这并不让人觉得特别道德(甚至可能是合法的?)
Tamal 是个好人,我认为他根本不会介意,只要您向用户公开正在发生的事情的细节,这样当临时许可证在月底到期时他们就不会感到惊讶。 (?许可证到期时会发生什么,我现在想知道?如果这意味着备份已停止,那可能会很糟糕;如果这意味着其他事情开始失败,也可能会很糟糕......如果这意味着您无法为现在,在更新许可证之前,这可能还不错。)
外部数据库已经有了一个选项,因此用户可以选择继续使用 KubeDB 或以另一种方式将数据库掌握在自己手中,坦率地说,今天这不是一个难题,除非您使用的不是支持您需要的数据库。
感谢您介绍升级所需的内容! 我有我的 KubeDB 许可证,它被慷慨地授予 Team Hephy 用于我们的生产集群,并且我有需要升级的旧数据库,这些数据库从未从 KubeDB 启动或托管; 我获得了学习使用数据库备份的许可证,我同时拥有 PostgresQL 和 MariaDB,tl;博士我在这方面也为我完成了工作。
我现在正在学习如何在我的家庭实验室集群中运行适当的存储 CSI 驱动程序,我希望这将对我处理数据库的方式产生巨大的影响,并改善我的“生产”集群的灾难恢复属性。 🎉
从长远来看,Kuby 也可能成为 KubeDB 的一个很好的销售渠道。 不知道你会怎么想!