我通过部署规范将我的应用程序设置为splunk通用转发器作为边车。 splunk通用转发器设置为不同的docker镜像,我通过docker COPY复制自定义inputs.conf和outputs.conf(如下所示)。
有效地,当我部署我的应用程序时,边车正在启动。在当前状态下,索引器配置在output.conf中,并且生效。
*问题出现在这里:我想根据环境动态更改索引器服务器主机和端口。 *
这是我的splunk通用转发器的dockerfile内容。
FROM splunk/universalforwarder:latest
COPY configs/*.conf /opt/splunkforwarder/etc/system/local/
使用名称splunk-universal-forwarder构建docker镜像:demo configs文件夹包含inputs.conf和outputs.conf文件。
outputs.conf的内容是
[tcpout]
defaultGroup = default-lb-group
[tcpout:default-lb-group]
server = ${SPLUNK_BASE_HOST}
[tcpout-server://host1:9997]
我想通过下面的边车部署传递SPLUNK_BASE_HOST环境变量。
- name: universalforwarder
image: splunk-universal-forwarder:demo
imagePullPolicy: Always
env:
- name: SPLUNK_START_ARGS
value: "--accept-license --answer-yes"
- name: SPLUNK_BASE_HOST
value: 123.456.789.000:9997
- name: SPLUNK_USER
valueFrom:
secretKeyRef:
name: credentials
key: splunk.username
- name: SPLUNK_PASSWORD
valueFrom:
secretKeyRef:
name: credentials
key: splunk.password
volumeMounts:
- name: container-logs
mountPath: /var/log/splunk-fwd-myapp
我有一个单独的deployment.yaml每个环境(dev,stage,uat,qa,prod),我应该能够根据这些环境传递不同的索引器主机和端口SPLUNK_BASE_HOST。如果我在outputs.conf中对索引器主机和端口进行硬编码,它将在所有环境中采用相同的值,但我不希望这种情况发生。
outputs.conf中的环境变量$ {SPLUNK_BASE_HOST}不是指部署yaml文件中提供的值。
您需要创建一个init脚本,该脚本应该从环境变量中获取主机名,并使用sed命令在output.conf中更新相同的内容。最后推出了slunk转发器