Установка Helm https://helm.sh/ru/docs/intro/install/
Helm autocomplete позволяет дополнить команду нажатием клавиши Tab
helm completion bash | sudo tee /etc/bash_completion.d/helm > /dev/null
Краткое руководство https://helm.sh/ru/docs/intro/quickstart/
The Chart File Structure https://helm.sh/docs/topics/charts/#the-chart-file-structure
Helm Options Upgrade https://helm.sh/docs/helm/helm_upgrade/#options
Что такое Helm https://youtu.be/A_0zbCZbSbE
Artifact Hub https://artifacthub.io/
Добавление репозитория
sudo helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
sudo helm repo update
Установка kube-prometheus-stack
sudo helm install monitor prometheus-community/kube-prometheus-stack
Посмотреть настройки values и вывести их в файл
sudo helm show values prometheus-community/kube-prometheus-stack > monitorvalues.yaml
Сделать необходимые изменения в файле values и применить новые настройки
sudo helm upgrade monitor prometheus-community/kube-prometheus-stack --values=monitorvalues.yaml
Лучше в начале скачать чарт, настроить values, а потом уже установить - скачать чарт и распаковать - пример команды:
sudo helm pull prometheus-community/kube-prometheus-stack --untar=true
Установить скачанный и настроенный чарт
sudo helm install monitor ./kube-prometheus-stack/
Удалить чарт
sudo helm uninstall monitor
Обновить чарт
sudo helm upgrade monitor --values=monitorvalues.yaml
Сгенерировать классический deploy yaml файл из helm чарта с настроенным values
helm template monitor ./kube-prometheus-stack/ --values=./kube-prometheus-stack/monitorvalues.yaml > monitor.yml
Посмотреть какие репозитории подключены
helm repo list
Посмотреть какие чарты установлены
helm list
Посмотреть все чарты
helm list --all-namespaces
Обновить
helm repo update
Статус
helm status app
История
helm history app
Проверить на синтактические ошибки
helm lint app-chart
Проверить на ошибки при обновлении
helm upgrade app ./app-chart --debug --dry-run
Откатится
helm rollback app 1
Откатится автоматически если, обновление не заработает через 20 секунд
helm upgrade app ./app-chart --debug --atomic --timeout 20s
Angie — эффективный, мощный и масштабируемый веб-сервер, созданный fork’ом от nginx группой разработчиков nginx с целью значительно расширить исходную функциональность, вошел в реестр отечественного ПО. https://angie.software/
Файл _helpers.tpl - это библиотека шаблонов выражений для чарта
helm create angie-helm-chart
Создать описание Chart.yaml - #appVersion: ">= 1.2.0" - означает что версия image deployment будет не ниже чем 1.2.0
apiVersion: v2
name: angie-helm-chart
description: veb-server razrabotka kotorogo lokalizovana v Rossii
type: application
version: 0.1.0
appVersion: ">= 1.2.0"
Простой пример манифеста yml в templates для чарта где надо определять 6 значений в values.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.appName }}
namespace: {{ .Values.appNamespace }}
labels:
app: {{ .Values.appName }}
spec:
selector:
matchLabels:
app: {{ .Values.appName }}
replicas: {{ .Values.appReplicas }}
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
template:
metadata:
labels:
app: {{ .Values.appName }}
spec:
containers:
- name: {{ .Values.appName }}
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.appName }}-service
namespace: {{ .Values.appNamespace }}
spec:
ports:
- name: http
port: 80
targetPort: 80
selector:
app: {{ .Values.appName }}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.appName }}-ingress
namespace: {{ .Values.appNamespace }}
spec:
rules:
- host: {{ .Values.appHost }}
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: {{ .Values.appName }}-service
port:
number: 80
Пример values.yaml - значения типа переменных
appName: angie
appNamespace: default
appReplicas: 1
appHost: www.app.local
image:
name: docker.angie.software/angie
tag: latest
Установка
sudo helm install www angie-helm-chart