【问题标题】:Access my Postgresql database inside a Kubernates pod from my computer with pgAdmin使用 pgAdmin 从我的计算机访问 Kubernetes pod 内的 Postgresql 数据库
【发布时间】:2021-01-29 22:18:29
【问题描述】:

我在我的一个 pod 中安装了一个带有 Kubernetes 的 Postgresql 数据库。通信在其他 pod 和我的数据库中运行良好 beetwen 应用程序,我可以使用这些命令访问它:

kubectl exec -it name_of_my_pod -n name_of_my_namespace -- "/bin/bash"
psql

我现在想用 IntelliJ、pgAdmin 或类似的东西访问数据库。我该怎么做?

第二个问题:真的推荐这样做吗(postgres 到 pod 中)?还是让数据库脱离 Kubernetes 更好?

【问题讨论】:

    标签: postgresql kubernetes


    【解决方案1】:

    要访问数据库,您可以通过负载平衡器或入口控制器公开 pgadmin 工具。从安全的角度来看,这并不总是理想的——因为您信任 pgadmin 工具来正确处理安全性。另一种方法是通过集群 IP 或内部 IP 地址公开 pgadmin 工具。这意味着,集群网络之外的那些人无法访问它。然后,要访问该工具,您必须添加 ssh/vpn 隧道或使用 kubernetes port-forwarding 工具。

    对于部署,this helm chart 似乎相当合理,您可以控制如何公开管理实用程序。

    就个人而言,如果安全性不是最重要的,我会通过入口控制器公开 pgadmin。这将是访问该工具的最便捷方式。

    至于您的第二个问题,您可以在 pod 内运行 postgress - 但您需要确保将持久卷设置为数据存储位置 - 因为 pod 应该被视为短暂的。如果您正在为如何开始而苦苦挣扎,我通常会发现 Bitnami 的产品(免费)是一个非常好的开始。 Here 是 postgress SQL 掌舵图的链接。使用 Bitnami 的图表,请确保在部署过程中设置密码和帐户 - 否则部署将在第一次工作,但如果您必须重新部署,则不会 - 因为随机生成的密码会改变。

    作为说明,对于一些 helm 图表,我使用 --dry-run 标志来获取我用来进行更标准的 kubernetes 部署的原始 yaml。确保正确设置 helm 选项,然后添加该标志。如果您刚刚开始并尝试自定义没有内置参数的内容,这可能会更容易。

    【讨论】:

      【解决方案2】:

      我猜你应该有服务对象,使它可以通过 ingress 或 nodePort 访问。

      对于第二个问题:答案不是很清楚,这取决于您想要达到的目标。

      正如 Ben 上面所说,您必须确保拥有可以信任的持久音量。我知道亚马逊可以提供一些解决方案,但我不知道您是否想将您的数据存储到第三方公司。

      【讨论】:

        【解决方案3】:

        我有类似的设置。 PostgreSQL db pod 部署在 AWS 云中运行的 kubernetes 集群中。我的 pgAdmin 正在我本地机器的 docker 容器中运行。以下是我从本地计算机上运行的 pgAdmin 访问此远程数据库所执行的步骤(遵循 this video)。

        1 -> 将db的Service type从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 实例)的公共 IPv4 地址连接到此远程数据库。

        HostAddress:节点 ec2 实例的 IPv4 地址。

        端口: 31000

        【讨论】:

          猜你喜欢
          • 2020-01-09
          • 1970-01-01
          • 1970-01-01
          • 2021-12-13
          • 2021-11-28
          • 2019-01-03
          • 1970-01-01
          • 2018-11-16
          • 1970-01-01
          相关资源
          最近更新 更多