【发布时间】:2020-04-20 20:20:23
【问题描述】:
我开始使用 helm 对 Kubernetes 进行部署,但在将 Nodejs 应用程序与 postgres DB 连接时我被卡住了。我正在使用 helm 进行到 K8 的部署。
以下是我的应用程序 YAML 文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "service-chart.fullname" . }}-deployment
spec:
replicas: 2
selector:
matchLabels:
app: {{ template "service-chart.fullname" . }}-converstionrate
template:
metadata:
labels:
app: {{ template "service-chart.fullname" . }}-converstionrate
spec:
containers:
- name: {{ template "service-chart.fullname" . }}-converstionrate
image: <application_image>
env:
- name: DB_URL
value: postgres://{{ template "postgres.fullname" . }}.default.svc.cluster.local:5432/{{ .Values.DbName }}
---
kind: Service
apiVersion: v1
metadata:
name: {{ template "service-chart.fullname" . }}-service
spec:
type: NodePort
selector:
app: {{ template "service-chart.fullname" . }}-converstionrate
ports:
- port: 8080
targetPort: 3000
下面是我使用 postgres 依赖项的需求文件
dependencies:
- name: postgresql
version: "8.1.2"
repository: "https://kubernetes-charts.storage.googleapis.com/"
以下是我尝试连接到数据库的应用程序代码:-
if (config.use_env_variable) {
// sequelize = new Sequelize(process.env[config.use_env_variable], config);
sequelize = new Sequelize(
process.env.POSTGRES_HOST,
process.env.POSTGRES_USER,
process.env.POSTGRES_PASSWORD,
pocess.env.POSTGRES_DIALECT
);
} else {
sequelize = new Sequelize(
config.database,
config.username,
config.password,
config
);
}
我无法理解的是如何连接到数据库,就像上面我无法连接的那样。? 有谁能帮帮我吗?
我是掌舵的新手,因此无法弄清楚。我查看了很多博客,但有些博客不清楚需要如何完成。由于数据库在一个 POD 和另一个节点应用程序中运行,所以我如何将它连接在一起。?如何在 yaml 中设置要使用的 DB 环境变量。?
仅供参考 --- 我现在正在使用 minikube 进行部署。
应用程序代码可用:-https://github.com/Vishesh30/Node-express-Postgress-helm
谢谢, 维谢什。
【问题讨论】:
-
您遇到任何错误吗?如果可以,请在此处添加它们
-
您的
values.yaml文件怎么样?您可以使用 values.yaml 文件将变量传递给您的服务模板,看看这个link。您使用的是什么 HELM 和 Kubernetes 版本? -
您的代码使用的环境变量(
POSTGRES_HOST、等)与您在 Kubernetes YAML 文件 (DB_URL) 中设置的不匹配。您需要进行匹配。 -
@TummalaDhanvi 是的,当我尝试查询数据库时,它给出了错误 { "name": "SequelizeHostNotFoundError", "parent": { "errno": "ENOTFOUND", "code": "ENOTFOUND ”,“系统调用”:“getaddrinfo”,“主机名”:“elder-kudu.default.svc.cluster.local”,“主机”:“elder-kudu.default.svc.cluster.local”,“端口”: 5432 },“原始”:{“errno”:“ENOTFOUND”,“代码”:“ENOTFOUND”,“系统调用”:“getaddrinfo”,“主机名”:“elder-kudu.default.svc.cluster.local”, “主机”:“elder-kudu.default.svc.cluster.local”,“端口”:5432 } }
-
@DavidMaze 。感谢您指出我已经更改了它,但是仍然没有区别。你能告诉我应该从哪里传递 POSTGRES_USER 和 POSTGRES_PASSWORD 的值吗?
标签: postgresql kubernetes kubernetes-helm