Онлайн практикум от команды Fevlake*
*8 лет обслуживаем IT-инфраструктуры
Онлайн практикум -
практикуйтесь, когда вам удобно
вакансий со знанием k8s
крупных компаний в мире используют K8s
в топе по росту спроса
Практикум REBRAIN Kubernetes был разработан на базе агентства Fevlake
Мы подготовили программу для:
1. Установка кластера с помощью minikube / kubespray
2. Разворачивание облачного решения с помощью terraform & yandex cloud
3. Обзор kubectl & kubeconfig
4. Компоненты Control Plane
5. Разбор kubelet и переключение runtime с docker на containerd
6. Работа сети - установка calico & flannel (общие сведения, без разбора конкретного плагина)
7. Kubernetes API - api resources, groups, versions
8. Базовые ресурсы - namespaces, pod, replica set, deployment (deploy / rollback), job, cronjob, daemonset
9. Сервисы в kubernetes - cluster ip, node port, load balancer (metallb)
10. Манифесты - labels, annotations, selectors
11. Scheduling - node selectors, taints / tolerations, requests / limits, qos
12. Хранение конфигурации - Configmaps & Secrets
13. Custom Resource Definitions
14. Registry Authentication
15. Хранение персистентных данных - Persistent Volumes / PersistenVolumeClaims на примере nfs provisioner’а
16. StatefulSet - ресурс для stateful приложений
17. Ingress - обработка входящих http запросов, аутентификация, получение сертификтов с помощью letsencrypt
18. Network policies с помощью calico
19. Role Based Access Control
20. Горизонтальное и вертикальное масштабирование
21. Пакетный менеджер helm - с установкой плагина secrets для шифрования данных
22. Kube Prometheus Stack - мониторинг кластера kubernetes
23. Подключение custom metrics в Kubernetes для горизонтального масштабирования
24. Логирование - EFK стек для сбора логов с кластера
25. CI/CD в Kubernetes с шаблонами на базе Gitlab CI
До этого момента мы создавали с вами только единичные ресурсы:
- один гит репозиторий
- одна виртуальная машина
К сожалению, в реальной жизни такое случается редко. Если вы создаете виртуальную машину, то скорее всего вам будет необходимо создать DNS записи для нее, чтобы обращаться к ней по имени.
В этом и состоит реальная сила terraform: Вы можете создавать различные ресурсы и связывать их между собой. Создав виртуальную машину, вы можете использовать выданный ей ip адрес для создания dns записи в стороннем DNS провайдере. Или полученный логин/пароль от почтового рассыльщика вы можете добавить в конфигурацию вашего почтового сервера в автоматическом режиме.
- Внешние сервисы, которые Вы можете описывать в terraform
- Описание провайдера AWS
- Официальная документация по API route 53
Ruby - интерпретируемый язык программирования, на сегодняшний день достаточно популярный язык для написания backend-части приложений, причиной популярности является независимая от ОС реализация многопоточности, динамическая типизация и отличный сборщик мусора "из коробки". Для веб-разработки наиболее популярным фреймворком для языка является Ruby on Rails, реализующий архитектурный шаблон MVC - схему разделения данных приложения и управляющей логики на три глобальных компонента - модель, представление и контроллер, осуществляя модификацию каждого компонента независимо.
Наиболее популярными Version Manager'ами для языка являются RVM (Ruby Version Manager) и ChRuby. Наиболее существенными различиями менеджеров является то, что первый может быть установлен "под пользователя", а второй глобально. В языке есть встроенный package manager - gem, однако последнее время разработчики чаще используют bundler, логика работы которого очень похожа на ранее пройденные composer и npm - bundler читает специальный файл в директории проекта - Gemfile, и устанавливает необходимые зависимости, описанные в указанном файле. С помощью Bundle также можно проводить миграции, загружать тестовые данные в БД, и многое иное, однако основным преимуществом bundle является то, что с помощью него можно использовать команды выстраивая "окружение" языка - используя те пакеты, которые установил bundle. Bundle exec как бы собирает это окружение, позволяя Вам производить необходимые манипуляции с элементами приложения/инфраструктуры, используя окружение.
Так же Вам необходимо будет ознакомиться с содержимым папки config, в которой должен быть файл database.yml, в котором описываются настройки подключения к БД.
- alphacamp_blog_app
- скачать репозиторий проекта symphony/demo
- произвести установку RVM, требуемой версии Ruby, а так же Bundler
- ознакомиться с Gemfile в коде проекта
- произвести установку требуемых пакетов с помощью Bundle
- откорректировать параметры подключения к БД
- произвести миграции, загрузить тестовые данные в БД
- предоставить рабочую версию проекта, а также ssh доступ к серверу и список команд которые были выполнены для выполнения задания. (можно просто экспорт из history)
DEV 6: БД в современных приложениях и их изменение.
База данных (БД) — это организованная структура, предназначенная для хранения, изменения и обработки взаимосвязанной информации, преимущественно больших объемов. Практически все современные сервисы и/или приложения работают с базами данных. Для управления БД используют специальные системы, которые так и называються СУБД. Мы уверены что большинство из вас слышали и использовали некоторые их этих систем, такие как MySQL, MariaDB, PostgreSQL, Oracle, Microsoft SQL Server и др.
СУБД это, конечно, хорошо, но много ли можно сделать в БД "вручную"? И насколько это правильно? Как отслеживать и документировать изменения, вносимые в БД? Очень интересные и правильные вопросы, именно поэтому и были придуманы миграции для БД.
Миграция БД (также называется миграция схемы ) - это управление инкрементными, обращаемыми изменениями схем в реляционной базы данных. Миграции применяются на базе данных при необходимости обновить, изменить или применить определенную версию схемы данных к БД. Для выполнения миграций используют специальные утилиты, которые называют *schema migration tool*, они немного различны относительно своего функционала в разных языках программирования / фреймворках.
- Версионная миграция структуры базы данных
- Опыт 1440 миграций баз данных
- GO + PostgreSQL
- GO + MySQL
Вам нужно модифицировать, реализованный в предыдущем задании метод API, таким образом, чтобы он взаимодействовал c выбранной вами БД. Написать файл миграции, для добавления соответствующих таблиц с тестовыми данными в БД. Написать короткую инструкцию для запуска вашего проекта (Какая СУБД используется, как запустить миграцию, порядок запуска проекта) Проект должен быть запущен на вашем сервере, в ответе напишите ссылку для доступа к проекту Код проекта необходимо загрузить в репозиторий и прислать ссылку на него