Разверните стек LAMP в качестве диаграммы Helm
13 апреля 2022 г.Развертывание приложений в Kubernetes может быть сложным процессом, поскольку даже самые простые приложения содержат несколько контейнеров или модулей. Развертывания Kubernetes становятся еще более сложными: все больше и больше приложений переходят на несвязанные архитектуры с использованием микросервисов и шаблонов проектирования, управляемых событиями.
Helm — это хорошее решение для преодоления этой сложности развертывания и упаковки приложений Kubernetes со всеми зависимостями, включая другие контейнеры/поды, сервисы, секреты, ConfigMaps и т. д. Кроме того, helm предоставляет пользователям упрощенный способ развертывания приложений в кластере Kubernetes. В этом посте мы увидим, как развернуть стек LAMP в K8s в качестве Helm Chart.
Почему Helm Charts?
Helm действует как менеджер пакетов для Kubernetes. Подобно традиционным менеджерам пакетов, таким как apt, yum, packman и widget, которые позволяют пользователям просто искать, устанавливать, обновлять и удалять программное обеспечение в целевых операционных системах, helm стремится обеспечить ту же функциональность в среде Kubernetes.
Helm использует Helm Charts для упаковки приложений Kubernetes. Затем эти диаграммы можно версионировать и публиковать в репозитории, таком как Artifacthub.io, и использовать для установки приложений в любом кластере Kubernetes. Поскольку диаграммы helm имеют версии, обновление приложений так же просто, как запуск самой новой версии диаграммы. Нет необходимости вручную изменять файлы манифеста для обновления приложений. Для проприетарных приложений пользователи могут предоставлять частные репозитории с помощью диаграмм управления в своих тестовых и производственных средах. Это устраняет необходимость копировать развертывания или конфигурации.
Развертывание традиционного стека LAMP
Прежде чем перейти к использованию диаграмм Helm, давайте посмотрим, как обычно развертывать стек LAMP в кластере Kubernetes. Стек LAMP состоит из Apache, MySQL и PHP. Таким образом, пользователям придется управлять как минимум двумя развертываниями: одно для контейнера, состоящего из базы данных (MySQL), а другое для веб-сервера с PHP (Apache). Перед этим вам нужно будет настроить Secrets, тома хранилища, ConfigMap и т. д., а затем создать файл развертывания и развернуть приложение. Ниже приведен пример файла развертывания для MySQL с секретом для пароля root, постоянного тома и службы.
```javascript
апиВерсия: v1
вид: сервис
метаданные:
имя: mysql
спецификация:
порты:
- порт: 3306
селектор:
приложение: mysql
IP-кластер: нет
apiVersion: приложения/v1
вид: развертывание
метаданные:
имя: mysql
спецификация:
селектор:
метки соответствия:
приложение: mysql
стратегия:
тип: Воссоздать
шаблон:
метаданные:
этикетки:
приложение: mysql
спецификация:
контейнеры:
- изображение: mysql:8.0.28
имя: mysql
среда:
- имя: MYSQL_DATABASE
значение: web_db
- имя: MYSQL_ROOT_PASSWORD
значениеОт:
секретная ссылка:
имя: mysql-пропуск
ключ: пароль.txt
порты:
- контейнерПорт: 3306
имя: mysql
томМаунты:
- имя: mysql-постоянное-хранилище
путь монтирования: /var/lib/mysql
тома:
- имя: mysql-постоянное-хранилище
персистентволумеклайм:
претензия: mysql-pv-претензия
Вам нужно будет создать еще один манифест развертывания для Apache и PHP. Когда придет время обновить развертывание, вам нужно будет изменить файлы и повторно развернуть их. Если вы развернули их в нескольких кластерах, вам потребуется изменить манифест развертывания в каждом кластере и выполнить повторное развертывание. У этого подхода есть свои риски, так как ошибка в модификации может полностью сломать приложение. Также высока вероятность создания неправильной конфигурации, если манифесты постоянно меняются, а кластеры управляются несколькими сторонами.
Стек LAMP с использованием диаграммы Helm
Поскольку LAMP состоит из обычных приложений, вы можете просто найти подходящие диаграммы в общедоступном репозитории, таком как Artifacthub.io (вариант по умолчанию) и напрямую установить диаграммы. Это можно сделать либо через командную строку, либо зайдя на сайт и выполнив поиск.
Поиск карт Helm
Просто запустите команду поиска с именем репозитория и диаграммой для поиска через интерфейс командной строки. Здесь мы искали диаграмму Apache.
```javascript
поисковый центр helm apache
Установка Helm Charts
Как только вы найдете подходящие карты, следующим шагом будет их установка. В этом примере мы будем использовать проверенные диаграммы от известного издателя bitnami для инициализации Apache и MySQL в кластере с использованием предоставленных диаграмм управления.
```javascript
репозиторий helm добавить битнами https://charts.bitnami.com/bitnami
helm install k8s-apache --set imagePullPolicy=Всегда битнами/apache
helm install k8s-mysql --set auth.rootPassword=testpassword123,auth.database=lamp_database bitnami/mysql
Приведенные выше команды установят apache и MySQL в нашем кластере Kubernetes. Мы предоставили параметр imagePullPolicy для диаграммы Apache, чтобы всегда загружать образ контейнера и устанавливать пароль root и базу данных для MySQL. Несмотря на то, что существует заблуждение, что диаграммы нельзя настраивать, это не так. Однако значения, которые можно изменить, будут зависеть от конфигурации диаграммы. Эти диаграммы bitnami позволяют пользователям изменять почти все конфигурации для соответствующих контейнеров.
Установка Apache
Установка MySQL
Мы можем использовать команду get all, чтобы проверить, созданы ли в нашем кластере соответствующие ресурсы.
```javascript
кубектл получить все
Удалить графики
Если вам нужно удалить диаграммы, просто запустите команду helm uninstall, чтобы удалить эти приложения из кластера.
```javascript
helm удалить k8s-apache k8s-mysql
Установка полного стека LAMP
В предыдущем разделе мы рассмотрели, как создать стек LAMP, установив отдельные диаграммы управления для различных компонентов стека без создания каких-либо файлов манифеста или конфигураций. Мы можем еще больше упростить этот процесс, найдя диаграмму, состоящую из полного стека LAMP.
Шаг 1. Найдите диаграмму, состоящую из стека LAMP
```javascript
фонарь поискового узла руля
Шаг 2. Установите соответствующую диаграмму с помощью следующей команды
```javascript
репозиторий helm добавить лампу https://lead4good.github.io/lamp-helm-repository
установка руля k8s-lamp фонарь/лампа
Шаг 1. Проверка установки
```javascript
кубектл получить все
Вот и все, вы успешно создали стек LAMP в Kubernetes, используя одну диаграмму Helm.
Вывод
Helm — это мощный инструмент для управления приложениями в кластере Kubernetes, упрощающий развертывание и обновление. Тем не менее, есть одна проблема в использовании шлема. Пользователи будут нести ответственность за создание и обслуживание этих диаграмм управления, что может быть сложной задачей, особенно когда речь идет о пользовательских приложениях. Такой инструмент, как Cloudplex, призван решить эту проблему, предлагая такие функции, как автоматическое создание диаграмм Helm и управляемые развертывания для облачных контейнерных приложений, и все это в рамках решения с низким уровнем кода. Так почему бы не попробовать бесплатную учетную запись Cloudplex в следующий раз, когда вы будете создавать диаграмму Helm для своего приложения K8s.
Асад Файзи
Генеральный директор
CloudPlex.io, Inc
Также опубликовано здесь
Оригинал