New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support recent versions of kubedb #54
Comments
Ok, some additional context here. It turns out the hard part isn't programmatically fetching a license (which is possible, we just have to prompt people for a license server token, email address, etc). The hard part is upgrading the kubedb operator and individual databases. Uninstalling v0.12 is hard by itself because you obviously don't want to take down any existing database instances, but I eventually got it working. Fortunately installing v0.18 (the latest version at the time of this writing) is pretty easy with Helm... but damn it is super hard to upgrade an existing Postgres or MySQL instance that's already running (with zero downtime). Here are the steps I've (almost) got working for Postgres:
I'm currently stuck trying to figure out how to easily point the rails app at the new database service. The service URL is essentially hard-coded and can't change dynamically. Moreover the new database service can't have the same name as the existing one, so we'd have to store the "right" one somewhere (maybe an annotation on the deployment?) and consult it on every... docker build cuz that's when we rewrite the database.yml? UGH. Another solution could be to use some sort of proxy that could dynamically point traffic at one service or another, like a load balancer but on top of services. |
Tamal is a good fella and I don't think he will mind at all, as long as you expose the details of what is happening to users so they are not surprised when the temporary license expires at the end of the month. (? what happens when the license expires, I wonder now? If it means backups are stopped, that could be bad; if it means other things start failing, also could be bad... if it means you just cannot create new databases for now, until the license is renewed, this might not be so bad.) There's an option for external database already, so users have the option of continuing with KubeDB or taking databases into their own hands another way, which is frankly not a difficult problem today unless you are not using a cloud provider that has support for the type of database that you need. Thanks for the walk-through about what is needed to upgrade! I have a license for my KubeDB, which is generously granted to Team Hephy for our production cluster, and I have older databases which are in need of upgrades, that were never started or hosted from KubeDB; I got the license to learn to use the database backups, I have both PostgresQL and MariaDBs, tl;dr I've got my work cut out for me in this area, as well. I'm just now learning how to operate a proper storage CSI driver with my home lab cluster, and I expect this is going to make a huge difference in how I handle databases and improve the disaster recovery properties of my "production" cluster. 🎉 Kuby could also, in the long run, turn out to be a great sales vector for KubeDB. I don't know how you'll feel about that! |
Oh the license expires too?? Yikes. I actually reached out to the AppsCode team asking if there was any way to avoid the licensing issues, and they basically said "no" 😏 Oh well, I understand why they've chosen to go that route.
Right, that's what most people are doing with Kuby today because they (rightly) distrust running something as sensitive as their database in k8s.
I have to admit to knowing next to nothing about the CSI stuff. If you end up writing about this, I'd be curious to read it :)
I just landed a long-running branch that removes KubeDB in favor of CockroachDB, which I think is going to be a much better long-term bet for Kuby than either MySQL or Postgres. Nothing against KubeDB - I still think it's an awesome product. It's just that Cockroach was designed from the beginning to work in cloud environments like k8s. |
Unfortunately the fine people over at AppsCode (the makers of kubedb) now require each user to obtain a free license. While kuby could do some tricky things to obtain a license automatically, that doesn't feel particularly moral (or maybe even legal?) The only solution I can think of is to point the user to the AppsCode website during cluster setup and then prompt them for the contents of the license file. Obviously that's not ideal, but I think it's the only option we have if we want to keep using kubedb with kuby (which I think we do - it's awesome).
The text was updated successfully, but these errors were encountered: