Назад в блог

Настройка WordPress с MySQL в Kubernetes с помощью Helm

Настройка WordPress с MySQL в Kubernetes с помощью Helm

Kubernetes — это стандартный способ развертывания масштабируемых и отказоустойчивых приложений. Kubernetes позволяет разработчикам быстро запускать и останавливать инстансы по мере необходимости для обеспечения бесперебойной доставки контента. Чтобы узнать больше о Kubernetes, ознакомьтесь с нашим подробным руководством Getting to Know Kubernetes.

Helm — это очень популярный пакетный менеджер, который используется для установки приложений в Kubernetes. Helm предназначен для развертывания и управления приложениями в кластерах Kubernetes, упрощая этот процесс. Он также предоставляет доступ к готовым упакованным приложениям для Kubernetes. Они называются Charts. Знакомство с Kubernetes и Helm — важное дополнение к арсеналу любого DevOps-специалиста.

WordPress — одна из самых популярных систем управления контентом (CMS). Сочетание ее с MySQL базой данных обеспечивает высокую производительность и отличную масштабируемость веб-приложений. Использование внешней базы данных MySQL также позволит другим приложениям использовать эту же базу данных для своих задач.

В этой статье мы установим WordPress в Kubernetes с помощью пакетного менеджера Helm и подключим их к внешнему серверу MySQL. Давайте начнем!

Предварительные требования

Для успешного прохождения этого руководства вам понадобится следующее программное обеспечение:

  1. Работающий кластер Kubernetes. Выполните шаги из этого руководства по установке Kubernetes на Ubuntu.
  2. Инструмент командной строки Kubernetes kubectl.
  3. Вам понадобится установленный пакетный менеджер Helm. Если у вас еще не установлен Helm, вы можете скачать его с официальной страницы релизов на GitHub – helm/helm: The Kubernetes Package Manager. Чтобы ознакомиться с пошаговым руководством по Helm, вы также можете прочитать Introduction to Helm: Package Manager for Kubernetes.
  4. Вам понадобится установленный MySQL, а также имя пользователя root и пароль. Если вы новичок в MySQL, обязательно ознакомьтесь с How to setup MySQL on a server and MySQL basics и MySQL User – Create and Grant Permissions.

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

На вашем компьютере вы должны получить следующий вывод:

Current

Name

Cluster

AuthInfo

Namespace

*

docker-desktop

docker-desktop

docker-desktop

Поскольку мы используем Docker Desktop для запуска Kubernetes, вы увидите в выводе docker-desktop. Ваши значения могут отличаться. Знак звездочки (*) указывает, какой кластер в данный момент является контекстом по умолчанию. Если вам нужно изменить текущий контекст, выполните:

Теперь вы готовы перейти к шагам руководства.

Настройка MySQL

Сначала мы создадим в MySQL отдельного пользователя для подключения к WordPress. Это необходимо, так как наша установка WordPress будет находиться на отдельном сервере внутри кластера Kubernetes. На сервере MySQL войдите в MySQL с помощью следующей команды:

Вам будет предложено ввести пароль root. Введите пароль, и вы будете подключены.

  • Создание отдельной базы данных для WordPress

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

  • Создание отдельного пользователя для WordPress

После создания базы данных мы создадим для нее отдельного пользователя. Мы будем использовать этого пользователя для подключения к нашей новой базе данных:

Введите надежный пароль выше. Хотя мы создали пользователя для WordPress, мы пока не добавили никаких привилегий. Нам нужно предоставить привилегии нашим пользователям для доступа и операций DML (манипулирование данными). Чтобы упростить задачу, мы собираемся предоставить нашим пользователям все привилегии. Будьте осторожны, это не рекомендуется в рабочей среде. Выполните команду ниже в оболочке MySQL:

Чтобы обновить внутренние таблицы MySQL, управляющие правами доступа, используйте следующее выражение:

Наконец, вы можете закрыть клиент MySQL, выполнив команду ниже в оболочке MySQL:

  • Проверка нашего пользователя и базы данных

Далее нам нужно убедиться, что наш пользователь WordPress может подключиться к базе данных WordPress. Для этого откройте оболочку MySQL и выполните команду ниже:

Вам будет предложено ввести пароль. Используйте пароль, который вы ввели выше для пользователя WordPress. Если вы смогли войти, поздравляем, вы успешно создали пользователя MySQL. Далее убедитесь, что этот пользователь имеет доступ к базе данных WordPress. Выполните команду ниже в оболочке MySQL:
Если вы видите свою базу данных WordPress ниже, значит, у вашего пользователя WordPress есть доступ к базе данных WordPress.

  • Разрешение удаленных подключений к нашему серверу MySQL

