Splunk Universal Forwarder作为kubernetes中的辅助工具

时间:2019-05-01 02:15:15

标签: kubernetes splunk

我正在通过部署规范将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文件中提供的值。

1 个答案:

答案 0 :(得分:0)

您需要创建一个初始化脚本,该脚本应该从环境变量获取主机名,并使用sed命令在output.conf中对其进行更新。终于启动笨拙的货运代理