gpt4 book ai didi

postgresql - 如何使用Helm和Kubernetes从应用程序连接Postgresql?

转载 作者:行者123 更新时间:2023-12-02 11:53:12 25 4
gpt4 key购买 nike

我对于在--dev namespace中部署的应用程序如何连接到我使用--database namespace使用helm独立部署的 postgreSQL 数据库感到非常苦恼。我到目前为止所做的如下。

数据库和myapp部署了不同的 namespace 。我只是从一些示例中复制了名称PGHOST,PGPASSWORD,但是我不确定该在哪里使用该名称,并且在postgreSQL中的某个地方必须与之相同吗?

我还应该注意连接数据库的其他事情吗,或者还有不是最佳实践的事情?我应该在jdbc url中添加 namespace 吗?

在本地,我们使用以下参数连接到数据库,但是通过Helm部署应用程序后应该怎么做?我们正在使用sequelize作为客户端库

const connectionString = postgres://${global.config.database_username}:${global.config.database_password}@${global.config.database_host}:${global.config.database_port}/${global.config.database_name};

postgres值
## Specify PGDATABASE
##
DBName: db

在部署postgres之后;
  # of replicas: 3
service name: my-postgres-postgresql-helm
service port: 64000
database name: db
database user: admin
jdbc url: jdbc:postgresql://my-postgres-postgresql-helm:port

deployment.yaml
        - name: PGHOST
valueFrom:
configMapKeyRef:
name: {{ .Release.Name }}-configmap
key: jdbc-url
- name: PGDATABASE
value: {{ .Values.postgres.database name | quote }}
- name: PGPASSWORD
value: "64000"
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "my-mp.name" . }}
key: POSTGRES_PASSWORD

configmaps.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
labels:
app.kubernetes.io/name: {{ include "my-mp.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ include "my-mp.chart" . }}
data:
jdbc-url: jdbc:postgresql://my-postgres-postgresql-helm..

values.yaml
postgres:
service name: my-postgres-postgresql-helm
service port: 64000
database name: db
database user: admin

最佳答案

这是您有关jdbc url jdbc url:jdbc:postgresql://my-postgre的错字吗?您已经提到服务名称为my-postgres-postgresql-helm,因此jdbc url应该类似于:jdbc:postgresql://my-postgres-postgresql-helm.database。请注意服务名称后面的.database!由于您的应用程序容器在不同的 namespace 中运行,因此应在服务名称的末尾附加 namespace 名称。如果它们位于同一个命名空间中,则不需要它。

现在,如果那不能解决问题,请调试问题,如果您是我,这就是我要做的事情:

  • 检查是否存在任何在 namespace 级别添加限制的NetworkPolicies;这仅允许特定命名空间甚至Pod之间的流量,这可能阻止来自应用程序Pod的流量到达postgres Pod。
  • 确保您的Postgres Pod服务正确。也就是说,在描述服务时应将Pod的IP列为端点。如果没有,请检查服务的标签选择器,并确保它使用与postgres pod相同的标签。
  • Exec插入到您的Pod中,并检查您的应用程序Pod是否能够使用服务名称my-postgres-postgresql-helm.database通过nslookup访问该服务。

  • 如果所有这些测试都是肯定的并且可行,那么很可能是其他一些配置问题。让我知道这是否可以解决您的问题和总帐。

    关于postgresql - 如何使用Helm和Kubernetes从应用程序连接Postgresql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506167/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com