WordPress — это популярная CMS для создания сайтов и блогов. В Kubernetes она разворачивается полностью автоматически: приложение, база данных, хранилище данных и сетевые настройки создаются аддоном.
Установка
Перед установкой WordPress убедитесь, что установлены:
- CSI-driver — обязательный компонент, обеспечивает работу сетевых дисков для WordPress и MariaDB.
- Nginx Ingress — необходим для настройки доступа к сайту по доменному имени.
- CSI S3 — если вы хотите хранить файлы WordPress в S3-бакете.
Для установки откройте раздел «Дополнения» в панели управления кластера и выберите «WordPress».

После выбора дополнения откроется YAML-конфигурация. Для установки достаточно:
- указать
wordpressUsernameиwordpressPassword; - включить
ingress.enabled: true; - указать домен в
ingress.hostname.
В этом случае будут развернуты:
- WordPress;
- база данных MariaDB;
- два сетевых диска для хранения данных;
- LoadBalancer;
- объект Ingress;
- Kubernetes Secrets.
Настройка параметров
Основные настройки
Ключевые настройки WordPress собраны в одном блоке:
wordpressUsername: user
wordpressPassword: ""
existingSecret: ""
wordpressEmail: user@example.com
wordpressFirstName: FirstName
wordpressLastName: LastName
wordpressBlogName: User's Blog!
wordpressTablePrefix: wp_
wordpressScheme: http
wordpressSkipInstall: false
wordpressExtraConfigContent: ""
wordpressConfiguration: ""
existingWordPressConfigurationSecret: ""
wordpressConfigureCache: false
wordpressPlugins: none
apacheConfiguration: ""
existingApacheConfigurationConfigMap: ""
customPostInitScripts: {}
smtpHost: ""
smtpPort: ""
smtpUser: ""
smtpPassword: ""
smtpProtocol: ""
smtpFromEmail: ""
smtpFromName: ""
smtpExistingSecret: ""
allowEmptyPassword: true
allowOverrideNone: false
overrideDatabaseSettings: false
htaccessPersistenceEnabled: false
customHTAccessCM: ""
command: []
args: []
extraEnvVars: []
extraEnvVarsCM: ""
extraEnvVarsSecret: ""
Здесь указываются:
- логин и пароль администратора;
- адрес электронной почты;
- имя сайта;
- схема доступа (
http/https).
Остальные параметры относятся к расширенной настройке CMS (SMTP, переменные окружения). Их можно оставить без изменений.
Сетевые настройки
Балансировщик нагрузки
По умолчанию создается LoadBalancer:
service:
type: LoadBalancer
Он получает внешний IP-адрес, через который доступен сайт.
Ingress
Дополнительно можно настроить доступ по доменному имени, указав его в настройках Ingress-контроллера:
ingress:
enabled: true
hostname: example.com
path: /
tls: false
Хранилище данных
Создаются два тома (PVC):
PVC для WordPress:
persistence:
enabled: true
size: 10Gi
PVC для MariaDB:
mariadb:
enabled: true
primary:
persistence:
enabled: true
storageClass: "nvme.network-drives.csi.timeweb.cloud"
size: 8Gi
Оба тома создаются с классом nvme.network-drives.csi.timeweb.cloud. Вы можете изменить класс хранения, указав другой в параметре global.defaultStorageClass или задав storageClass вручную в соответствующих блоках.
После установки сетевые диски появятся в панели управления, в разделе «Сетевые диски».
Постоянные хранилища нужны, чтобы данные сохранялись при пересоздании подов.
После установки
Дождитесь завершения создания балансировщика и создайте A-запись для домена, указав IP-адрес балансировщика.
Проверьте состояние подов:
kubectl get pods -n wordpress
Вы увидите два пода — в них запущены WordPress и база данных:
NAME READY STATUS RESTARTS AGE
wordpress-5f77d8758b-6g2z2 1/1 Running 0 23h
wordpress-mariadb-0 1/1 Running 0 23h
Проверьте сервисы:
kubectl get svc -n wordpress
Пример вывода:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress LoadBalancer 10.105.62.193 185.154.193.137 80:31401/TCP,443:32277/TCP 23h
wordpress-mariadb ClusterIP 10.105.69.70 <none> 3306/TCP 23h
wordpress-mariadb-headless ClusterIP None <none> 3306/TCP 23h
Поле EXTERNAL-IP указывает на IP-адрес балансировщика, через который доступно приложение.