До сих пор у нас есть работающий пользователь WordPress и база данных WordPress. Однако наш сервер MySQL и база данных WordPress находятся на разных серверах. Следовательно, нам нужно убедиться, что WordPress может подключиться к базе данных MySQL. Для этого нам нужно отредактировать конфигурацию MySQL, чтобы разрешить подключения с удаленных хостов. Вам нужно будет отредактировать файл mysqld.cnf. В системах на базе Linux этот файл находится по пути:

После этого откройте файл с помощью любого текстового редактора и найдите bind-address. Параметр bind-address указывает IP-адрес, который может прослушивать MySQL. По умолчанию MySQL прослушивает только 127.0.0.1.. Чтобы разрешить подключения с внешних хостов, измените bind-address на 0.0.0.0.. Чтобы эти изменения вступили в силу, перезапустите сервер MySQL, выполнив команду ниже:

Далее, если вы хотите проверить, можете ли вы подключиться удаленно, выполните следующую команду на своем локальном компьютере или сервере разработки:
Добавьте mysql_server_ip в команду выше и выполните ее. Если вы можете подключиться без ошибок, вы можете двигаться дальше.

Установка и обновление WordPress

WordPress по умолчанию использует MariaDB в качестве базы данных. Мы не хотим использовать эту базу данных, так как нам нужна наша база данных MySQL. Наряду с этим изменением нам также необходимо настроить имя пользователя и пароль администратора. Мы сделаем это, применив параметры командной строки.

Сначала создайте новую папку с именем my blog-settings. Внутри папки создайте новый файл с именем values.yaml. Введите следующее содержимое в файл values.yaml:

Этот файл не требует пояснений. Обратите внимание, что ниже мы отключили MariaDB. Теперь, когда наша конфигурация готова, пришло время выполнить helm для установки WordPress. Выполните команду ниже в PowerShell:

После завершения процесса вы увидите созданную службу с именем myblog-wordpress. Потребуется некоторое время, прежде чем WordPress будет готов к использованию. Чтобы найти запущенные службы, выполните команду ниже:
Вы получите следующий результат:

NAME

TYPE

CLUSTER-IP

EXTERNAL-IP

PORT

myblog-wordpress

ClusterIP

10.96.0.1

<none>

80:31403/TCP,443:30879/TCP

Здесь представлена очень полезная информация о запущенных службах. Нам нужно обратить внимание на внешний IP-адрес и порт. Внешний IP — это IP-адрес, по которому обслуживается ваш WordPress. Поскольку мы используем Docker Desktop, в поле внешнего IP-адреса мы получаем none. Вы получите IP-адрес в зависимости от вашей системы. Откройте веб-браузер и введите этот IP-адрес. Вы увидите страницу входа в WordPress:

WordPress with MySQL 1

Это учетные данные, которые мы указали в файле YAML выше. Введите эти учетные данные, и вы будете готовы настроить свой сайт на WordPress и сохранять контент в нашей только что созданной базе данных MySQL.

Обновление WordPress

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

Перед обновлением, если вы хотите просмотреть список релизов, вы можете выполнить команду ниже:

Вы получите следующий вывод:

Если вы хотите проверить, доступна ли новая версия репозитория WordPress, вы можете выполнить команду ниже:

Если вы хотите обновить свой релиз WordPress до последней версии чарта WordPress, вам следует запустить:

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

Откат релиза

Каждый раз, когда вы выполняете обновление с помощью Helm, Helm создает контрольную точку релиза. Вы можете вернуться назад, если все работает не так, как ожидалось. Релизы можно сравнивать и откатывать назад. Если процесс обновления пойдет не так из-за какой-либо проблемы, вы можете откатиться к предыдущему релизу. Для отката выполните команду ниже:

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

Чтобы убедиться, что процесс отката успешно завершен, вы можете выполнить helm list команду.

Заключение

В этом подробном руководстве мы показали вам, как настроить MySQL и установить WordPress с этой внешней базой данных MySQL. Мы установили WordPress в Kubernetes с помощью пакетного менеджера Helm, а также выполнили обновления в WordPress.

Теперь, когда вы знакомы с установкой в Kubernetes с помощью Helm, не останавливайтесь на достигнутом. Не стесняйтесь изучить блог CloudSigma, чтобы узнать больше о Kubernetes:

Приятной работы!

author

Hark Labs

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.