I have been reading about Spring Cloud Config server to help us move to a centralized config server on cloud. Currently, we store both config and passwords in a file to which limited people have view access in Production. I have a few questions about implementing it in actual production with the various backends that it supports:
FileSystem : If we use file system as the storage medium for our config on the cloud, we will need a persistent volume for it. In that case, the PV will be different for different envs. When we need to update a PV with a new config in Prod, how can it be done? (I can only think of having a container mount the PV and log into the container via bash and add/update config). Is there a different approach?
Git : If we have git as the storage medium and lets say we have different branches for different environments, the developer would be able to view the Prod branch and also passwords in Prod branch. Googling suggested that there is no way to restrict viewing of certain branches in Git. So how is Git helpful here? Also, connection to Git needs password / SSH key which will need to be stored in a PV (then issues with #1 are applicable again)
JDBC : If we have a database as the storage medium, the password to connect to the database needs to be specified in the SCCS config file - which again is not secure. We could load it from a file in the filesystem, but that would mean we need PV to store the password (then issues with #1 are applicable again). Also, how are additions/updates to configs done for Production? (If RDBMS is used, we need to connect a client and run SQL Inserts?)
Vault : If vault is to be used, it too will need a key / password to be store in PV (and again questions of #1)
Overall, I am not sure how SCCS can be used in an actual Production environment. If someone has implemented SCCS for Production in which their config has passwords, can you please share some insights?
Thanks,
Midhun