Compare commits
No commits in common. "f1dd1646b5e5f5a0b95ae232a0a3d70787f573be" and "de25f0e567330dbd6aac93ad4a609ada2d918c93" have entirely different histories.
f1dd1646b5
...
de25f0e567
|
|
@ -1,16 +1,14 @@
|
||||||
---
|
---
|
||||||
title: 01-base-helm
|
title: 01-base-helm
|
||||||
description:
|
description:
|
||||||
published: true
|
published: true
|
||||||
date: 2023-11-09T15:06:22.191Z
|
date: 2023-11-08T08:24:36.599Z
|
||||||
tags: helm
|
tags: helm
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2023-11-08T08:24:36.599Z
|
dateCreated: 2023-11-08T08:24:36.599Z
|
||||||
---
|
---
|
||||||
|
|
||||||
# Видео раз. Основы helm.
|
# Видео раз. Основы helm.
|
||||||
> Файлы для лабы:
|
|
||||||
[base-application.zip](/attachments/base-application.zip)
|
|
||||||
|
|
||||||
## Что такое helm?
|
## Что такое helm?
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
title: 04-video-svc-ingress
|
title: 04-video-svc-ingress
|
||||||
description:
|
description:
|
||||||
published: true
|
published: true
|
||||||
date: 2023-11-09T14:58:52.878Z
|
date: 2023-11-09T14:11:37.963Z
|
||||||
tags:
|
tags:
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2023-11-09T14:11:37.963Z
|
dateCreated: 2023-11-09T14:11:37.963Z
|
||||||
|
|
|
||||||
|
|
@ -1,195 +0,0 @@
|
||||||
---
|
|
||||||
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)
|
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue