-
infernofeniks authoredinfernofeniks authored

Дипломный практикум в Yandex.Cloud
- Цели:
- Этапы выполнения:
- Что необходимо для сдачи задания?
- Как правильно задавать вопросы дипломному руководителю?
Цели:
- Подготовить облачную инфраструктуру на базе облачного провайдера Яндекс.Облако.
- Запустить и сконфигурировать Kubernetes кластер.
- Установить и настроить систему мониторинга.
- Настроить и автоматизировать сборку тестового приложения с использованием Docker-контейнеров.
- Настроить CI для автоматической сборки и тестирования.
- Настроить CD для автоматического развёртывания приложения.
Этапы:
- Создание облачной инфраструктуры
- Создание Kubernetes кластера
- Создание тестового приложения
- Подготовка cистемы мониторинга и деплой приложения
- Установка и настройка CI/CD
- Ссылки на все ресурсы
- Заключение
- Скриншоты
Создание облачной инфраструктуры
-
Характеристики инфраструктуры легко можно изменить для экономии бюджета гранта на Yandex Cloud. Это наглядно видно в модулях терраформ.
Но для демонстрации я оставлю хосты непрерываемые, чтобы проверяющий мог проверить их в любое время. При этом, если строго следовать требованиям задания, то значения переменных для моего модуля по созданию групп ВМ выглядели бы так:
cores = 2 memory = 2 core_fraction = 5 preemptible = true
-
Версия Terraform
Terraform v1.8.3 on linux_amd64
Также в модулях я выставил ограничение по версиям Terraform. Может слишком жестко, что только от 1.8.3, но "я художник - я так вижу".
required_version = ">=1.8.3"
Предварительная подготовка к установке и запуску Kubernetes кластера.
-
Подготовительные работы я вынес за рамки выполнения дипломного проекта, так как считаю, что SA для работы Terraform и S3-bucket должны быть реализованы без привязки к проекту. Но так как и они выполняются через мои модули Terraform, то можно было бы выполнить их вместе с проектом в одном манифесте.
-
Создание VPC я бы таким же образом вынес в отдельный этап, и обращался с к данным VPC через
terraform_remote_state
, но сделал по заданию, так как этот момент считаю некритичным. -
Все остальные ресурсы так же создаются с помощью модулей, которые расположены в моем репозитории
-
Конфигурация манифестов Terraform для выполнения дипломного проекта:
- Репозиторий
- Пример выполнения
terraform apply
-
Скриншоты этапа:
- Дополнительно реализован HTTPS доступ ко всем WEB сервисам в данном задании. Модуль
- Хосты кластера реализованы через
instance_group
. Проводил тесты с количеством: 3 мастера - 6 воркеров. Проблем нет. Количество хостов можно легко менять. Динамический инвентори отрабатывает без ошибок - Ориентировочное время выполнения манифестов - 17-20 минут
Создание Kubernetes кластера
-
Кластер подготавливается и настраивается с помощью моей Ansible роли. В проде я бы использовал Kubespray, но было интересно создать свою роль. Очевидно, что моя роль и близко не стоит с Kubespray, но сколько людей занимаются его разработкой и какое количество времени?
- Репозиторий с Ansible ролью ansible-kubeadm
-
Конфигурация кластера запускается на первом этапе с помощью Terraform:
Данный модуль также формирует инвентори файл для работы Ansible. Все операции производятся через созданый на первом этапе бастион. Все хосты кластрера находятся в приватных подсетях.
- Доступ
kubectl
производится через Load Balancer на группу мастеров - Доступ приложений кластера поизводится через Application Load Balancer на группу воркеров (на ingress controller)