Разверните стек LAMP в качестве диаграммы Helm

Разверните стек 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


helm install k8s apache


Установка MySQL


helm install k8s MySQL


Мы можем использовать команду get all, чтобы проверить, созданы ли в нашем кластере соответствующие ресурсы.


```javascript


кубектл получить все


kubectl получить все


Удалить графики


Если вам нужно удалить диаграммы, просто запустите команду helm uninstall, чтобы удалить эти приложения из кластера.


```javascript


helm удалить k8s-apache k8s-mysql


удалить k8s apache k8s mysql


Установка полного стека LAMP


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


Шаг 1. Найдите диаграмму, состоящую из стека LAMP


```javascript


фонарь поискового узла руля


лампа поискового центра руля


Шаг 2. Установите соответствующую диаграмму с помощью следующей команды


```javascript


репозиторий helm добавить лампу https://lead4good.github.io/lamp-helm-repository


установка руля k8s-lamp фонарь/лампа


руль установить лампу k8s


Шаг 1. Проверка установки


```javascript


кубектл получить все


kubectl получить все 2


Вот и все, вы успешно создали стек LAMP в Kubernetes, используя одну диаграмму Helm.


Вывод


Helm — это мощный инструмент для управления приложениями в кластере Kubernetes, упрощающий развертывание и обновление. Тем не менее, есть одна проблема в использовании шлема. Пользователи будут нести ответственность за создание и обслуживание этих диаграмм управления, что может быть сложной задачей, особенно когда речь идет о пользовательских приложениях. Такой инструмент, как Cloudplex, призван решить эту проблему, предлагая такие функции, как автоматическое создание диаграмм Helm и управляемые развертывания для облачных контейнерных приложений, и все это в рамках решения с низким уровнем кода. Так почему бы не попробовать  бесплатную учетную запись Cloudplex в следующий раз, когда вы будете создавать диаграмму Helm для своего приложения K8s.


Асад Файзи


Генеральный директор


CloudPlex.io, Inc


asad@cloudplex.io


Также опубликовано здесь



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE