postgresql - Postgres 数据库名称和用户名不适用于 kubernetes
问题描述
我正在使用 Kubernetes 并尝试将服务器容器连接到 postgres 容器。
为 POSTGRES_USER 和 POSTGRES_DB 放置“postgres”是有效的。但是,当插入“postgres”以外的值作为 postgres 用户名和数据库名称的环境值时,似乎这些值以某种方式被覆盖为“postgres”,或者这些值可能根本没有被应用。
有没有办法解决这个问题?
postgres-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:
matchLabels:
component: postgres
template:
metadata:
labels:
component: postgres
spec:
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: database-persistent-volume-claim
containers:
- name: postgres
image: postgres
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
subPath: postgres
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: dbpassword
key: DB_PASSWORD
服务器部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 1
selector:
matchLabels:
component: server
template:
metadata:
labels:
component: server
spec:
containers:
- name: server
image: ellybundle_deployment_api
imagePullPolicy: Never
ports:
- containerPort: 4000
env:
- name: DB_HOST
value: postgres-cluster-ip-service
- name: DB_USERNAME
value: postgres
- name: DB_PORT
value: "5432"
- name: DB_NAME
value: postgres
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: dbpassword
key: DB_PASSWORD
什么不起作用 - 更改了 dbname 和 db-user
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:
matchLabels:
component: postgres
template:
metadata:
labels:
component: postgres
spec:
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: database-persistent-volume-claim
containers:
- name: postgres
image: postgres
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
subPath: postgres
env:
- name: POSTGRES_USER
value: test-user
- name: POSTGRES_DB
value: test-db-name
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: dbpassword
key: DB_PASSWORD
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 1
selector:
matchLabels:
component: server
template:
metadata:
labels:
component: server
spec:
containers:
- name: server
image: ellybundle_deployment_api
imagePullPolicy: Never
ports:
- containerPort: 4000
env:
- name: DB_HOST
value: postgres-cluster-ip-service
- name: DB_USERNAME
value: test-user
- name: DB_PORT
value: "5432"
- name: DB_NAME
value: test-db-name
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: dbpassword
key: DB_PASSWORD
解决方案
看起来您的 PostgreSQL 设置已经初始化,并且 ENV VARIABLES 的值是从postgresql.conf
文件中获取的。检查它的存在和/var/lib/postgresql/data
路径下的内容。
同样值得知道的是,如果您的 PostgreSQL Docker 容器镜像无论如何基于 Bitnami 的镜像:
笔记!指定 POSTGRESQL_USERNAME 时,不会为 postgres 用户分配密码,因此您无法以 postgres 用户身份远程登录 PostgreSQL 服务器。如果您仍想使用用户 postgres 访问,请设置 POSTGRESQL_POSTGRES_PASSWORD 环境变量(或 POSTGRESQL_POSTGRES_PASSWORD_FILE 中指定的文件内容)。
链接到上面的资源。
推荐阅读
- azure-functions - 定时器触发 Azure 函数在第二天没有被触发
- sql - 如何在 Oracle SQL 中使用 REGEX 检索小数点后的特定字符?
- perl - 即使某些元素是字符串,如何在检查数组中的元素的数值等价性为零时避免警告?
- ocr - IOS PDFKit 有 OCR 功能吗?
- node.js - pool.request 不是函数
- android - 存在 viewpager 性能问题的导航组件
- python - 在一系列任务结束后运行一些清理任务的最佳方法是什么
- r - 在 Rstudio 中,read.xlsx 函数创建了更多用 'NA's 填充的列,它不应该
- excel - 运行时错误 5981,应用程序定义或对象定义错误
- java - 在使用 OHS 的 Weblogic 12.2.1 上的 HTTP 基本身份验证中两次询问用户名和密码