Compare commits
No commits in common. "9298abbc81a63d1779a6c2876e0bef2f1050e031" and "3d778c8ef126d6b139941c9516c9df7ba61126c5" have entirely different histories.
9298abbc81
...
3d778c8ef1
|
|
@ -2,7 +2,7 @@
|
||||||
title: 03-video-spec
|
title: 03-video-spec
|
||||||
description:
|
description:
|
||||||
published: true
|
published: true
|
||||||
date: 2023-11-09T14:12:51.136Z
|
date: 2023-11-09T10:29:33.228Z
|
||||||
tags: helm
|
tags: helm
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2023-11-09T10:06:13.204Z
|
dateCreated: 2023-11-09T10:06:13.204Z
|
||||||
|
|
@ -11,7 +11,7 @@ dateCreated: 2023-11-09T10:06:13.204Z
|
||||||
# Видео три
|
# Видео три
|
||||||
|
|
||||||
> Файлы для лабы:
|
> Файлы для лабы:
|
||||||
[03-video-spec.zip](/attachments/03-video-spec.zip)
|
[final-version.zip](/attachments/final-version.zip)
|
||||||
|
|
||||||
Продолжаем создавать свой чарт для приложения.
|
Продолжаем создавать свой чарт для приложения.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,140 +0,0 @@
|
||||||
---
|
|
||||||
title: 04-video-svc-ingress
|
|
||||||
description:
|
|
||||||
published: true
|
|
||||||
date: 2023-11-09T14:11:37.963Z
|
|
||||||
tags:
|
|
||||||
editor: markdown
|
|
||||||
dateCreated: 2023-11-09T14:11:37.963Z
|
|
||||||
---
|
|
||||||
|
|
||||||
# Видео четыре
|
|
||||||
|
|
||||||
> Файлы для лабы:
|
|
||||||
[04-video-svc-ingress.zip](/attachments/04-video-svc-ingress.zip)
|
|
||||||
|
|
||||||
## Service
|
|
||||||
|
|
||||||
В файле values.yaml переносим (добавляем) строки:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
service:
|
|
||||||
# Service type: ClusterIP or NodePort
|
|
||||||
type: ClusterIP
|
|
||||||
port: 80
|
|
||||||
# Если сервис типа NodePort
|
|
||||||
nodePort: ""
|
|
||||||
# Если необходимо, определите имя порта
|
|
||||||
name: ""
|
|
||||||
```
|
|
||||||
|
|
||||||
Предполагается, что наш чарт будет поддерживать только
|
|
||||||
два типа сервисов: CluserIP (по умолчанию) и NodePort.
|
|
||||||
|
|
||||||
В фале service.yaml добавляем шаблон.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
spec:
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
ports:
|
|
||||||
- port: {{ .Values.service.port }}
|
|
||||||
```
|
|
||||||
|
|
||||||
Так же нам необходимо отработать ситуацию, когда сервиса типа NodePort.
|
|
||||||
В этом случае следует определить параметр nodePort, в случае, если
|
|
||||||
он определён. В этом нам поможет следующая конструкция:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
{{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }}
|
|
||||||
nodePort: {{ .Values.service.nodePort }}
|
|
||||||
{{- end }}
|
|
||||||
```
|
|
||||||
|
|
||||||
В качестве значения оператору if передаётся функция and. Которая проверяет
|
|
||||||
истинность двух значений:
|
|
||||||
* eq .Values.service.type "NodePort" - истина, если type равен NodePort.
|
|
||||||
* .Values.service.nodePort - истина, если значение определено.
|
|
||||||
|
|
||||||
Если оба значения истина, то будет подставлен параметр nodePort.
|
|
||||||
|
|
||||||
Так же добавим формирование имени порта:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
{{- if .Values.service.name }}
|
|
||||||
name: {{ .Values.service.name }}
|
|
||||||
{{- end }}
|
|
||||||
```
|
|
||||||
|
|
||||||
Добавим в файл my-values.yaml следубщие строки:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
||||||
nodePort: 31002
|
|
||||||
name: proxy
|
|
||||||
```
|
|
||||||
|
|
||||||
Проверим создание шаблона.
|
|
||||||
|
|
||||||
cd helm/04-video/
|
|
||||||
helm template app ./openresty-art/ -f my-values.yaml > app.yaml
|
|
||||||
|
|
||||||
## Ingress
|
|
||||||
|
|
||||||
C ingress поступим просто.
|
|
||||||
|
|
||||||
Сначала в values.yaml перенесем всю секцию ingress.
|
|
||||||
Так же скопируем эту секцию в my-values.yaml и немного её отредактируем.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
className: "system-ingress"
|
|
||||||
annotations:
|
|
||||||
certmanager.k8s.io/cluster-issuer: monitoring-issuer
|
|
||||||
hosts:
|
|
||||||
- host: application.kryukov.local
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- application
|
|
||||||
secretName: art-tls
|
|
||||||
```
|
|
||||||
|
|
||||||
А затем просто скопируем ingress-orig.yaml в директорию templates и
|
|
||||||
назовём его ingress.yaml. Т.е. просто удалим старый ingress.
|
|
||||||
|
|
||||||
Поскольку имя сервиса, относительно первоначально сгенерированного шаблона
|
|
||||||
у нас изменено, добавим несколько дополнений/изменений в файле шаблона.
|
|
||||||
|
|
||||||
После второй строки добавим переменную:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
{{- $svcName := printf "%s-%s" $fullName "svc" -}}
|
|
||||||
```
|
|
||||||
|
|
||||||
В строках номер 53 и 57 заменим $fullName на $svcName.
|
|
||||||
|
|
||||||
На этом базовые изменения в шаблоне ingress, шаблон готов к применению.
|
|
||||||
В этом можно убедиться, создав манифест приложения.
|
|
||||||
|
|
||||||
helm template app ./openresty-art/ -f my-values.yaml > app.yaml
|
|
||||||
|
|
||||||
Что бы разобраться в шаблоне, выпишем все используемые в нём, ещё
|
|
||||||
не известный нам функции.
|
|
||||||
|
|
||||||
* **semverCompare** - Семантическое сравнение двух строк. Два аргумента -
|
|
||||||
строки в формате версии. Позволяет сравнить версии приложений.
|
|
||||||
* **hasKey** - Возвращает истину, если данный словарь содержит данный ключ.
|
|
||||||
* **set** - Добавляет в словарь новую пару ключ/значение.
|
|
||||||
|
|
||||||
## NOTE.txt
|
|
||||||
|
|
||||||
Содержимое файла NOTE.txt выводится на стандартный вывод после установки
|
|
||||||
или обновления чарта (helm install или helm upgrade).
|
|
||||||
|
|
||||||
## Видео
|
|
||||||
|
|
||||||
[<img src="https://img.youtube.com/vi/dwS21jD7fq0/maxresdefault.jpg" width="50%">](https://youtu.be/dwS21jD7fq0)
|
|
||||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue