如何使用helm和kubernetes从应用程序连接postgresql?
对于部署在如何使用helm和kubernetes从应用程序连接postgresql?,postgresql,kubernetes,kubernetes-helm,Postgresql,Kubernetes,Kubernetes Helm,对于部署在--dev namespace中的应用程序如何连接到我使用helm和--database namespace独立部署的postgreSQL数据库,我真的很纠结。到目前为止,我所做的如下 数据库和myapp部署了不同的命名空间。我只是从一些示例中复制了名称PGHOST,PGPASSWORD,但我不确定应该在何处使用此名称,并且在postgreSQL中是否必须使用相同的名称 我是否应该注意连接数据库的其他事项,或者是否存在任何不是最佳做法的事项?我应该向JDBCURL添加名称空间吗 在本地
--dev namespace
中的应用程序如何连接到我使用helm和--database namespace
独立部署的postgreSQL数据库,我真的很纠结。到目前为止,我所做的如下
数据库和myapp部署了不同的命名空间。我只是从一些示例中复制了名称PGHOST,PGPASSWORD
,但我不确定应该在何处使用此名称,并且在postgreSQL中是否必须使用相同的名称
我是否应该注意连接数据库的其他事项,或者是否存在任何不是最佳做法的事项?我应该向JDBCURL添加名称空间吗
在本地,我们使用以下参数连接到数据库,但在通过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之后;
部署.yaml
configmaps.yaml
价值观
如果我理解正确,那么数据库和应用程序在不同的名称空间中,名称空间的重点是隔离。
如果您确实需要访问它,您可以使用DNS自动生成的条目servicename.namespace.svc.cluster.local如果我理解正确,您的数据库和应用程序位于不同的名称空间中,名称空间的重点是隔离。
如果您确实需要访问它,您可以使用DNS自动生成的条目servicename.namespace.svc.cluster.local这是您关于jdbc url的问题中的一个输入错误吗jdbc url:
jdbc:postgresql://my-postgre
?您已经提到,服务名称是mypostgrespostgresqlhelm
,因此JDBCURL应该类似于:jdbc:postgresql://my-postgres-postgresql-helm.database
。注意服务名称后面附加的.database
!由于您的应用程序pod运行在不同的命名空间中,因此应该在服务名称的末尾追加命名空间名称。如果它们在同一名称空间中,您就不需要它了
现在,如果这不能解决问题,为了调试问题,如果我是你,我会这样做:
my postgres postgresql helm.database
)通过nslookup访问服务如果所有这些测试都是肯定的并且正常工作,那么很可能是其他一些配置问题。让我知道这是否解决了您的问题和GL。这是您关于jdbc url的问题中的输入错误吗jdbc url:
jdbc:postgresql://my-postgre
?您已经提到,服务名称是mypostgrespostgresqlhelm
,因此JDBCURL应该类似于:jdbc:postgresql://my-postgres-postgresql-helm.database
。注意服务名称后面附加的.database
!由于您的应用程序pod运行在不同的命名空间中,因此应该在服务名称的末尾追加命名空间名称。如果它们在同一名称空间中,您就不需要它了
现在,如果这不能解决问题,为了调试问题,如果我是你,我会这样做:
my postgres postgresql helm.database
)通过nslookup访问服务如果所有这些测试都是肯定的并且正常工作,那么很可能是其他一些配置问题。让我知道这是否解决了您的问题和总账。是的,这是一个打字错误。。那么,唯一需要在JDBCURL末尾添加名称空间的事情是什么?实际上,我的问题也是为了澄清我的配置是否一切正常。你有一个postgres pod在端口上接收流量,还有一个服务公开该pod。您的应用程序在其配置中使用服务的主机名(servicename.namespacename)来访问postgres pod。一般来说,这看起来是一个正确的配置。检查名称空间名称,让我知道它是否解决了问题。所以我的困惑是,在应用程序中,ı应该在哪里进行这些更改?在职.yaml?我的postgres postgresql helm数据库。所以,最重要的是,你的应用程序从配置图中获取值时,必须是这样的;postgres数据库的主机名。因此,只需更新configmap,使其具有
my postgres postgresql helm.数据库
,一切都会正常运行,这也是正确的做法。感谢您的回复Amudhan。。实际上,根据您的回答,在postgres values.yaml中指定一个规则,如下入口:-from:-podSelector:matchLabels:app:db。是否应该添加这个标签deployment.yaml和其他yaml或deployment.yaml就足够了?是的,这是一个输入错误。。那么,唯一需要在JDBCURL末尾添加名称空间的事情是什么?实际上,我的问题也是为了澄清我的配置是否一切正常。你有一个postgres pod在端口上接收流量,还有一个服务公开该pod。您的应用程序正在使用t
## Specify PGDATABASE
##
DBName: db
# 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
- 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
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..
postgres:
service name: my-postgres-postgresql-helm
service port: 64000
database name: db
database user: admin