删除范围函数后的字符 - Helm

问题描述

我对 Helm 有点陌生,但是如果它是带范围迭代的最后一次运行,我会尝试删除该字符。此部署用于从包含来自 Azure 事件中心的日志的 azure 存储 blob 中提取 logstash 的配置映射。

文件

user: user
azureStorageConnection: "https://azure-storage-url"
azureStorageContainer: user
endpoints:
  - endpointName: "TEST-1"
    endpointURL: "https://fake-url.com"
  - endpointName: "TEST-2"
    endpointURL: "https://fake-url.com"
Release:
  Name: production

logstashVersion: 7.10.0

我正在尝试部署的配置映射:

apiVersion: v1
kind: ConfigMap
Metadata:
  name: {{ .Release.Name }}-config
data:
  conf.conf: |
    input {
      azure_event_hubs {
        config_mode => "advanced"
        {{- if .Values.azureStorageConnection }}
        storage_connection => "{{ .Values.azureStorageConnection }}"
        storage_container => "{{ .Values.azureStorageContainer }}"
        {{- end }}
        decorate_events => true
        add_field => {
          "type" => "azure"
          "user" => "{{ .Values.user }}"
        }
        event_hubs => [
        {{- range $endpoints := .Values.endpoints }}
            { {{- $endpoints.endpointName | quote }} => {
            event_hub_connection => {{ $endpoints.endpointURL | quote }}
            consumer_group => {{- $endpoints.endpointName | quote }}
          }},{{- end }}
          ]
        }
      }

当前输出为:

data:
  conf.conf: |
    input {
      azure_event_hubs {
        config_mode => "advanced"
        storage_connection => "https://azure-storage-url.com"
        storage_container => "user"
        decorate_events => true
        add_field => {
          "type" => "azure"
          "user" => "user"
        }
        event_hubs => [
            {"TEST-1" => {
            event_hub_connection => "https://fake-url.com"
            consumer_group =>"TEST-1"
          }},{"TEST-2" => {
            event_hub_connection => "https://fake-url.com"
            consumer_group =>"TEST-2"
          }},]
        }
      }

这就是我试图获得它的方式:

data:
  conf.conf: |
    input {
      azure_event_hubs {
        config_mode => "advanced"
        storage_connection => "https://azure-storage-url.com"
        storage_container => "user"
        decorate_events => true
        add_field => {
          "type" => "azure"
          "user" => "user"
        }
        event_hubs => [
            {"TEST-1" => {
            event_hub_connection => "https://fake-url.com"
            consumer_group =>"TEST-1"
          }},{"TEST-2" => {
            event_hub_connection => "https://fake-url.com"
            consumer_group =>"TEST-2"
          }}
          ]
        }
      }

如您所见,我希望能够在最后一次迭代之后告诉 helm,不要在最后一个 event_hub 块的末尾添加“,”。

有谁知道我可以在配置映射中添加什么以便在最后一次迭代时删除字符

非常感谢:)

解决方案:

最后我修改了我的价值观:

variables:
  user: user
  AZURE_STORAGE_CONNECTION: "event_hub_storage_url"
  EVENT_HUBS:
    - ENDPOINTNAME: "event_hub_1"
      ENDPOINTURL: "Endpoint=fake-url-1"
      EVENT_HUB_CONTAINER: "event_hub_1"
    - ENDPOINTNAME: "event_hub_2"
      ENDPOINTURL: "Endpoint=fake-url-2"
      EVENT_HUB_CONTAINER: "event_hub_2"

和图表配置映射到以下内容

     input {
      azure_event_hubs {
        config_mode => "advanced"
        {{- if .Values.azureStorageConnection }}
        storage_connection => "{{ .Values.azureStorageConnection }}"
        {{- end }}
        decorate_events => true
        add_field => {
          "type" => "azure"
          "user" => "{{ .Values.user }}"
        }
        event_hubs => [
        {{- $length := len .Values.event_hubs }}
        {{- range $index,$event_hubs := .Values.event_hubs }}
            { {{- $event_hubs.endpointName | quote }} => {
            event_hub_connection => {{ $event_hubs.endpointURL | quote }}
            storage_container => "{{ $event_hubs.event_hub_container }}"
          }}{{ $position := add $index 1}}{{ if lt $position $length }},{{ end }}
        {{- end }}
          ]
        }
      }

这样我就可以告诉它长度等于(在我的情况下为 event_hubs)的数量,并找出它在什么位置,一旦位置不再小于长度,然后添加一个逗号然后结束.

希望这可以帮助任何可能需要这样的东西:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)