如何使用 DBeaver 连接到本地 kubernetes CockroachDB?

How do I connect to my local kubernetes CockroachDB with DBeaver?

我有一个 Minikube Kubernetes 集群 运行 一个 cockroachdb,它看起来像:

kubectl get pods

test-cockroachdb-0            1/1     Running     17         95m
test-cockroachdb-1            1/1     Running     190        2d
test-cockroachdb-2            1/1     Running     160        2d
test-cockroachdb-init-m8rzp   0/1     Completed   0          2d
cockroachdb-client-secure     1/1     Running     0          2d

我想获得一个可以在我的应用程序中使用的连接字符串。

为了验证我的连接字符串,我使用了 DBeaver 工具。

我的数据库名称配置为'defaultdb',它存在于我的集群上,并且用户具有相关密码。端口也很准确(默认的 cockroachdb minikube 端口)。

然而,关于连接的证书方面,我一头雾水。如何 generate/gather 成功连接到集群所需的证书?如何使用 DBeaver 连接到我的集群?

编辑:

$ kubectl get all

NAME                                         READY   STATUS      RESTARTS   AGE
pod/myname-cockroachdb-0            1/1     Running     27         156m
pod/myname-cockroachdb-1            1/1     Running     197        2d1h
pod/myname-cockroachdb-2            1/1     Running     167        2d1h
pod/myname-cockroachdb-init-m8rzp   0/1     Completed   0          2d1h
pod/myname-client-secure            1/1     Running     0          2d1h


NAME                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)              AGE
service/myname-cockroachdb          ClusterIP   None            <none>        26257/TCP,8080/TCP   2d1h
service/myname-cockroachdb-public   ClusterIP   10.xxx.xxx.xx   <none>        26257/TCP,8080/TCP   2d1h
service/kubernetes                           ClusterIP   10.xx.0.1       <none>        443/TCP              2d1h




NAME                                           READY   AGE
statefulset.apps/myname-cockroachdb   3/3     2d1h


NAME                                         COMPLETIONS   DURATION   AGE
job.batch/myname-cockroachdb-init   1/1           92s        2d1h

您可以使用 kubectl port-forward service/myname-cockroachdb 26257,在 DBeaver 中只需使用 localhost:26257 作为连接字符串。

就像@FL3SH已经说过的。

您可以使用 kubectl port-forward <pod_name> <port>

这在 Cockroach 文档中有很好的解释 Step 4. Access the Admin UI,请以它为例并设置不同的端口。

关于证书:

As each pod is created, it issues a Certificate Signing Request, or CSR, to have the node's certificate signed by the Kubernetes CA. You must manually check and approve each node's certificates, at which point the CockroachDB node is started in the pod.

Get the name of the Pending CSR for the first pod:

kubectl get csr

NAME                                                   AGE       REQUESTOR                               CONDITION
default.node.cockroachdb-0                             1m        system:serviceaccount:default:default   Pending
node-csr-0Xmb4UTVAWMEnUeGbW4KX1oL4XV_LADpkwjrPtQjlZ4   4m        kubelet                                 Approved,Issued
node-csr-NiN8oDsLhxn0uwLTWa0RWpMUgJYnwcFxB984mwjjYsY   4m        kubelet                                 Approved,Issued
node-csr-aU78SxyU69pDK57aj6txnevr7X-8M3XgX9mTK0Hso6o   5m        kubelet                                 Approved,Issued

如果您没有看到待处理的 CSR,请稍等,然后重试。

您可以查看 CSR 窗格 kubectl describe csr default.node.cockroachdb-0

它可能看起来像这样:

Name:               default.node.cockroachdb-0
Labels:             <none>
Annotations:        <none>
CreationTimestamp:  Thu, 09 Nov 2017 13:39:37 -0500
Requesting User:    system:serviceaccount:default:default
Status:             Pending
Subject:
  Common Name:    node
  Serial Number:
  Organization:   Cockroach
Subject Alternative Names:
         DNS Names:     localhost
                        cockroachdb-0.cockroachdb.default.svc.cluster.local
                        cockroachdb-public
         IP Addresses:  127.0.0.1
                        10.48.1.6
Events:  <none>

如果是,那么您可以使用以下方式批准证书:

kubectl certificate approve default.node.cockroachdb-0

请务必遵循 Orchestrate CockroachDB in a Single Kubernetes Cluster 指南。

如果您需要任何进一步的帮助,请告诉我。