Kubernetes — это стандартный способ развертывания масштабируемых и отказоустойчивых приложений. Kubernetes позволяет разработчикам быстро запускать и останавливать инстансы по мере необходимости для обеспечения бесперебойной доставки контента. Чтобы узнать больше о Kubernetes, ознакомьтесь с нашим подробным руководством Getting to Know Kubernetes.
Helm — это очень популярный пакетный менеджер, который используется для установки приложений в Kubernetes. Helm предназначен для развертывания и управления приложениями в кластерах Kubernetes, упрощая этот процесс. Он также предоставляет доступ к готовым упакованным приложениям для Kubernetes. Они называются Charts. Знакомство с Kubernetes и Helm — важное дополнение к арсеналу любого DevOps-специалиста.
WordPress — одна из самых популярных систем управления контентом (CMS). Сочетание ее с MySQL базой данных обеспечивает высокую производительность и отличную масштабируемость веб-приложений. Использование внешней базы данных MySQL также позволит другим приложениям использовать эту же базу данных для своих задач.
В этой статье мы установим WordPress в Kubernetes с помощью пакетного менеджера Helm и подключим их к внешнему серверу MySQL. Давайте начнем!
Предварительные требования
Для успешного прохождения этого руководства вам понадобится следующее программное обеспечение:
- Работающий кластер Kubernetes. Выполните шаги из этого руководства по установке Kubernetes на Ubuntu.
- Инструмент командной строки Kubernetes
kubectl. - Вам понадобится установленный пакетный менеджер Helm. Если у вас еще не установлен Helm, вы можете скачать его с официальной страницы релизов на GitHub – helm/helm: The Kubernetes Package Manager. Чтобы ознакомиться с пошаговым руководством по Helm, вы также можете прочитать Introduction to Helm: Package Manager for Kubernetes.
- Вам понадобится установленный MySQL, а также имя пользователя root и пароль. Если вы новичок в MySQL, обязательно ознакомьтесь с How to setup MySQL on a server and MySQL basics и MySQL User – Create and Grant Permissions.
Вам также необходим работающий кластер Kubernetes, подключенный к MySQL. Если у вас несколько кластеров, убедитесь, что вы знаете, какой именно кластер сейчас подключен к MySQL. Чтобы увидеть все настроенные кластеры в вашем файле конфигурации kubectl, выполните следующую команду:
|
1 |
kubectl config get-contexts |
На вашем компьютере вы должны получить следующий вывод:
|
Current |
Name |
Cluster |
AuthInfo |
Namespace |
|
* |
docker-desktop |
docker-desktop |
docker-desktop |
Поскольку мы используем Docker Desktop для запуска Kubernetes, вы увидите в выводе docker-desktop. Ваши значения могут отличаться. Знак звездочки (*) указывает, какой кластер в данный момент является контекстом по умолчанию. Если вам нужно изменить текущий контекст, выполните:
|
1 |
kubectl config use-context context-name |
Теперь вы готовы перейти к шагам руководства.
Настройка MySQL
Сначала мы создадим в MySQL отдельного пользователя для подключения к WordPress. Это необходимо, так как наша установка WordPress будет находиться на отдельном сервере внутри кластера Kubernetes. На сервере MySQL войдите в MySQL с помощью следующей команды:
|
1 |
mysql -u root -p |
Вам будет предложено ввести пароль root. Введите пароль, и вы будете подключены.
-
Создание отдельной базы данных для WordPress
В MySQL может быть любое количество баз данных. Базы данных также могут совместно использоваться различными приложениями. WordPress поставляется со своей собственной базой данных. Здесь нам нужно создать отдельную базу данных для WordPress. Чтобы создать эту базу данных, вы можете выполнить следующую команду в консоли MySQL:
|
1 |
CREATE DATABASE wordpress |
-
Создание отдельного пользователя для WordPress
После создания базы данных мы создадим для нее отдельного пользователя. Мы будем использовать этого пользователя для подключения к нашей новой базе данных:
|
1 |
CREATE USER wordpress_user IDENTIFIED BY '<password>'; |
Введите надежный пароль выше. Хотя мы создали пользователя для WordPress, мы пока не добавили никаких привилегий. Нам нужно предоставить привилегии нашим пользователям для доступа и операций DML (манипулирование данными). Чтобы упростить задачу, мы собираемся предоставить нашим пользователям все привилегии. Будьте осторожны, это не рекомендуется в рабочей среде. Выполните команду ниже в оболочке MySQL:
|
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@'%'; |
Чтобы обновить внутренние таблицы MySQL, управляющие правами доступа, используйте следующее выражение:
|
1 |
FLUSH PRIVILEGES; |
Наконец, вы можете закрыть клиент MySQL, выполнив команду ниже в оболочке MySQL:
|
1 |
Exit; |
-
Проверка нашего пользователя и базы данных
Далее нам нужно убедиться, что наш пользователь WordPress может подключиться к базе данных WordPress. Для этого откройте оболочку MySQL и выполните команду ниже:
|
1 |
mysql -u <wordpress_user> -p |
|
1 |
show databases |
-
Разрешение удаленных подключений к нашему серверу MySQL
До сих пор у нас есть работающий пользователь WordPress и база данных WordPress. Однако наш сервер MySQL и база данных WordPress находятся на разных серверах. Следовательно, нам нужно убедиться, что WordPress может подключиться к базе данных MySQL. Для этого нам нужно отредактировать конфигурацию MySQL, чтобы разрешить подключения с удаленных хостов. Вам нужно будет отредактировать файл mysqld.cnf. В системах на базе Linux этот файл находится по пути:
|
1 |
/etc/mysql/mysql.conf.d/mysqld.cnf |
После этого откройте файл с помощью любого текстового редактора и найдите bind-address. Параметр bind-address указывает IP-адрес, который может прослушивать MySQL. По умолчанию MySQL прослушивает только 127.0.0.1.. Чтобы разрешить подключения с внешних хостов, измените bind-address на 0.0.0.0.. Чтобы эти изменения вступили в силу, перезапустите сервер MySQL, выполнив команду ниже:
|
1 |
systemctl restart mysql |
|
1 |
mysql -h <mysql_server_ip> -u wordpress_user -p |
mysql_server_ip в команду выше и выполните ее. Если вы можете подключиться без ошибок, вы можете двигаться дальше.
Установка и обновление WordPress
WordPress по умолчанию использует MariaDB в качестве базы данных. Мы не хотим использовать эту базу данных, так как нам нужна наша база данных MySQL. Наряду с этим изменением нам также необходимо настроить имя пользователя и пароль администратора. Мы сделаем это, применив параметры командной строки.
Сначала создайте новую папку с именем my blog-settings. Внутри папки создайте новый файл с именем values.yaml. Введите следующее содержимое в файл values.yaml:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
## Настройки WordPress wordpressUsername: my_user wordpressPassword: some_strong_password wordpressEmail: sample@example.com wordpressFirstName: User wordpressLastName: Last wordpressBlogName: Мой Блог! ## Настройки базы данных externalDatabase: host: <mysql_server_ip> user: wordpress_user password: password database: wordpress ## Включить Maria DB mariadb: enabled: false |
Этот файл не требует пояснений. Обратите внимание, что ниже мы отключили MariaDB. Теперь, когда наша конфигурация готова, пришло время выполнить helm для установки WordPress. Выполните команду ниже в PowerShell:
|
1 |
helm install myblog -f values.yaml stable/wordpress |
myblog-wordpress. Потребуется некоторое время, прежде чем WordPress будет готов к использованию. Чтобы найти запущенные службы, выполните команду ниже:|
1 |
kubectl get services |
|
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:
Это учетные данные, которые мы указали в файле YAML выше. Введите эти учетные данные, и вы будете готовы настроить свой сайт на WordPress и сохранять контент в нашей только что созданной базе данных MySQL.
Обновление WordPress
WordPress выпускает обновления для устранения уязвимостей безопасности, внедрения новых функций, исправления ошибок и многого другого. Вы можете обновить установленный WordPress, выполнив следующую команду в PowerShell:
|
1 |
helm upgrade |
Перед обновлением, если вы хотите просмотреть список релизов, вы можете выполнить команду ниже:
|
1 |
helm list |
Вы получите следующий вывод:
|
1 2 3 |
Подождите немного, пока мы загружаем самые последние из ваших репозиториев чартов… …Пропуск локального репозитория чартов …Успешно получено обновление из репозитория чартов “stable” chart repository |
Если вы хотите проверить, доступна ли новая версия репозитория WordPress, вы можете выполнить команду ниже:
|
1 |
helm inspect chart stable/wordpress |
Если вы хотите обновить свой релиз WordPress до последней версии чарта WordPress, вам следует запустить:
|
1 |
helm upgrade -f values.yaml <ваше_имя> stable/wordpress |
Мы должны использовать тот же файл конфигурации, что и раньше, чтобы значения конфигурации не изменились.
Откат релиза
Каждый раз, когда вы выполняете обновление с помощью Helm, Helm создает контрольную точку релиза. Вы можете вернуться назад, если все работает не так, как ожидалось. Релизы можно сравнивать и откатывать назад. Если процесс обновления пойдет не так из-за какой-либо проблемы, вы можете откатиться к предыдущему релизу. Для отката выполните команду ниже:
|
1 |
helm rollback release-name revision-number |
В нашем случае выполните команду ниже, чтобы откатиться к предыдущему релизу:
|
1 |
helm rollback myblog 1 |
Чтобы убедиться, что процесс отката успешно завершен, вы можете выполнить helm list команду.
Заключение
В этом подробном руководстве мы показали вам, как настроить MySQL и установить WordPress с этой внешней базой данных MySQL. Мы установили WordPress в Kubernetes с помощью пакетного менеджера Helm, а также выполнили обновления в WordPress.
Теперь, когда вы знакомы с установкой в Kubernetes с помощью Helm, не останавливайтесь на достигнутом. Не стесняйтесь изучить блог CloudSigma, чтобы узнать больше о Kubernetes:
- Развертывание PHP-приложения в кластере Kubernetes на Ubuntu 18.04
- Как создать кластер Kubernetes с помощью Kubeadm на Ubuntu 18.04
- Что такое Docker? Обзор экосистемы Docker
Приятной работы!

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