Удалить символ после функции диапазона - Helm

Я немного новичок в Helm, но я пытаюсь удалить персонажа, если это последний запуск итерации с диапазоном. Это развертывание предназначено для карты конфигурации для извлечения logstash из большого двоичного объекта хранилища Azure, в котором есть журналы из концентраторов событий Azure.

Файл значений:

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"
          }}
          ]
        }
      }

Как вы можете видеть, я хочу иметь возможность сказать рулю, что после последней итерации не добавлять , в конце последнего блока event_hub close.

Кто-нибудь знает, что я могу добавить в свою карту конфигурации, чтобы иметь возможность удалять символы, если это последняя итерация?

Спасибо заранее :)

Решение:

В конце концов я изменил свои значения на:

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"

и диаграмма configmap к следующему:

     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 в моем случае], и чтобы узнать, в какой позиции она находится, и как только позиция больше не меньше длины, добавьте запятую и затем конец.

Надеюсь, это поможет любому, кому может понадобиться что-то подобное :)


person Gingey231    schedule 08.01.2021    source источник
comment
Отвечает ли это на ваш вопрос? Особый случай обработка последнего элемента диапазона в текстовых шаблонах Google Go   -  person Hazim    schedule 08.01.2021
comment
Привет, поскольку helm использует шаблон go, ответ на вопрос был дан здесь: stackoverflow.com/questions/10747054/ Вам просто нужно добавить дополнительный оператор if, как указано в ответе   -  person Hazim    schedule 08.01.2021