Я немного новичок в 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 в моем случае], и чтобы узнать, в какой позиции она находится, и как только позиция больше не меньше длины, добавьте запятую и затем конец.
Надеюсь, это поможет любому, кому может понадобиться что-то подобное :)
if
, как указано в ответе - person Hazim   schedule 08.01.2021