我正在开发一个多容器Flask应用程序,它涉及一个Web容器(Flask应用程序)、Postgres容器(用于DB服务)和一个Redis容器(用于缓存服务)。
网络应用程序有web_deployment.yaml和web_service.yaml文件。Postgres应用程序有postgres_deployment.yaml和postgres_service.yaml文件。Redis应用程序有redis_deployment.yaml和redis_service.yaml文件。
我的web_deployment.yaml文件如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 3
template:
metadata:
labels:
component: my-web-app
spec:
containers:
- name: my-web-app-container
image: web_app_image:latest
ports:
- containerPort: 80
env:
- name: REDIS_HOST
value: redis-service
- name: REDIS_PORT
value: '6379'
- name: POSTGRES_USER
value: username
- name: POSTGRES_HOST
value: postgres-service
- name: POSTGRES_PORT
value: '5432'
- name: POSTGRES_DB
value: postgres_db
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: pgpassword
key: PGPASSWORD
selector:
matchLabels:
component: my-web-apppostgres_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:12-alpine
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
subPath: postgres
env:
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: pgpassword
key: PGPASSWORD在尝试与postgres容器建立web容器的连接时,我遇到了以下问题:
File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
raise exception
File "/usr/local/lib/python3.8/site-packages/sqlalchemy/pool/base.py", line 599, in __connect
connection = pool._invoke_creator(self)
File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/create.py", line 578, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 584, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL: password authentication failed for user "username"发布于 2021-05-14 11:52:34
我成功地修好了它!
错误是,我刚才在posgres_deployment.yaml文件中提到了密码,但我也应该提到数据库名和用户名,web_deployment.yaml试图使用它们来访问这个db服务。
现在,更正后的新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:12-alpine
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
subPath: postgres
env:
- name: POSTGRES_USER
value: username
- name: POSTGRES_DB
value: postgres_db
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: pgpassword
key: PGPASSWORDhttps://stackoverflow.com/questions/67533890
复制相似问题