Что мы собираемся делать?
- WordPress в кластере Kubernetes (здесь используется локальный Minikube)
- База данных для WordPress развернута в сервисе реляционных баз данных AWS (RDS).
- Упомянутые вещи выполняются с использованием инфраструктуры как кода (здесь используется Terraform)
Эта задача была выполнена на следующих ресурсах:
- Windows 10 в качестве рабочей станции
- Аккаунт AWS (уровень бесплатного пользования)
- Терраформ v0.12.29
- Кубектл v1.18.0
- Minikube v1.12.3 (в виртуальной машине)
Давайте запустим код и развернем его.
Поскольку RDS — это сервис, предоставляемый AWS, мы будем использовать его поставщика. Для этого мы будем использовать наши VPC и подсети по умолчанию, поэтому мы будем использовать источник данных для их извлечения.
Настройте свой профиль следующим образом, чтобы использовать его в поставщике AWS. Учетные данные можно создать и найти на панели инструментов AWS.
aws configure --profile <profilename>
Поставщик Kubernetes использовался для взаимодействия с кластером Minikube, который представляет собой кластер с одним узлом, работающий на моей виртуальной машине. Вместо использования конфигурации из kubectl я буду предоставлять хост и учетные данные кластера вручную.
Теперь мы создадим нашу базу данных в AWS RDS.
Мы начнем с группы безопасности для базы данных. Поскольку мы будем использовать MariaDB как продукт, работающий на порту 3306, мы разрешим вход в него из любого места, используя IPv4. Для Egress база данных может находиться в любом месте в Интернете, поскольку она потребуется для обновлений. Этот sg создается в VPC по умолчанию.
Поскольку RDSможно создать в нескольких подсетях для обеспечения высокой доступности, мы будем использовать для него все три подсети и создадим для него aws_db_subnet_group, используя идентификаторы подсети по умолчанию.
Теперь мы, наконец, создадим базу данных RDS размером 5 ГБ (оставьте ее меньше 20 ГБ, чтобы оставаться на уровне бесплатного пользования) и сделаем ее общедоступной, так как наш WordPress будет работать на нашем локальном компьютере. рабочая станция. Мы будем использовать MariaDB в качестве движка и его последнюю версию. Он будет основан на микроэкземплярах. Здесь мы установим учетные данные базы данных. Добавьте группу безопасности для брандмауэра, а также группу подсети. skip_final_snapshot использовался, поэтому при удалении базы данных не создается моментальный снимок.
Если вы не используете это, укажите имя моментального снимка, иначе вы столкнетесь с ошибкой при уничтожении базы данных, поскольку она запрашивает имя моментального снимка.
Не указывайте учетные данные в виде простого текста. Keep защищен с помощью переменных среды.
Теперь мы развернем наш сервер WordPress в кластере Minikube. Мы передадим учетные данные базы данных в переменные среды модулей, которые будут созданы при развертывании, и оставим порт 80 открытым, поскольку на нем размещены веб-серверы по умолчанию.
Мы предоставим развертывание на NodePort, а открытый порт будет автоматически назначен кластером.
И, наконец, наша установка готова. Давайте посмотрим на созданную инфраструктуру.