Compare commits

..

4 Commits

4 changed files with 142 additions and 2 deletions

View File

@ -2,7 +2,7 @@
title: 03-video-spec
description:
published: true
date: 2023-11-09T10:29:33.228Z
date: 2023-11-09T14:12:51.136Z
tags: helm
editor: markdown
dateCreated: 2023-11-09T10:06:13.204Z
@ -11,7 +11,7 @@ dateCreated: 2023-11-09T10:06:13.204Z
# Видео три
> Файлы для лабы:
[final-version.zip](/attachments/final-version.zip)
[03-video-spec.zip](/attachments/03-video-spec.zip)
Продолжаем создавать свой чарт для приложения.

View File

@ -0,0 +1,140 @@
---
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.