diff --git a/DevOps/Helm/Learn-by-Krukov/05-video-cm.md b/DevOps/Helm/Learn-by-Krukov/05-video-cm.md new file mode 100644 index 0000000..26b64c7 --- /dev/null +++ b/DevOps/Helm/Learn-by-Krukov/05-video-cm.md @@ -0,0 +1,195 @@ +--- +title: 05-video-cm +description: +published: true +date: 2023-11-09T15:05:32.795Z +tags: +editor: markdown +dateCreated: 2023-11-09T15:05:32.795Z +--- + +# Видео пять. ConfigMap +> Файлы для лабы: +[05-video-cm.zip](/attachments/05-video-cm.zip) + +В директории templates есть два файла с ConfigMap: +* configmap-conf.yaml - содержит конфигурационный файл default.conf. +* configmap-html.yaml - содержит html файлы. + +Посмотрим как эти файлы можно использовать в шаблонах. + +## Вариант раз + +Файлы, которые находятся непосредственно в ConfigMaps, неудобно редактировать. +Редакторы теряются в формате. Например, в configmap-html.yaml основной +формат - yaml, а формат вложенных файлов html. + +Было бы неплохо, вынести содержимое вложенных файлов в отдельный файл. +А в шаблоне, в нужном месте вставлять его содержимое. + +### configmap-conf.yaml + +Начнём с конфигурационного файла приложения. В директории openresty-art +создадим файл default.conf и поместим в него конфигурационные параметры +openresty. + +В файле configmap-conf.yaml удалим содержимое секции data и +вставим следующий шаблон. + +```yaml +data: + default.conf: |- +{{ .Files.Get "default.conf" | indent 4 }} +``` + +В шаблоне мы использовали встроенный объект Files. При помощи которого +мы можем работать с файлами, находящимися внутри чарта. + +При помощи функции Get получаем содержимое файла default.conf. Сдвигаем +каждую строку на 4 символа. Шаблон должен быть помещен строго в начало +строки. + +Проверим, работает шаблон или нет. + + helm template app ./openresty-art/ -f my-values.yaml > app.yaml + +### configmap-html.yaml + +В директории openresty-art создадим директорию html. В которой добавим +два файла: 50x.html и index.html + +В фале configmap-html.yaml удалим все в разделе data и добавим следующий +шаблон: + +```yaml +data: +{{- range $path, $_ := .Files.Glob "html/*" }} + {{ base $path }}: | +{{ $.Files.Get $path | indent 4 }} +{{- end }} +``` + +При помощи функции [Glob](https://pkg.go.dev/github.com/gobwas/glob) +мы получаем список файлов из указанной директории, подходящих под шаблон. +При помощи range перебираем его. В каждой итерации в переменной %path получаем +путь к файлу. + +Функция [base](https://pkg.go.dev/path#example-Base) возвращает имя файла. + +$.Files.Get читает его содержимое. + +В итоге, в configMap мы получим столько файлов, сколько их есть в директории +html. + +Проверяем: + + helm template app ./openresty-art/ -f my-values.yaml > app.yaml + +Вроде бы всё хорошо, но при использовании .Files мы не сможем изменить +содержимое файлов при помощи кастомных файлов values и параметров --set. +Во всяком случае мне такой способ не известен. + +### Вариант два. + +Добавить содержимое файлов в файл values.yaml. + +```yaml +conf: + defaultConf: |- + server { + listen 80; + server_name localhost; + + location / { + root /usr/local/openresty/nginx/html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/local/openresty/nginx/html; + } + } +html: + index: |- + +
+Sorry, the page you are looking for is currently unavailable.
+ Please try again later.
](https://youtu.be/rb_qifNyDdA)