Giter Club home page Giter Club logo

diplom-project's Introduction

Что необходимо для сдачи задания?

  1. Репозиторий с конфигурационными файлами Terraform и готовность >продемонстрировать создание всех ресурсов с нуля.
  2. Пример pull request с комментариями созданными atlantis'ом или снимки >экрана из Terraform Cloud.

Terraform repository

  1. Репозиторий с конфигурацией ansible, если был выбран способ создания >Kubernetes кластера при помощи ansible.

Kubespray repository

  1. Репозиторий с Dockerfile тестового приложения и ссылка на собранный docker image.
  2. Репозиторий с конфигурацией Kubernetes кластера.
  3. Ссылка на тестовое приложение и веб интерфейс Grafana с данными доступа.

Gitlab CI/CD

Kube-Prometheus repository


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


Цели:

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

Этапы выполнения:

Создание облачной инфраструктуры

Для начала необходимо подготовить облачную инфраструктуру в ЯО при помощи >Terraform.

Особенности выполнения:

  • Бюджет купона ограничен, что следует иметь в виду при проектировании >инфраструктуры и использовании ресурсов;
  • Следует использовать последнюю стабильную версию Terraform.

Предварительная подготовка к установке и запуску Kubernetes кластера.

  1. Создайте сервисный аккаунт, который будет в дальнейшем использоваться >Terraform для работы с инфраструктурой с необходимыми и достаточными правами. >Не стоит использовать права суперпользователя
  2. Подготовьте backend для Terraform:
    а. Рекомендуемый вариант: Terraform Cloud
    б. Альтернативный вариант: S3 bucket в созданном ЯО аккаунте
  3. Настройте workspaces
    а. Рекомендуемый вариант: создайте два workspace: stage и prod. В >случае выбора этого варианта все последующие шаги должны учитывать факт >существования нескольких workspace.
    б. Альтернативный вариант: используйте один workspace, назвав его stage. >Пожалуйста, не используйте workspace, создаваемый Terraform-ом по-умолчанию >(default).
  4. Создайте VPC с подсетями в разных зонах доступности.
  5. Убедитесь, что теперь вы можете выполнить команды terraform destroy и >terraform apply без дополнительных ручных действий.
  6. В случае использования Terraform Cloud в >качестве backend убедитесь, что применение изменений успешно проходит, используя >web-интерфейс Terraform cloud.

Ожидаемые результаты:

  1. Terraform сконфигурирован и создание инфраструктуры посредством Terraform >возможно без дополнительных ручных действий.
  2. Полученная конфигурация инфраструктуры является предварительной, поэтому в >ходе дальнейшего выполнения задания возможны изменения.

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

На этом этапе необходимо создать Kubernetes кластер на базе предварительно >созданной инфраструктуры. Требуется обеспечить доступ к ресурсам из >Интернета.

Это можно сделать двумя способами:

  1. Рекомендуемый вариант: самостоятельная установка Kubernetes кластера.
    а. При помощи Terraform подготовить как минимум 3 виртуальных машины >Compute Cloud для создания Kubernetes-кластера. Тип виртуальной машины >следует выбрать самостоятельно с учётом требовании к производительности и >стоимости. Если в дальнейшем поймете, что необходимо сменить тип инстанса, >используйте Terraform для внесения изменений.
    б. Подготовить ansible конфигурации, можно >воспользоваться, например Kubespray
    в. Задеплоить Kubernetes на подготовленные ранее инстансы, в случае >нехватки каких-либо ресурсов вы всегда можете создать их при помощи >Terraform.
  2. Альтернативный вариант: воспользуйтесь сервисом Yandex Managed Service >for Kubernetes
    а. С помощью terraform resource для kubernetes >создать региональный мастер kubernetes с размещением нод в разных 3 >подсетях
    б. С помощью terraform resource для kubernetes node group

Ожидаемый результат:

  1. Работоспособный Kubernetes кластер.
  2. В файле ~/.kube/config находятся данные для доступа к кластеру.
  3. Команда kubectl get pods --all-namespaces отрабатывает без ошибок.

Создание тестового приложения

Для перехода к следующему этапу необходимо подготовить тестовое приложение, >эмулирующее основное приложение разрабатываемое вашей компанией.

Способ подготовки:

  1. Рекомендуемый вариант:
    а. Создайте отдельный git репозиторий с простым nginx конфигом, который >будет отдавать статические данные.
    б. Подготовьте Dockerfile для создания образа приложения.
  2. Альтернативный вариант:
    а. Используйте любой другой код, главное, чтобы был самостоятельно создан >Dockerfile.

Ожидаемый результат:

  1. Git репозиторий с тестовым приложением и Dockerfile.
  2. Регистр с собранным docker image. В качестве регистра может быть DockerHub >или Yandex Container Registry, созданный также с помощью terraform.

Подготовка cистемы мониторинга и деплой приложения

Уже должны быть готовы конфигурации для автоматического создания облачной >инфраструктуры и поднятия Kubernetes кластера.
Теперь необходимо подготовить конфигурационные файлы для настройки нашего >Kubernetes кластера.

Цель:

  1. Задеплоить в кластер prometheus, grafana, alertmanager, >экспортер основных метрик >Kubernetes.
  2. Задеплоить тестовое приложение, например, nginx >сервер отдающий статическую страницу.

Рекомендуемый способ выполнения:

  1. Воспользовать пакетом kube-prometheus, который уже включает в себя Kubernetes >оператор для grafana, >prometheus, alertmanager и node_exporter. При желании можете собрать все эти приложения отдельно.
  2. Для организации конфигурации использовать qbec, >основанный на jsonnet. Обратите внимание на имеющиеся >функции для интеграции helm конфигов и helm charts
  3. Если на первом этапе вы не воспользовались Terraform Cloud, то задеплойте в кластер atlantis для отслеживания изменений инфраструктуры.

Альтернативный вариант:

  1. Для организации конфигурации можно использовать helm charts

Ожидаемый результат:

  1. Git репозиторий с конфигурационными файлами для настройки Kubernetes.
  2. Http доступ к web интерфейсу grafana.
  3. Дашборды в grafana отображающие состояние Kubernetes кластера.
  4. Http доступ к тестовому приложению.

Установка и настройка CI/CD

Осталось настроить ci/cd систему для автоматической сборки docker image и >деплоя приложения при изменении кода.

Цель:

  1. Автоматическая сборка docker образа при коммите в репозиторий с тестовым >приложением.
  2. Автоматический деплой нового docker образа.

Можно использовать teamcity, >jenkins либо gitlab ci

Ожидаемый результат:

  1. Интерфейс ci/cd сервиса доступен по http.
  2. При любом коммите в репозиторие с тестовым приложением происходит сборка и >отправка в регистр Docker образа.
  3. При создании тега (например, v1.0.0) происходит сборка и отправка с >соответствующим label в регистр, а также деплой соответствующего Docker образа >в кластер Kubernetes.

diplom-project's People

Contributors

alex-k-7 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.