首页 > 解决方案 > 在 Kubernetes 集群中使用 pgAdmin 访问数据库

问题描述

在我当前的非 Kubernetes 环境中,如果我需要访问 Postgres 数据库,我只需设置一个 SSH 隧道:

ssh -L 5432:localhost:5432 user@domain.com

我试图弄清楚如何在我在 EKS 中设置的测试 Kubernetes 集群中做类似的事情,这不会带来很大的安全风险。例如,在入口控制中创建到数据库端口的路径是一个糟糕的主意。

集群将设置在 Postgres 位于 pod 中的位置,但所有数据都在持久卷声明中,因此当 pod 被销毁时数据仍然存在。

在这种设置中如何使用 pgAdmin 访问数据库?

标签: postgresqlamazon-web-serviceskubernetesamazon-eks

解决方案


kubectl命令可以通过 kube-api将 TCP 端口转发到 POD

kubectl port-forward {postgres-pod-ID} 5432:5432

如果您不使用 cluster-admin 用户,则该用户需要绑定到允许其create pods/portforward在 pod 命名空间中的角色。

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: pg-portforward
rules:
  - apiGroups: [""]
    resources: ["pods/portforward"]
    verbs: ["create"]

推荐阅读