Compare commits

..

6 Commits

5 changed files with 200 additions and 3 deletions

View File

@ -1,14 +1,16 @@
---
title: 01-base-helm
description:
description:
published: true
date: 2023-11-08T08:24:36.599Z
date: 2023-11-09T15:06:22.191Z
tags: helm
editor: markdown
dateCreated: 2023-11-08T08:24:36.599Z
---
# Видео раз. Основы helm.
> Файлы для лабы:
[base-application.zip](/attachments/base-application.zip)
## Что такое helm?

View File

@ -2,7 +2,7 @@
title: 04-video-svc-ingress
description:
published: true
date: 2023-11-09T14:11:37.963Z
date: 2023-11-09T14:58:52.878Z
tags:
editor: markdown
dateCreated: 2023-11-09T14:11:37.963Z

View File

@ -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: |-
<html>
<head>
<title>Тестовая страница</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Тестовая страница</h1>
</body>
</html>
50x: |-
<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<title>Error</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
</body>
</html>
```
В файле configmap-conf.yaml нам необходимо подставить всего один файл с
известным именем. Поэтому шаблон будет простой.
```yaml
data:
default.conf: |-
{{ .Values.conf.defaultConf | indent 4 }}
```
В файле configmap-html.yaml, количество html файлов заранее не известно.
Поэтому шаблон будет чуть сложнее.
```yaml
data:
{{- range $file, $value := .Values.html }}
{{ $file }}.html: |
{{ $value | indent 4 }}
{{- end }}
```
Проверяем работу шаблона по умолчанию:
helm template app ./openresty-art/ -f my-values.yaml > app.yaml
Теперь посмотрим, как подставить свои файлы, при вызове helm.
Создадим в директории 05-video-cm директорию html и поместим в неё
файла index.html, попутно нмного его изменив. Что бы он отличался
от файла index.html файла values.yaml.
Сначала подставим только my-default.conf:
helm template app ./openresty-art/ -f my-values.yaml \
--set-file conf.defaultConf=my-default.conf > app.yaml
А теперь изменим html/index.html:
helm template app ./openresty-art/ -f my-values.yaml \
--set-file conf.defaultConf=my-default.conf \
--set-file html.index=html/index.html > app.yaml
Добавим 3-й html файл:
helm template app ./openresty-art/ -f my-values.yaml \
--set-file conf.defaultConf=my-default.conf \
--set-file html.test=html/index.html > app.yaml
## Видео
[<img src="https://img.youtube.com/vi/rb_qifNyDdA/maxresdefault.jpg" width="50%">](https://youtu.be/rb_qifNyDdA)

BIN
attachments/05-video-cm.zip Normal file

Binary file not shown.

Binary file not shown.