严重:在我自己的应用程序中使用依赖关系图时,用户“ postgres”的密码身份验证失败

时间:2019-01-03 12:28:36

标签: postgresql kubernetes kubernetes-helm

通过使用以下命令,我可以在没有任何依赖的情况下运行helm,postgresql图表

helm install --name my-release \ --set postgresqlPassword=secretpassword,postgresqlDatabase=my-database \ stable/postgresql

但是,当我使用requirements.yaml文件运行时,我遇到了问题。下面是代码段

dependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami version: 3.7.1 我已经在deployment.yaml文件中添加了env变量 spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: POSTGRES_HOST value: {{ template "postgresql.fullname" . }} - name: POSTGRES_PORT value: "5432" - name: POSTGRES_USERNAME value: {{ default "" .Values.postgresql.postgresqlUsername | quote }} - name: POSTGRES_PASSWORD value: {{ default "" .Values.postgresql.postgresqlPassword | quote }} - name: POSTGRES_DATABASE value: {{ default "" .Values.postgresql.postgresqlDatabase | quote }} ports: - containerPort: {{ .Values.service.internalPort }}

根据Deployment.yaml文件中声明的环境变量添加了值

postgresql: POSTGRES_DATABASE: ****** POSTGRES_USERNAME: postgres POSTGRES_PASSWORD: password

当我使用头盔安装命令时 helm install <chart-name>/ --name *** --set postgresqlDatabase=*****,postgresqlPassword=password

我收到以下错误,因为 Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres" at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473) ~[postgresql-42.2.2.jar!/:42.2.2] at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205) ~[postgresql-42.2.2.jar!/:42.2.2] at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.2.jar!/:42.2.2] at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.2.jar!/:42.2.2] at org.postgresql.Driver.makeConnection(Driver.java:452) ~[postgresql-42.2.2.jar!/:42.2.2] at org.postgresql.Driver.connect(Driver.java:254) ~[postgresql-42.2.2.jar!/:42.2.2] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:534) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-2.7.8.jar!/:na] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-2.7.8.jar!/:na] at org.flywaydb.core.internal.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:51) ~[flyway-core-5.0.7.jar!/:na] ... 91 common frames omitted 我不确定如何为依赖关系postgresql分配密码。有没有一种方法可以连接postgres数据库。

1 个答案:

答案 0 :(得分:3)

您缺少的是为值列表中的图表中嵌入的图表中嵌入的postgres实例设置密码的东西,例如:

postgresql:
   postgresPassword: secretpassword 

请注意,这使用的是驼峰名称,而不是您使用的全部大写字母。这相当于通过--set postgresql.postgresqlPassword=secretpassword设置密码。该值将由bitnami postgresql图表使用到record its password within a secret.,尽管您可以像在.Values.postgresql.postgresqlPassword中一样直接在部署中引用它,但我建议您从该机密中获取密码。

无论哪种方式,您都需要确保确实设置了它,无论是在使用名称而不是大写名称的值中,还是在参数中-我建议在值中使用默认值,并且可以使用参数进行覆盖。

要使用机密而不是.Values.postgresql.postgresqlPassword来在Deployment中获取密码,您可以使用以下命令设置环境变量值:

      valueFrom:
        secretKeyRef:
          name: {{ .Release.Name }}-postgresql
          key: postgres-password

{{ .Release.Name }}-postgresql should match the secret name that the postgresql chart uses

(如果示例帮助activiti运行时捆绑图uses postgres as a dependency(为其提供了别名)和sets the postgres password in the values,则它将检索密码并由{{3}间接用于部署中},可以使用发行版名称进行引用,因为postgres图表使用模板全名来命名机密。这是基于reading the password from the secret that the postgres chart automatically creates的postgresql图表,但如上所述,bitnami图表从{{ 1}} official kubernetes charts