Postgres 数据库名称和用户名未应用于 kubernetes
Postgres db name and username are not applied on 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
服务器-deployment.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
POSTGRES_PASSWORD
环境变量设置 PostgreSQL 的超级用户密码。
我看到您在 postgres-deployment.yaml
中使用了持久卷声明。在使用新密码重新创建部署之前要删除卷吗?
检查现有的持久卷声明 (PVC)
$ kubectl get pvc
删除 PVC
$ kubectl delete pvc <postgres-pvc-name>
现在通过 POSTGRES_PASSWORD
设置新密码后重新创建部署。
Note: you will lose all data in Postgres once you delete the volume claim.
看起来您的 PostgreSQL 设置已经初始化,环境变量的值取自 postgresql.conf
文件。在 /var/lib/postgresql/data
路径下检查它的存在和内容。
同样值得知道的是,如果您的 PostgreSQL Docker 容器镜像是基于 Bitnami 的:
Note! When POSTGRESQL_USERNAME is specified, the postgres user is not
assigned a password and as a result you cannot login remotely to the
PostgreSQL server as the postgres user. If you still want to have
access with the user postgres, please set the
POSTGRESQL_POSTGRES_PASSWORD environment variable (or the content of
the file specified in POSTGRESQL_POSTGRES_PASSWORD_FILE).
Link 到上面的资源。
我遇到了同样的问题,删除 pvc 还不够。
我在 Docker 桌面上使用 Kubernetes 集群进行本地开发,更改 Postgres 凭据不适用于我的 Postgres 节点。我不得不将 Docker 重置为出厂默认设置。这对我有用。
Docker Desktop Factory Reset
我正在使用 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
服务器-deployment.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
POSTGRES_PASSWORD
环境变量设置 PostgreSQL 的超级用户密码。
我看到您在 postgres-deployment.yaml
中使用了持久卷声明。在使用新密码重新创建部署之前要删除卷吗?
检查现有的持久卷声明 (PVC)
$ kubectl get pvc
删除 PVC
$ kubectl delete pvc <postgres-pvc-name>
现在通过 POSTGRES_PASSWORD
设置新密码后重新创建部署。
Note: you will lose all data in Postgres once you delete the volume claim.
看起来您的 PostgreSQL 设置已经初始化,环境变量的值取自 postgresql.conf
文件。在 /var/lib/postgresql/data
路径下检查它的存在和内容。
同样值得知道的是,如果您的 PostgreSQL Docker 容器镜像是基于 Bitnami 的:
Note! When POSTGRESQL_USERNAME is specified, the postgres user is not assigned a password and as a result you cannot login remotely to the PostgreSQL server as the postgres user. If you still want to have access with the user postgres, please set the POSTGRESQL_POSTGRES_PASSWORD environment variable (or the content of the file specified in POSTGRESQL_POSTGRES_PASSWORD_FILE).
Link 到上面的资源。
我遇到了同样的问题,删除 pvc 还不够。
我在 Docker 桌面上使用 Kubernetes 集群进行本地开发,更改 Postgres 凭据不适用于我的 Postgres 节点。我不得不将 Docker 重置为出厂默认设置。这对我有用。
Docker Desktop Factory Reset