将蟑螂数据库从本地计算机迁移到GCP Kubernetes引擎

时间:2018-08-15 06:11:35

标签: kubernetes cockroachdb

  • 按照说明here创建本地3节点安全群集
  • 使用下面的数据库连接字符串运行示例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集群?

1 个答案:

答案 0 :(得分:1)

建议对Kubernetes CockroachDB集群运行的方法是让您的应用程序在同一集群中运行。这使得证书生成相当简单。请参见built-in SQL client示例及其config file

上面的配置使用init容器发送客户端证书的CSR,并使它们可用于该容器(在这种情况下,仅是蟑螂sql客户端,但这可能是其他任何东西)。

如果您想在kubernetes集群之外运行客户端,最简单的方法是直接从客户端pod复制生成的证书。建议使用非root用户:

    通过SQL命令
  • create the user
  • 修改新用户的client-secure.yaml配置并启动新的客户端pod
  • 批准客户证书的CSR
  • 等待吊舱完成初始化
  • 将Pod中的ca.crtclient.<username>.crtclient.<username>.key复制到本地计算机上

注意:您的kubernetes集群的公共DNS或IP地址很可能包含在节点证书中。您需要在启动节点之前修改list of hostnames/addresses,或将连接URL更改为sslmode=verify-ca(有关详细信息,请参见client connection parameters)。

或者,您可以使用密码身份验证,在这种情况下,您只需要CA证书。