docs: create DevOps/Helm/Learn-by-Krukov/04-video-svc-ingress
parent
5dd6e65160
commit
aae8f4cdeb
|
|
@ -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)
|
||||
Loading…
Reference in New Issue