我已经配置为运行logstash作为一个sidecar,并在捕获数据库中的任何更改后将数据推送到es。我已经添加了将由logstash image从我的服务使用的变量。但不知何故,它无法捕获这些env变量
logstash配置中的JDBC输入插件
jdbc {
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.22.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://${MYSQL_HOST}/<DB_NAME>"
jdbc_user => "${MYSQL_USER}"
jdbc_password => "${MYSQL_PASSWORD}"
.
.
.
字符串
使用上述logstash配置的服务的部署.yaml。我是
- name: logstash-sidecar
image: <Logstash image name here>
imagePullPolicy: IfNotPresent
securityContext:
runAsNonRoot: true
runAsUser: 1001
env:
- name: MYSQL_HOST
value: {{ .Values.datastore.host }}
- name: MYSQL_USER
value: {{ .Values.datastore.user | quote }}
- name: ES_HOST
value: {{ .Values.logstash.es.host }}
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: db_password_key
型
- 请注意,logstash configurations是一个全新的服务,我在一个新服务中使用了该服务的镜像,我想将其作为side-car运行。
- 请忽略缩进部分。这是正确的,只是在这里它没有解析好
我尝试部署更改,但logstash无法在sidecar中运行,因为它无法理解任何env变量
1条答案
按热度按时间2nbm6dog1#
这段代码没有sprintf jdbc_connection_string,它只是按原样传递给sequel库。也没有sprintf jdbc_user或jdbc_password,所以它们也不能使用环境变量。