我为在--dev namespace
中部署的应用程序如何连接到postgreSQL数据库(该数据库我使用带有--database namespace
的头盔独立部署)真的很挣扎。我到目前为止所做的如下。
数据库和myapp部署了不同的名称空间。我只是从一些示例中复制了名称PGHOST,PGPASSWORD
,但是我不确定应该在哪里使用该名称,并且在postgreSQL中的某个位置必须与之相同吗?
我还应该注意连接数据库的其他事情吗,或者还有什么不是最佳实践?我应该在jdbc url中添加一个名称空间吗?
在本地,我们使用以下参数连接到数据库,但是通过头盔部署应用程序后应该采用什么方式?我们正在使用sequelize作为客户端库
const connectionString = postgres://${global.config.database_username}:${global.config.database_password}@${global.config.database_host}:${global.config.database_port}/${global.config.database_name};
## 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
这是您关于jdbc网址jdbc网址:jdbc:postgresql://my-postgre
的错字吗?您已经提到服务名称为my-postgres-postgresql-helm
,因此jdbc url应该类似于:jdbc:postgresql://my-postgres-postgresql-helm.database
。注意服务名称后面的.database
!由于您的应用程序容器在不同的名称空间中运行,因此应在服务名称的末尾附加名称空间名称。如果它们位于同一名称空间中,则不需要它。
现在,如果不能解决问题,请调试问题,如果您是我,这就是我要做的事情:
my-postgres-postgresql-helm.database
来访问该服务。如果所有这些测试都是肯定的并且可行,那么很可能是其他一些配置问题。让我知道这是否可以解决您的问题和总帐。
如果我理解正确,则数据库和应用程序位于不同的名称空间中,而名称空间的重点是隔离。如果确实需要访问它,则可以使用DNS自动生成的条目servicename.namespace.svc.cluster.local