учебный проект изучения надежности продуктов, основанный на оригинальном postgres_cluster https://github.com/vitabaks/postgresql_cluster и приложении ghcr.io/ldest/sre-course/api
Предварительные работы и план работ:
- создать одну ВМ (виртуальная машина) с публичным IP в предварительной конфигурации 1 CPU | 2 GB | 16 GB SSD. При создании ВМ - зафиксировать имя пользователя
- сгенерировать ssh ключи для работы с ВМ в ~/.ssh - они потребуются при создании следующих ВМ
- создаем еще 5 ВМ (например с такой же конфигурацией - 1 CPU | 2 GB | 16 GB SSD) без публичного IP и с аналогичным пользователем п.1. Указываем публичный ключ для подключения
- Проверяем установку на первой ВМ: git, ansible, helm
- Клонируем репозиторий например в /home/<ваш пользователь п.1>/<папка развертывания>
- Переходим в <папку развертывания>/ansible/postgres_cluster. Проверяем и корректируем файл ./ansible/postgres_cluster/inventory - указываем корректные адреса для etcd, postgresdb. А так же пользователя п.1 и путь до ключей ssh
- В схеме используется haproxy и etcd - для аналогичных схем, дополнительных правок не требуется
- Разворачиваем приложение командой: ansible-playbook deploy_pgcluster.yml
- Проверяем итог: http://<ваш публичный IP>:7000/stat
- Скорректировать pg_hba.conf - добавить правило IP haproxy по аналогии нод pgcluster
- Подключиться к БД postgres. Создать БД weather.
- Для разворачивания API необходимо готовый kubeconfig от провайдера с выделенным namespace
- Переходим в <папку развертывания>/helm/sre-course-api
- В values.yaml необходимо указать кол-во реплик (replicaCount), корректируем параметр подключения к БД и порт работы (variables)
- Разворачиваем приложение командой: helm install sre-course-api sre-course-api --kubeconfig=<ваш kubeconfig> в папке ./helm
- Проверяем доступность подов и их работу. При необходимости корректируем ресурсы (resources) в values.yaml. Обновляем API: helm upgrade sre-course-api sre-course-api --kubeconfig=<ваш kubeconfig>