Support postgres or other RDBMS for HA cluster state #5858
Labels
c-aw
Internal Customer Reference
c-im
Internal Customer Reference
c-ju
Internal Customer Reference
c-m
Internal Customer Reference
feature-request
Used for new features in Teleport, improvements to current should be #enhancements
What
What would you like Teleport to do differently?
Support RDBMS's like postgres or mysql for cluster state, and potentially audit logs.
How
(Making a lot of assumptions here). Since teleport auth nodes already support sqlite on local storage as a backend, I would expect the majority of the SQL logic to already be built out.
SQL
driver with different implementations.Why
Currently, teleport only supports clustered, NoSQL-like storage for cluster state (etcd/dynamo). While these technologies work great, there's also a lot of specialized knowledge and configuration that needs to be done to actually build them in a secure, highly available manner, as well as maintaining and updating them. For small or simple use-cases they can take more time to manage than teleport itself does, especially if it's exclusively being setup for teleport.
At $dayjob, we're a postgres shop, and have a ton of expertise in building and maintaining highly-available postgres clusters. Being able to point teleport directly at postgres for it's cluster state (and potentially even audit logs), would be one less technology that we have to maintain and update (which to be honest, we aren't doing with etcd).
I would also argue that postgres/mysql is simpler to setup and maintain than etcd (the only on-prem storage solution for multiple auth nodes currently supported). I've been burned a number of times by not knowing that I needed to cap etcd revisions, configure auto pruning of those revisions, not to mention getting backups working correctly. That's partly on me for not doing enough research, but I also know that
sudo apt-get install postgresql
will get me a postgres server in a working and reliable state, and there are tons of tutorials and guides on how to properly configure and architect postgres. If I want to setup replication, SSL, or backups, there are tons guides to get those working too. The vast majority of dev/engineers/etc are going to be much more familiar with RDBMS because of rails, django, etc that are built around them, than etcd or dynamo.I believe the cluster and audit schemas are stable and consistent enough to be easily translated to columns/tables, but have not really dug into them that much.
Additionally, if only standard SQL is used, it should be as easy as adding the DB driver to support another RDBMS one the initial SQL logic is implemented.
While not a critical need at the moment, postgres should be able to handle a huge amount of audit logs. It would also make querying and filtering those logs a lot easier, since there would be columns.
Workaround
If a workaround exists, please include it.
The text was updated successfully, but these errors were encountered: