我正在通过部署规范将Splunk通用转发器作为我的应用程序的补充。 splunk通用转发器被设置为另一个docker映像,在这里我通过docker COPY复制了自定义input.conf和outputs.conf(如下所示)。
有效地,当我部署应用程序时,sidecar正在启动。在当前状态下,索引器配置位于output.conf中,并且正在生效。
*问题出在这里:我想根据环境动态更改索引器服务器的主机和端口。 *
这是我的splunk通用转发器的dockerfile内容。
FROM splunk/universalforwarder:latest
COPY configs/*.conf /opt/splunkforwarder/etc/system/local/
构建名称为 splunk-universal-forwarder:demo 的Docker映像 configs文件夹同时包含文件inputs.conf和outputs.conf。
outputs.conf的内容是
[tcpout]
defaultGroup = default-lb-group
[tcpout:default-lb-group]
server = ${SPLUNK_BASE_HOST}
[tcpout-server://host1:9997]
我想通过如下的sidecar部署传递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
我在每个环境(开发,阶段,uat,qa,产品)上都有一个单独的deployment.yaml,并且我应该能够传递不同的索引器主机和端口 SPLUNK_BASE_HOST 基于这些环境。如果我将硬编码器主机和端口硬编码到output.conf中,则它将在所有环境中采用相同的值,但我不希望这种情况发生。
outputs.conf中的环境变量$ {SPLUNK_BASE_HOST}没有引用部署yaml文件中提供的值。
答案 0 :(得分:0)
您需要创建一个初始化脚本,该脚本应该从环境变量获取主机名,并使用sed命令在output.conf中对其进行更新。终于启动笨拙的货运代理