通过使用以下命令,我可以在没有任何依赖的情况下运行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数据库。
答案 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)