Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql psycopg2.OperationalError:致命:用户的密码身份验证失败;用户名";在Minikube_Postgresql_Kubernetes_Flask Sqlalchemy_Kubernetes Ingress_Minikube - Fatal编程技术网

Postgresql psycopg2.OperationalError:致命:用户的密码身份验证失败;用户名";在Minikube

Postgresql psycopg2.OperationalError:致命:用户的密码身份验证失败;用户名";在Minikube,postgresql,kubernetes,flask-sqlalchemy,kubernetes-ingress,minikube,Postgresql,Kubernetes,Flask Sqlalchemy,Kubernetes Ingress,Minikube,我正在开发一个多容器Flask应用程序,它包括一个Web容器(Flask应用程序)、一个Postgres容器(用于DB服务)和一个Redis容器(用于缓存服务) Web应用程序具有Web\u部署.yaml和Web\u服务.yaml文件。 Postgres应用程序具有Postgres_部署.yaml和Postgres_服务.yaml文件。 Redis应用程序具有Redis_部署.yaml和Redis_服务.yaml文件 我的web\u部署.yaml文件如下所示: apiVersion: apps/

我正在开发一个多容器Flask应用程序,它包括一个Web容器(Flask应用程序)、一个Postgres容器(用于DB服务)和一个Redis容器(用于缓存服务)

Web应用程序具有
Web\u部署.yaml
Web\u服务.yaml
文件。 Postgres应用程序具有
Postgres_部署.yaml
Postgres_服务.yaml
文件。 Redis应用程序具有
Redis_部署.yaml
Redis_服务.yaml
文件

我的
web\u部署.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-app
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
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: PGPASSWORD
postgres\u部署.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-app
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
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: PGPASSWORD
在尝试为web容器与postgres容器建立连接时,我遇到了以下问题:

  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"

我成功地修复了它

错误在于,我刚刚在
posgres_deployment.yaml
文件中提到了密码,但我还应该提到数据库名称和用户名,web_deployment.yaml正使用这些名称访问此db服务

现在,更正后的新
postgres_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-app
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
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: PGPASSWORD