将 Cockroach DB 从本地机器迁移到 GCP Kubernetes Engine
Migrating Cockroach DB from local machine to GCP Kubernetes Engine
- 按照说明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
将数据库(如在数据库解决方案中,而不是实际数据)移动到 GCP Kubernetes Engine
一切正常 - pods 创建并可以使用来自云控制台的内置 SQL 客户端。
现在我想使用之前的示例应用程序连接到这个新的云数据库。我使用 kubectl expose
命令创建了一个负载平衡器,并获得了一个 public ip 以在代码中使用。
如何在 GCP 上的数据库 运行 的连接字符串中获取新的 ca.crt, client.root.crt, client.root.key
文件?
我们有 5 名以上的开发人员,我们的想法是让他们在本地机器上编写代码并使用连接字符串和证书连接到云数据库。
或者是否有更好的方法让 5 名以上的开发人员在 GCP 上使用单个 DEV 数据库集群 运行?
针对 Kubernetes CockroachDB 集群 运行 的推荐方法是让您的应用程序 运行 在同一个集群中。这使得证书生成相当简单。见 built-in SQL client example and its config file.
上面的配置使用一个初始容器来发送客户端证书的 CSR,并使它们对容器可用(在本例中只是 cockroach sql 客户端,但它可以是其他任何东西)。
如果您希望 运行 kubernetes 集群之外的客户端,最简单的方法是直接从客户端 pod 复制生成的证书。建议使用非 root
用户:
- create the user 通过 SQL 命令
- 为您的新用户修改 client-secure.yaml 配置并启动新客户端 pod
- 批准客户端证书的 CSR
- 等待 pod 完成初始化
- 将
ca.crt
、client.<username>.crt
和 client.<username>.key
从 pod 复制到您的本地机器上
注意:您的 kubernetes 集群的 public DNS 或 IP 地址很可能 不 包含在节点证书中.您要么需要修改 list of hostnames/addresses before bringing up the nodes, or change your connection URL to sslmode=verify-ca
(see client connection parameters 以获取详细信息)。
或者,您可以使用密码身份验证,在这种情况下您只需要 CA 证书。
- 按照说明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
将数据库(如在数据库解决方案中,而不是实际数据)移动到 GCP Kubernetes Engine一切正常 - pods 创建并可以使用来自云控制台的内置 SQL 客户端。
现在我想使用之前的示例应用程序连接到这个新的云数据库。我使用 kubectl expose
命令创建了一个负载平衡器,并获得了一个 public ip 以在代码中使用。
如何在 GCP 上的数据库 运行 的连接字符串中获取新的 ca.crt, client.root.crt, client.root.key
文件?
我们有 5 名以上的开发人员,我们的想法是让他们在本地机器上编写代码并使用连接字符串和证书连接到云数据库。
或者是否有更好的方法让 5 名以上的开发人员在 GCP 上使用单个 DEV 数据库集群 运行?
针对 Kubernetes CockroachDB 集群 运行 的推荐方法是让您的应用程序 运行 在同一个集群中。这使得证书生成相当简单。见 built-in SQL client example and its config file.
上面的配置使用一个初始容器来发送客户端证书的 CSR,并使它们对容器可用(在本例中只是 cockroach sql 客户端,但它可以是其他任何东西)。
如果您希望 运行 kubernetes 集群之外的客户端,最简单的方法是直接从客户端 pod 复制生成的证书。建议使用非 root
用户:
- create the user 通过 SQL 命令
- 为您的新用户修改 client-secure.yaml 配置并启动新客户端 pod
- 批准客户端证书的 CSR
- 等待 pod 完成初始化
- 将
ca.crt
、client.<username>.crt
和client.<username>.key
从 pod 复制到您的本地机器上
注意:您的 kubernetes 集群的 public DNS 或 IP 地址很可能 不 包含在节点证书中.您要么需要修改 list of hostnames/addresses before bringing up the nodes, or change your connection URL to sslmode=verify-ca
(see client connection parameters 以获取详细信息)。
或者,您可以使用密码身份验证,在这种情况下您只需要 CA 证书。