Что мы собираемся делать?

  1. WordPress в кластере Kubernetes (здесь используется локальный Minikube)
  2. База данных для WordPress развернута в сервисе реляционных баз данных AWS (RDS).
  3. Упомянутые вещи выполняются с использованием инфраструктуры как кода (здесь используется Terraform)

Эта задача была выполнена на следующих ресурсах:

  1. Windows 10 в качестве рабочей станции
  2. Аккаунт AWS (уровень бесплатного пользования)
  3. Терраформ v0.12.29
  4. Кубектл v1.18.0
  5. 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, а открытый порт будет автоматически назначен кластером.

И, наконец, наша установка готова. Давайте посмотрим на созданную инфраструктуру.

Все используемые коды с шагами доступны на моем GitHub.

По любым вопросам, исправлениям или предложениям обращайтесь ко мне в LinkedIn.