使用下面的数据库连接字符串运行示例app,以连接到安全集群
sql.Open("postgres", "postgresql://root@localhost:26257/dbname?sslmode=verify-full&sslrootcert=<location of ca.crt>&sslcert=<location of client.root.crt>&sslkey=<location of client.root.key>")
蟑螂数据库在本地运行良好,所以我决定按照here
的说明将数据库(与数据库解决方案中一样,而不是实际数据)移至GCP Kubernetes Engine中。一切正常-创建了pod并可以使用云控制台中的内置SQL客户端。
现在,我想使用以前的示例应用程序现在连接到这个新的云数据库。我使用kubectl expose
命令创建了一个负载均衡器,并在代码中使用了一个公共IP。
如何获取新的ca.crt, client.root.crt, client.root.key
文件以在我的连接字符串中用于在GCP上运行的数据库?
我们有5个以上的开发人员,其想法是让他们在本地计算机上编写代码,并使用连接字符串和证书连接到云数据库。
还是有更好的方法让5个以上的开发人员使用在GCP上运行的单个DEV DB集群?
答案 0 :(得分:1)
建议对Kubernetes CockroachDB集群运行的方法是让您的应用程序在同一集群中运行。这使得证书生成相当简单。请参见built-in SQL client示例及其config file。
上面的配置使用init容器发送客户端证书的CSR,并使它们可用于该容器(在这种情况下,仅是蟑螂sql客户端,但这可能是其他任何东西)。
如果您想在kubernetes集群之外运行客户端,最简单的方法是直接从客户端pod复制生成的证书。建议使用非root
用户:
ca.crt
,client.<username>.crt
和client.<username>.key
复制到本地计算机上 注意:您的kubernetes集群的公共DNS或IP地址很可能不包含在节点证书中。您需要在启动节点之前修改list of hostnames/addresses,或将连接URL更改为sslmode=verify-ca
(有关详细信息,请参见client connection parameters)。
或者,您可以使用密码身份验证,在这种情况下,您只需要CA证书。