Helm - мощный инструмент для управления Kubernetes-приложениями. Он позволяет упаковывать, настраивать и развертывать приложения в виде Chart'ов. В этой лекции мы рассмотрим процесс развертывания приложений в Kubernetes с использованием Helm.
Прежде чем начать развертывание приложений с помощью Helm, необходимо установить клиент Helm на вашу локальную машину или машину, с которой вы управляете кластером Kubernetes.
helm
в директорию, находящуюся в вашем PATH
: Например, /usr/local/bin/
.
bash
tar -zxvf helm-vX.Y.Z-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
bash
helm version
Вы должны увидеть информацию о версии клиента Helm.Helm Chart'ы хранятся в репозиториях. Чтобы развернуть приложение, вам может потребоваться добавить репозиторий, содержащий нужный Chart.
bash
helm repo add bitnami [https://charts.bitnami.com/bitnami](https://charts.bitnami.com/bitnami)
bash
helm repo update
bash
helm repo list
Перед установкой приложения вы можете поискать доступные Chart'ы в добавленных репозиториях.
bash
helm search repo nginx
Эта команда отобразит список Chart'ов, связанных с nginx
, доступных в настроенных репозиториях.Перед установкой рекомендуется ознакомиться с информацией о Chart'е, его значениями по умолчанию и структурой.
bash
helm show chart bitnami/nginx
bash
helm show values bitnami/nginx
Этот вывод покажет вам все настраиваемые параметры Chart'а и их значения по умолчанию.
Вы можете настроить приложение, переопределив значения по умолчанию из values.yaml
. Это можно сделать несколькими способами:
values.yaml
с пользовательскими значениями:
* Скопируйте содержимое helm show values bitnami/nginx
в локальный файл my-nginx-values.yaml
.
* Отредактируйте этот файл, изменив нужные параметры (например, количество реплик, порты, переменные окружения).
yaml
# my-nginx-values.yaml
replicaCount: 2
service:
type: LoadBalancer
port: 8080
--set
:
bash
helm install my-nginx bitnami/nginx --set replicaCount=2 --set service.type=LoadBalancer --set service.port=8080
Теперь вы готовы развернуть приложение, используя выбранный Chart и (необязательно) настроенные значения.
bash
helm install <RELEASE_NAME> <CHART> [-n <NAMESPACE>] [-f <VALUES_FILE>] [--set <KEY=VALUE>]
* <RELEASE_NAME>
: Уникальное имя для вашего релиза приложения в кластере.
* <CHART>
: Имя Chart'а (например, bitnami/nginx
).
* -n <NAMESPACE>
: Namespace, в котором будет развернуто приложение (если не указан, используется default
).
* -f <VALUES_FILE>
: Путь к файлу с пользовательскими значениями.
* --set <KEY=VALUE>
: Переопределение отдельных значений через командную строку.
Пример с использованием файла значений:
bash
helm install my-nginx bitnami/nginx -n my-namespace -f my-nginx-values.yaml
Пример с использованием --set
:
bash
helm install my-nginx bitnami/nginx -n my-namespace --set replicaCount=2 --set service.type=LoadBalancer --set service.port=8080
bash
helm status <RELEASE_NAME> -n <NAMESPACE>
Эта команда отобразит информацию о развернутом релизе, включая ресурсы Kubernetes, созданные Helm.
bash
helm list -n <NAMESPACE>
Эта команда покажет список всех релизов, развернутых в указанном namespace.
После успешного развертывания приложения вы можете взаимодействовать с ним, используя стандартные команды kubectl
.
bash
kubectl get pods -n <NAMESPACE>
bash
kubectl get services -n <NAMESPACE>
В зависимости от типа Service (ClusterIP, NodePort, LoadBalancer), способ доступа к приложению будет отличаться.Helm позволяет легко обновлять развернутые приложения до новых версий Chart'а или с измененными значениями.
bash
helm upgrade <RELEASE_NAME> <CHART> [-n <NAMESPACE>] [-f <NEW_VALUES_FILE>] [--set <NEW_KEY=NEW_VALUE>]
* <RELEASE_NAME>
: Имя существующего релиза.
* <CHART>
: Новая версия Chart'а (можно указать другую версию, например, bitnami/nginx --version 1.16.0
).
* -f <NEW_VALUES_FILE>
: Файл с новыми значениями.
* --set <NEW_KEY=NEW_VALUE>
: Переопределение значений через командную строку.
Пример обновления с новым файлом значений:
bash
helm upgrade my-nginx bitnami/nginx -n my-namespace -f new-nginx-values.yaml
Если обновление прошло неудачно, Helm позволяет откатиться к предыдущей рабочей версии релиза.
bash
helm history <RELEASE_NAME> -n <NAMESPACE>
Эта команда покажет историю всех изменений релиза с указанием ревизий.bash
helm rollback <RELEASE_NAME> <REVISION> -n <NAMESPACE>
* <REVISION>
: Номер ревизии, к которой нужно откатиться.
Пример отката к предыдущей ревизии:
bash
helm rollback my-nginx 1 -n my-namespace
Когда приложение больше не нужно, его можно удалить из кластера с помощью Helm.
bash
helm uninstall <RELEASE_NAME> -n <NAMESPACE>
Эта команда удалит все ресурсы Kubernetes, созданные Helm для данного релиза.Helm значительно упрощает процесс развертывания и управления приложениями в Kubernetes. Следуя этим шагам, вы сможете легко устанавливать, настраивать, обновлять и удалять приложения, используя готовые Chart'ы из репозиториев или создавая собственные. Использование Helm повышает эффективность и упрощает управление сложными Kubernetes-приложениями.