Как развернуть приложения в Kubernetes с помощью Helm
Эта статья является продолжением моей статьи «Что такое Helm и как его установить на сервер Ubuntu 20.04?». Если вы новичок в Helm, я бы порекомендовал вам сначала ознакомиться со статьей, о которой я упоминал. В этой статье мы выпустим Apache из существующей схемы. Мы создадим образец диаграммы и выпустим, обновим, откатим, удалим и восстановим его. Давайте кратко рассмотрим команды, прежде чем использовать их в статье позже.
- Поиск Helm: поиск диаграмм Helm
- хелм-репозиторий: выполнение таких операций, как добавление, перечисление, удаление, обновление и индексирование в репозитории.
- helm delete: удалить диаграмму, что, в свою очередь, удалит все ее объекты Kubernetes.
- статус управления: отображение статуса выпуска.
- helm create: создание диаграммы управления.
- helm install: установка диаграммы, которая, в свою очередь, создает свои объекты Kubernetes.
- Обновление шлема: обновить выпуск с внесенными в него изменениями.
- хелм история: получить историю выпуска.
- Откат руля: отменить изменения предыдущей версии.
Прежде чем продолжить, предполагается, что вы знакомы с основами Helm. Также предполагается, что у вас уже установлен кластер Kubernetes и клиент helm.
Предпосылки
- Кластер Kubernetes по крайней мере с 1 рабочим узлом.
Если вы хотите научиться создавать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на экземплярах AWS Ubuntu 18.04 EC2. - Helm установлен на главном узле (поищите мою статью «Что такое Helm и как его установить на сервер Ubuntu 20.04», чтобы понять основы Helm и установить его).
Что мы будем делать?
- Выпустите образец диаграммы из репозитория.
- Создайте диаграмму и выпустите образец приложения.
- Обновите выпуск.
- Восстановить выпуск после его удаления
Выпуск образца диаграммы из репозитория
Во-первых, давайте проверим, доступен ли \руль\ на сервере или нет.
helm version
В качестве примера попробуем установить чарт Apache из хаба. Выполните следующую команду, чтобы выполнить поиск Apache на хабе.
helm search hub apache
Вы получите набор результатов, скопируйте URL-адрес одного из поисков Apache. В данном случае я скопировал первый URL.
Нажмите URL-адрес в веб-браузере, и вы увидите следующую страницу.
На этой странице вы получите команды для добавления репозитория в локальную систему и установки из него диаграммы.
Выполните команды в вашей локальной системе, которые добавят репозиторий для диаграммы Apache.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list
Когда у вас есть репозиторий в вашей системе, все готово для установки диаграммы и создания выпуска для Apache с помощью Helm.
helm install my-release bitnami/apache
После успешного выполнения команд вы увидите вывод, как указано выше.
После публикации диаграммы вы сможете увидеть объекты, созданные в кластере Kubernetes.
kubectl get nodes
kubectl get pods
Теперь вы можете получить IP-адрес модуля и попытаться перейти на страницу Apache с помощью команды curl.
kubectl get pods -o wide
kubectl get svc
curl 10.244.1.2:8080
Если вы хотите удалить выпуск, вы можете сделать это, просто используя следующую команду
helm delete my-release
Вы можете составить список выпусков в кластере и посмотреть, был ли выпуск успешно удален или нет.
helm ls
helm status my-release
Создайте диаграмму и разверните пример приложения
В приведенном выше сценарии мы установили диаграмму, которая была легко доступна и настроена. Мы можем создать собственную диаграмму и выпустить наше приложение. Создать диаграмму очень просто с помощью helm. Если вы выполните следующую команду, вы получите диаграмму с образцом приложения Nginx.
helm create my-first-chart
Исследуйте структуру папок диаграммы, которую мы создали с помощью приведенной выше команды.
cd my-first-chart/
ls -l
ls -l charts/
ls -l templates/
ls -l templates/tests/
Проверьте содержимое файла Chart.yaml.
ls -lt
cat Chart.yaml
Проверьте содержимое файла values.yaml.
ls -lt
cat values.yaml
Теперь давайте развернем пример приложения, используя локальную диаграмму.
pwd
cd ..
ls -l | grep my-first-chart
kubectl get pods
helm install my-first-release my-first-chart/
После успешного выпуска диаграммы вы увидите модуль, созданный в кластере.
kubectl get pods
kubectl get svc
Теперь вы можете получить доступ к модулю Nginx через сервис.
curl 10.104.229.187
Вы можете найти информацию о выпуске, который мы создали, используя следующую команду.
helm ls
helm status my-first-release
Обновите выпуск
В приведенном выше сценарии мы создали диаграмму с примером приложения Nginx. Количество реплик в приведенном выше сценарии было 1. Если вы хотите увеличить количество реплик, вы можете легко сделать это, внеся изменения в файл values.yaml.
cat my-first-chart/values.yaml | grep replica
vim my-first-chart/values.yaml
cat my-first-chart/values.yaml | grep replica
helm ls
Теперь вы можете легко развернуть свои изменения и обновить версию.
helm upgrade my-first-release my-first-chart/
Можно даже заметить, что ревизия релиза обновлена до 2.
helm ls
На этот раз вы можете увидеть два модуля, работающих в кластере, поскольку мы указали количество реплик равным 2.
kubectl get pods
helm ls
Если мы проверим историю выпуска, мы заметим, что выпуск имеет две версии. В первой версии был 1 модуль, а позже мы изменили количество реплик до 2, что привело к созданию версии 2 выпуска.
helm history my-first-release
Если мы не хотим, чтобы изменения были выпущены в версии 2, и хотим вернуться к версии 1, мы можем просто сделать это с помощью следующей команды отката.
helm rollback my-first-release 1
helm ls
И это создаст версию 3 для выпуска.
helm history my-first-release
Теперь вы можете видеть, что в кластере работает только один модуль.
kubectl get pods
Если вы хотите удалить образец приложения Nginx, выпущенный из диаграммы, вы можете удалить его, удалив выпуск.
helm ls
helm delete my-first-release
helm ls
Восстановить выпуск после его удаления
В приведенном выше сценарии мы удалили файл release. Но по умолчанию выпуск не сохраняет историю выпусков при удалении. Если вы хотите вернуться в таком сценарии, вы не сможете сделать это, если не укажете параметр --keep-history для команды удаления выпуска.
helm ls
helm install my-second-release my-first-chart/
helm ls
Если вы укажете параметр --keep-history при удалении выпуска, штурвал создаст новую версию выпуска. Таким образом, вы можете вернуться к предыдущей рабочей версии даже после удаления выпуска или приложения.
helm delete my-second-release --keep-history
helm ls
helm ls -a
helm history my-second-release
helm rollback my-second-release 1
helm ls
helm history my-second-release
Заключение
В этой статье мы развернули пример приложения из таблицы Helm, доступной в Интернете. Мы даже видели, как создать диаграмму Helm в нашей системе и выпустить ее. Наряду с этим мы увидели, как удалять чарты Helm, выполнять откат к предыдущим версиям и сохранять историю выпусков даже после удаления чата.