繁体   English   中英

如何使用 DBeaver 直接连接到 Kube.netes 上的 MySQL,而不是使用 kubectl port-forward?

[英]How do I connect to MySQL on Kubernetes with DBeaver directly instead of using kubectl port-forward?

在终端上运行以下命令后,当前使用 DBeaver 连接到 Kube.netes 上的 MySQL。

kubectx arn:aws:eks:XXX:cluster/XXX && kubens XXX && kubectl port-forward --address 0.0.0.0 XXX 13306:3306

我正在寻找一种直接在 DBeaver 上进行端口转发的方法,因为每次运行命令然后连接 DBeaver 是很乏味的。

有哪些可能的方法可以做到这一点?

一种选择是Kubernetes可以定义节点端口服务

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app.kubernetes.io/name: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

公开数据库并不安全,但如果您仍想访问,最好将 IP 列入白名单

  • 使用 TCP 负载均衡器公开数据库
  • 使用节点端口公开

使用 TCP 负载均衡器,您将获得将 IP 列入白名单的优势。 这是 AWS NLB 示例。

apiVersion: v1
kind: Service
metadata:
  name: db-tcp-servie
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"     
    service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
    service.beta.kubernetes.io/aws-load-balancer-name: "db-nlb"
spec:
  type: LoadBalancer
  loadBalancerSourceRanges:
  - "my-allowed-ip/32"
  - "11.22.33.44/32"
  selector:
    app.kubernetes.io/name: db-pod-selector
    app.kubernetes.io/instance: db-pod-selector
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306

或者你可以考虑节点端口服务

NodePort 是集群中每个节点上的开放端口。 Kubernetes 透明地将 NodePort 上的传入流量路由到您的服务,即使您的应用程序在不同的节点上运行。

kubernetes-ingress-nodeport-load-balancers-and-ingress-controllers

好像暂时不能

但他们确实有一个新问题,谁对此持开放态度: https://github.com/dbeaver/dbeaver/issues/15242

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM