在 Kubernetes 集群中使用 pgAdmin 访问数据库
Accessing database with pgAdmin in Kubernetes cluster
在我当前的非 Kubernetes 环境中,如果我需要访问 Postgres 数据库,我只需设置一个 SSH 隧道:
ssh -L 5432:localhost:5432 user@domain.com
我正在尝试弄清楚如何在我在 EKS 中设置的测试 Kubernetes 集群中执行类似的操作,这不会涉及很大的安全风险。例如,在入口控制中创建到数据库端口的路径是一个 糟糕 的想法。
集群将设置在 Postgres 位于 pod 中的位置,但所有数据都在持久卷声明中,因此当 pod 被销毁时数据仍然存在。
在这种设置中如何使用 pgAdmin 访问数据库?
kubectl
命令可以通过 kube-api
forward TCP ports 进入 POD
kubectl port-forward {postgres-pod-ID} 5432:5432
如果您没有使用 cluster-admin 用户,则需要将该用户绑定到允许其在 pods 命名空间中 create
pods/portforward
的角色。
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pg-portforward
rules:
- apiGroups: [""]
resources: ["pods/portforward"]
verbs: ["create"]
我有类似的设置。我的 postgreSQL 数据库部署在 AWS 云中 kubernetes 集群 运行 的一个 pod 中。以下是我在本地计算机上从 pgAdmin 运行 访问此远程数据库所执行的步骤(遵循 this video)。
1 -> 将数据库的服务类型从 ClusterIP
修改为 NodePort
,如下所示。
apiVersion: v1
kind: Service
metadata:
name: db
spec:
selector:
app: db
ports:
- name: dbport
port: 5432
nodePort: 31000
type: NodePort
2-> 将新规则添加到您的 Kubernetes 集群的任何节点(EC2 实例)的安全组,如下所示。
3-> 使用节点(EC2 实例)的 public IPv4 地址连接到此远程数据库。
HostAddress: 节点 ec2 实例的 IPv4 地址。
端口:31000
在我当前的非 Kubernetes 环境中,如果我需要访问 Postgres 数据库,我只需设置一个 SSH 隧道:
ssh -L 5432:localhost:5432 user@domain.com
我正在尝试弄清楚如何在我在 EKS 中设置的测试 Kubernetes 集群中执行类似的操作,这不会涉及很大的安全风险。例如,在入口控制中创建到数据库端口的路径是一个 糟糕 的想法。
集群将设置在 Postgres 位于 pod 中的位置,但所有数据都在持久卷声明中,因此当 pod 被销毁时数据仍然存在。
在这种设置中如何使用 pgAdmin 访问数据库?
kubectl
命令可以通过 kube-api
kubectl port-forward {postgres-pod-ID} 5432:5432
如果您没有使用 cluster-admin 用户,则需要将该用户绑定到允许其在 pods 命名空间中 create
pods/portforward
的角色。
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pg-portforward
rules:
- apiGroups: [""]
resources: ["pods/portforward"]
verbs: ["create"]
我有类似的设置。我的 postgreSQL 数据库部署在 AWS 云中 kubernetes 集群 运行 的一个 pod 中。以下是我在本地计算机上从 pgAdmin 运行 访问此远程数据库所执行的步骤(遵循 this video)。
1 -> 将数据库的服务类型从 ClusterIP
修改为 NodePort
,如下所示。
apiVersion: v1
kind: Service
metadata:
name: db
spec:
selector:
app: db
ports:
- name: dbport
port: 5432
nodePort: 31000
type: NodePort
2-> 将新规则添加到您的 Kubernetes 集群的任何节点(EC2 实例)的安全组,如下所示。
3-> 使用节点(EC2 实例)的 public IPv4 地址连接到此远程数据库。
HostAddress: 节点 ec2 实例的 IPv4 地址。
端口:31000