【问题标题】:Migrating Cockroach DB from local machine to GCP Kubernetes Engine将 Cockroach DB 从本地机器迁移到 GCP Kubernetes Engine
【发布时间】:2018-08-15 06:11:34
【问题描述】:
  • 按照指令here 创建本地3 节点安全集群
  • 使用以下数据库连接字符串运行 go 示例 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>")

Cockroach DB 在本地运行良好,因此我决定使用指令 here 将 DB(在 DB 解决方案中,而不是实际数据)移动到 GCP Kubernetes Engine

一切正常 - 创建了 pod,并且可以从云控制台使用内置 SQL 客户端。

现在我想使用之前的示例应用程序连接到这个新的云数据库。我使用kubectl expose 命令创建了一个负载均衡器,并在代码中使用了一个公共 ip。

如何获取新的ca.crt, client.root.crt, client.root.key 文件以在我的连接字符串中用于在 GCP 上运行的数据库?

我们有 5 个以上的开发人员,我们的想法是让他们在本地机器上编写代码并使用连接字符串和证书连接到云数据库。

或者有没有更好的方法让 5 个以上的开发人员使用在 GCP 上运行的单个 DEV 数据库集群?

【问题讨论】:

    标签: kubernetes cockroachdb


    【解决方案1】:

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

    上面的配置使用一个 init 容器来发送客户端证书的 CSR 并使它们可用于容器(在本例中只是 cockroach sql 客户端,但它可以是其他任何东西)。

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

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

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

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

    【讨论】:

    • 抱歉,我是 GCP 和 Kubernetes 的新手。我该怎么做:copy the ca.crt, client.<username>.crt and client.<username>.key from the pod onto your local machine
    • 您可以使用kubectl cp <some-namespace>/<some-pod>:/cockroach-certs certs,其中 pod 是使用所需客户端证书和密钥(并且还具有 CA 证书)初始化的 pod。我再次强调,最好在 Kubernetes 集群中运行客户端。
    • 谢谢,kubetcl 复制工作了,(但是 ca.crt 有符号链接,所以必须从不同的文件夹中获取)。我还必须将 ssl-mode 更改为 verify-ca。好的,我将把问题标记为已回答。关于推荐的更多内容。我们有一个连接到 cockroach DB 的 golang 网络应用程序。我们还有 5 个以上的开发人员,我们希望共享数据库,而不是本地机器上的代码。做这个的最好方式是什么?另外,如果 Web 应用程序在同一个集群中运行,我猜我不需要负载均衡器,我只使用客户端 pod?对吗?
    • 嘿,有没有将 go-app 迁移到 GCP 的教程,以便它可以连接到 GCP 上的 Kubernetes Cockroach DB 集群?基本上,我们也希望根据建议将 go-app 移动到 GCP,让应用程序在同一个集群中运行?
    • 你可以修改上面链接的client-secure 配置来运行你的docker镜像而不是cockroachdb sql shell。
    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2021-11-16
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2021-04-20
    相关资源
    最近更新 更多