Helm — это менеджер пакетов для Kubernetes, который позволяет вам управлять приложениями и устанавливать их, упрощая управление и развертывание ваших приложений в кластере Kubernetes.

С помощью Helm вы можете упаковать свое приложение в один файл «диаграммы», который содержит все необходимые ресурсы и зависимости для запуска вашего приложения в среде Kubernetes. Это упрощает управление и развертывание ваших приложений, поскольку вы можете управлять всем в одном файле диаграммы вместо того, чтобы управлять всем по отдельности.

Чтобы использовать Helm, вам сначала нужно установить его на свой локальный компьютер. Вы можете сделать это с помощью следующей команды:

$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

После установки Helm вы можете инициализировать локальную среду, выполнив следующую команду:

$ helm init

Теперь, когда вы установили и инициализировали Helm, вы можете использовать его для развертывания приложения в кластере Kubernetes. Для этого вам сначала нужно создать диаграмму для вашего приложения.

Вот пример того, как вы можете создать диаграмму для простого веб-приложения:

$ helm create my-web-app

Это создаст новую диаграмму в каталоге my-web-app. Затем вы можете изменить диаграмму, включив в нее необходимые ресурсы и зависимости для вашего приложения.

После того, как вы настроили диаграмму, вы можете развернуть ее в своем кластере Kubernetes с помощью следующей команды:

$ helm install my-web-app

Это развернет вашу диаграмму в вашем кластере и создаст все необходимые ресурсы и зависимости для запуска вашего приложения. Затем вы можете получить доступ к своему приложению, используя IP-адрес кластера.

В целом, Helm упрощает управление и развертывание ваших приложений в кластере Kubernetes и является важным инструментом для всех, кто хочет развертывать приложения в Kubernetes.

Вот несколько советов и рекомендаций по использованию Helm:

Использование файлов значений

Вы можете создать файл значений для хранения всех значений, которые вы хотите использовать при установке диаграммы. Это упрощает управление конфигурациями и позволяет устанавливать одну и ту же диаграмму с различными конфигурациями. Чтобы использовать файл значений, вы можете передать флаг --values команде helm install:

$ helm install my-web-app --values my-values.yaml

Обновление диаграмм

Чтобы обновить диаграмму, вы можете использовать команду helm upgrade. Это позволяет вам вносить изменения в вашу диаграмму и развертывать изменения в вашем кластере:

$ helm upgrade my-web-app my-web-app-new

Удаление диаграмм

Чтобы удалить график, вы можете использовать команду helm delete:

$ helm delete my-web-app

Шаблоны

Helm использует язык шаблонов Go для шаблонов файлов диаграмм. Это позволяет вам использовать переменные и условия в файлах диаграмм, что упрощает управление диаграммами и их обслуживание. Чтобы использовать шаблоны, вы можете использовать следующий синтаксис

{{ .Values.image.repository }}:{{ .Values.image.tag }}

Использование секретов

Чтобы защитить конфиденциальную информацию в ваших диаграммах, вы можете использовать секреты Kubernetes. Вы можете использовать синтаксис {{ .Secret "secretName" }} для ссылки на секрет в ваших файлах диаграмм.

Использование поддиаграмм

Вы можете использовать поддиаграммы для управления зависимостями в ваших диаграммах. Поддиаграмма — это диаграмма, включенная как зависимость в другую диаграмму. Чтобы использовать поддиаграмму, вы можете добавить ее в раздел dependencies файла Chart.yaml вашей диаграммы:

dependencies:
- name: subchart
  version: 0.1.0
  repository: "https://example.com/charts"

Расширенные примеры

Использование условий в шаблонах

Вы можете использовать условия в своих шаблонах для динамического отображения содержимого на основе значений или других условий. Например:

{{ if .Values.debug }}
  image: {{ .Values.image.debug }}
{{ else }}
  image: {{ .Values.image.release }}
{{ end }}

Использование пользовательских функций в шаблонах

Вы можете использовать пользовательские функции в своих шаблонах для выполнения более сложных операций. Например, следующая пользовательская функция делает строку заглавной:

{{ define "capitalize" }}
{{ printf "%s" . | title }}
{{ end }}

{{ template "capitalize" . }}

Использование сторонних диаграмм

Вы можете использовать сторонние диаграммы, чтобы упростить процесс развертывания и управления сложными приложениями. Например, вы можете использовать официальную диаграмму Nginx для развертывания сервера Nginx в своем кластере:

$ helm repo add nginx-stable https://helm.nginx.com/stable
$ helm install my-nginx nginx-stable/nginx-ingress

Использование крючков диаграммы

Вы можете использовать обработчики диаграмм для выполнения сценариев или пользовательских действий в определенные моменты жизненного цикла диаграммы. Например, вы можете использовать предустановочный хук для запуска скрипта перед установкой графика:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "fullname" . }}
  labels:
    chart: {{ .Chart.Name }}-{{ .Chart.Version }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  pre-install.sh: |
    #!/bin/sh
    echo "Running pre-install hook"

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "fullname" . }}-hooks
  labels:
    chart: {{ .Chart.Name }}-{{ .Chart.Version }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  pre-install: |
    {{ include "pre-install.sh" . | indent 4 }}

Использование значений из командной строки

Вы можете передавать значения на диаграмму из командной строки, используя флаг --set. Это позволяет вам переопределить значения по умолчанию для вашей диаграммы без изменения файла значений:

$ helm install my-web-app my-web-app-chart --set image.repository=my-image-repository

Использование вложенных шаблонов

Вы можете вкладывать шаблоны для повторного использования и организации кода в диаграммах. Например, вы можете создать общий шаблон заголовка и включить его в несколько шаблонов:

{{ define "header" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
  labels:
    app: {{ .Release.Name }}
    chart: {{ .Chart.Name }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  selector:
    matchLabels:
      app: {{ .Release.Name }}
      release: {{ .Release.Name }}
{{ end }}

{{ define "web" }}
{{ template "header" . }}
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}
        release: {{ .Release.Name }}
    spec:
      containers:
      - name: {{ .Release.Name }}
        image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
{{ end }}

Использование диаграмм Helm в конвейерах CI/CD

Вы можете использовать диаграммы Helm в конвейерах CI/CD, чтобы автоматизировать развертывание приложений и управление ими. Например, вы можете использовать конвейер Jenkins для развертывания диаграммы в своем кластере:

pipeline {
  agent {
    kubernetes {
      label 'my-agent'
    }
  }

  stages {
    stage('Build and Package Chart') {
      steps {
        sh 'helm package my-web-app-chart'
      }
    }

    stage('Deploy Chart') {
      steps {
        sh 'helm install my-web-app my-web-app-chart-0.1.0.tgz'
      }
    }
  }
}

Смотрите также:

Примечание. Эта история создана с использованием вспомогательных инструментов искусственного интеллекта.