Skip to content
Snippets Groups Projects
README.md 18.51 KiB

Дипломный практикум в Yandex.Cloud


Цели:

  1. Подготовить облачную инфраструктуру на базе облачного провайдера Яндекс.Облако.
  2. Запустить и сконфигурировать Kubernetes кластер.
  3. Установить и настроить систему мониторинга.
  4. Настроить и автоматизировать сборку тестового приложения с использованием Docker-контейнеров.
  5. Настроить CI для автоматической сборки и тестирования.
  6. Настроить 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 кластера.

  1. Подготовительные работы я вынес за рамки выполнения дипломного проекта, так как считаю, что SA для работы Terraform и S3-bucket должны быть реализованы без привязки к проекту. Но так как и они выполняются через мои модули Terraform, то можно было бы выполнить их вместе с проектом в одном манифесте.

  2. Создание VPC я бы таким же образом вынес в отдельный этап, и обращался с к данным VPC через terraform_remote_state, но сделал по заданию, так как этот момент считаю некритичным.

  3. Все остальные ресурсы так же создаются с помощью модулей, которые расположены в моем репозитории

  4. Конфигурация манифестов Terraform для выполнения дипломного проекта:

  5. Скриншоты этапа:

  • Дополнительно реализован HTTPS доступ ко всем WEB сервисам в данном задании. Модуль
  • Хосты кластера реализованы через instance_group. Проводил тесты с количеством: 3 мастера - 6 воркеров. Проблем нет. Количество хостов можно легко менять. Динамический инвентори отрабатывает без ошибок
  • Ориентировочное время выполнения манифестов - 17-20 минут

Создание Kubernetes кластера

  1. Кластер подготавливается и настраивается с помощью моей Ansible роли. В проде я бы использовал Kubespray, но было интересно создать свою роль. Очевидно, что моя роль и близко не стоит с Kubespray, но сколько людей занимаются его разработкой и какое количество времени?

  2. Конфигурация кластера запускается на первом этапе с помощью Terraform:

Данный модуль также формирует инвентори файл для работы Ansible. Все операции производятся через созданый на первом этапе бастион. Все хосты кластрера находятся в приватных подсетях.

  • Доступ kubectl производится через Load Balancer на группу мастеров
  • Доступ приложений кластера поизводится через Application Load Balancer на группу воркеров (на ingress controller)