Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
devops:helm [2020/04/29 14:18] – [Определение значений переменных через другие переменные] admin | devops:helm [2021/03/23 11:32] (current) – admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Создание чартов helm ====== | ||
+ | https:// | ||
+ | https:// | ||
+ | ====== Ошибка parse error at ...: bad character U+002D ' | ||
+ | Такое происходит, | ||
+ | Если переименовать параметр невозможно, | ||
+ | {{ index .Values " | ||
+ | |||
+ | |||
+ | ====== Определение значений values.yaml через уже известные значения ====== | ||
+ | https:// | ||
+ | https:// | ||
+ | Например, | ||
+ | В конфигурацию **logstash** должны попасть путь к **elasticsearch** и пароль для **basic**-аутентификации. FQDN-имя, | ||
+ | Задача - сделать так, чтобы значения, | ||
+ | ===== values.yaml ===== | ||
+ | < | ||
+ | global: | ||
+ | internalElasticUserPassword: | ||
+ | # пароль, | ||
+ | # Он будет использован как минимум дважды. Первый раз - при создании секрета с паролем пользователя в основном чарте кластера elasticsearch. | ||
+ | # И второй раз - для создания переменной окружения logstash, которая будет использована в конфигурации output. | ||
+ | #..... | ||
+ | logstash: | ||
+ | image: | ||
+ | tag: |- | ||
+ | {{ .Chart.AppVersion }} | ||
+ | | ||
+ | config: | ||
+ | ELASTIC_PASSWORD: | ||
+ | {{ tpl (printf " | ||
+ | queue.max_bytes: | ||
+ | queue.type: memory | ||
+ | | ||
+ | elasticsearch: | ||
+ | host: |- | ||
+ | {{ tpl (printf " | ||
+ | port: 9200 | ||
+ | |||
+ | outputs: | ||
+ | main: |- | ||
+ | output { | ||
+ | elasticsearch { | ||
+ | hosts => [" | ||
+ | index => " | ||
+ | user => " | ||
+ | password => " | ||
+ | ssl => true | ||
+ | ssl_certificate_verification => false | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | а в **statefullset.yaml** субчарта **logstash** приводим соответствующие строки к такому виду: | ||
+ | < | ||
+ | - name: {{ .Chart.Name }} | ||
+ | image: "{{ .Values.image.repository }}:{{ tpl .Values.image.tag . }}" | ||
+ | | ||
+ | ## Elasticsearch output | ||
+ | - name: ELASTICSEARCH_HOST | ||
+ | value: {{ tpl (.Values.elasticsearch.host | toString) . | quote }} | ||
+ | | ||
+ | #### | ||
+ | | ||
+ | {{- range $key, $value := .Values.config }} | ||
+ | - name: {{ $key | upper | replace " | ||
+ | value: {{ tpl ($value | toString ) $ | quote }} | ||
+ | {{- end }} | ||
+ | </ | ||
+ | |||
+ | То есть строки, | ||
+ | |||
+ | ===== templating in values hack ===== | ||
+ | Например, | ||
+ | В темплейте **deployment**' | ||
+ | < | ||
+ | {{- with .Values.volumes }} | ||
+ | {{/* volumes: {{ toYaml .Values.volumes | nindent 8 }}*/}} | ||
+ | volumes: | ||
+ | {{- tpl . $ | nindent 8 }} | ||
+ | {{- end }} | ||
+ | {{- end }}</ | ||
+ | |||
+ | а в **values** пишем такое: | ||
+ | < | ||
+ | - name: volume1 | ||
+ | configMap: | ||
+ | name: {{ .Release.Name }}-config1 | ||
+ | - name: volume2 | ||
+ | configMap: | ||
+ | name: {{ .Release.Name }}-config2 | ||
+ | - name: volume3 | ||
+ | configMap: | ||
+ | name: {{ .Release.Name }}-config3</ | ||
+ | В итоге - в **deployment** попадут |