Successfully reported this slideshow.

DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разработки программного обеспечения с Kubernetes

0

Share

1 of 24
1 of 24

DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разработки программного обеспечения с Kubernetes

0

Share

Много внимания уделяется реализации CI/CD процессов и всем уже понятно насколько это важно для успешного развития проектов, насколько это ускоряет процесс разработки и упрощает коммуникацию, но есть часть процесса разработки которая часто остается в тени :) . Это настройка окружения в котором работают разработчики и тестировщики локально. Не редко это только документ с рекомендациями … В моем докладе я постараюсь показать существующие проблемы и предложить пути их решения.

Много внимания уделяется реализации CI/CD процессов и всем уже понятно насколько это важно для успешного развития проектов, насколько это ускоряет процесс разработки и упрощает коммуникацию, но есть часть процесса разработки которая часто остается в тени :) . Это настройка окружения в котором работают разработчики и тестировщики локально. Не редко это только документ с рекомендациями … В моем докладе я постараюсь показать существующие проблемы и предложить пути их решения.

More Related Content

Similar to DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разработки программного обеспечения с Kubernetes

More from DevOps_Fest

Related Audiobooks

Free with a 30 day trial from Scribd

See all

DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разработки программного обеспечения с Kubernetes

  1. 1. Continuous Delivery. Continuous DevOps. KYIV, 2020 Локально распределенное окружение разработки программного обеспечения + kubernetes
  2. 2. Continuous Delivery. Continuous DevOps. KYIV, 2020 Погорелов Сергей, Software Developer 20+ лет опыта эксплуатации и разработки разных систем с использованием разных технологий :) С 2014 года в роли Python Developer и DevOps.
  3. 3. Continuous Delivery. Continuous DevOps. KYIV, 2020 Локально окружение разработки 1. Это то с чем работают все каждый рабочий день 2. должно быть удобно и понятно всем 3. очень разные задачи …. фронт, бек, дизайн, тестирование … 4. Должно постоянно развиваться, невозможно заморозить состояние 5. Весь стек приложения в одном окружении но не каждому нужно все 6. …...
  4. 4. Continuous Delivery. Continuous DevOps. KYIV, 2020 Database Back Front nginx Database Back Front nginx local Database Back Front nginx dev nginx prod Front Front Back Back CI/CD Database
  5. 5. Continuous Delivery. Continuous DevOps. KYIV, 2020 nginx Database Back Front dev | staging | prod CI/CD
  6. 6. Continuous Delivery. Continuous DevOps. KYIV, 2020 ● локальное окружение не приспособлено для распределенной работы ● локальное окружение как правило "не секьюрно" ● Синхронизация через “всем скачать новую версию” ● Часто оно очень сильно отличается от тестовых серверов в облаке или датацентре ● Нет универсальных решений для построения локального окружения разработчика проблемы
  7. 7. Continuous Delivery. Continuous DevOps. KYIV, 2020 локальное окружение не приспособлено для распределенной работы У меня на компе все работает … а у меня нет … ну я буду в офисе там встретимся и проверим … а когда ? …. Сколько времени нужно для начала работы над проектом от 30 минут до 2+х недель?
  8. 8. Continuous Delivery. Continuous DevOps. KYIV, 2020 nginx Database Back Front logs monitoring
  9. 9. Continuous Delivery. Continuous DevOps. KYIV, 2020 Локальное окружение как правило "не секьюрно" ….. есть такой сервис который по токену и у него нет тестовой версии а без него проект не стартует ….. а это .env файлик с токенами который в гит нельзя но мы всем его по почте разошлем ….. ну все ж NDA подписали и диски мы шифруем ….
  10. 10. Continuous Delivery. Continuous DevOps. KYIV, 2020 правила, обучение … не знаю что лучше решает проблему идеально когда нет ничего что можно потерять но это не реально
  11. 11. Continuous Delivery. Continuous DevOps. KYIV, 2020 Синхронизация через “всем скачать новую версию” ….. я обновил образ с библиотеками и теперь всем нужно его скачать :) я это вчера (или неделю назад) ночью написал в общий канал ….. в мастере обновили конфиги всем нужно “смерджить” ….. в почте новый файл с токенами и ключами
  12. 12. Continuous Delivery. Continuous DevOps. KYIV, 2020 nginx Database Back Front logs monitoring local cloud parameter storage
  13. 13. Continuous Delivery. Continuous DevOps. KYIV, 2020 сильно отличается от тестовых серверов в облаке или датацентре DNS CDN Load Balancerstatic Load Balancer App server 1 App server N Database worker 1 worker N Queue Database Read Repl error logger etc nginx Database Back Front
  14. 14. Continuous Delivery. Continuous DevOps. KYIV, 2020 Нет универсальных решений для построения локального окружения разработчика На самом деле есть и довольно много: draft.sh skaffold.dev garden.io microk8s.io okteto.com
  15. 15. Continuous Delivery. Continuous DevOps. KYIV, 2020 VPC or data center Private Subnet Developer Device logs monitoring database nginx Database Back Front VPN .. Proxy .. etc
  16. 16. Continuous Delivery. Continuous DevOps. KYIV, 2020 Тоже самое, но с использованием современных инструментов
  17. 17. Continuous Delivery. Continuous DevOps. KYIV, 2020 WireGuard server
  18. 18. Continuous Delivery. Continuous DevOps. KYIV, 2020 WireGuard client
  19. 19. Continuous Delivery. Continuous DevOps. KYIV, 2020 install k3s demo
  20. 20. Continuous Delivery. Continuous DevOps. KYIV, 2020 add dev node demo
  21. 21. Continuous Delivery. Continuous DevOps. KYIV, 2020 cloud local k8s node local OS minio (kv object store compatible with Amazon S3) python Flask app - DaemonSet локально - код проекта localhost:5000
  22. 22. Continuous Delivery. Continuous DevOps. KYIV, 2020 ● локальное окружение не приспособлено для распределенной работы ● локальное окружение как правило "не секьюрно" ● Синхронизация через “всем скачать новую версию” ● Часто оно очень сильно отличается от тестовых серверов в облаке или датацентре ● Нет универсальных решений для построения локального окружения разработчика проблемы
  23. 23. Continuous Delivery. Continuous DevOps. KYIV, 2020 VPC 2 Device 1 Device 2 WireGuard VPN Device 3 VPC 1 k3s agent + Port Forwarding k3s master node k3s node k3s agent k3s node key value etc... DaemonSet + volume WSL 2 VM k3s agent ... something ...
  24. 24. Continuous Delivery. Continuous DevOps. KYIV, 2020 links ● github : https://github.com/DDEFramework/DevOpsFestDemo ● k3s : https://k3s.io/ ● k3sup : https://github.com/alexellis/k3sup ● Kilo : https://github.com/squat/kilo ● WireGuard : https://www.wireguard.com/

Editor's Notes

  • рассказать о программе 20 сек

    и сама программа
    1 типичный путь проекта 2 рассмотрим проблемы и стандартный путь решения по каждой
    3 почему локальное окружение это сложно и индивидуально
    4 хорошее проверенное решение

    5 видео
    1 установка впн сервер + клтент 2 кластер мастер нода
    3 подключаем дев ноду и запускаем проект
    6 рассматриваем что получилось … можно вернутся к слайду 16
    7 схема с использованием кубернетис и ее достоинства

    развитие проекта от прототипа локально до выхода в клауд/прод локальный конфиг, потом добавляем nginx или аналог как прокси, потом пишем конфигурацию для дев серверов и клауда и у нас появляется много вариантов конфигурации :) , потом внедряем CI|CD тулзу и темплейты конфигурации которая подставляет нужные переменные для разных окружений в темплейты и вообще все становится очень красиво . nginx в данном случае эт ореверс прокси скорее
  • все красиво все довольны :) но что осталось на машинах разработчиков ? …. очень часто там то что и было … разные вариации локально установленных средств разработки или окружение в контейнерах которое ситуативно использует сервисы из dev окружения. В особо сложных случаях вообще нельзя проверить работу без деплоя в dev окружение что конечно не так уж и плохо но занимает время переключится быстрее
  • то что не помешает так это логирование и мониторинг … мы можем сделать это достаточно легко и лучше б это было где то в облаке и с фильтром по разработчикам … это первый шаг в решении проблемы с распределенной работой
  • если кто то не тот кто должен получит доступ к локальному окружению …. то что он там найдет ?
    шифрование диска поможет не всегда
  • второй шаг не так очевиден …. но он влияет сразу на 2 пункта из списка проблем: синхронизация и секьюрити это кстати может помочь нам внедрять и дебажить CI/CD или же можно использовать storage из CI …. хотя …. это сильно зависит от того что использовать можно проверять при старте что у нас там изменилось и сделать параметры отвечающие за версию контейнера с библиотеками например …. тогда если что то критическое было обновлено то я увижу предупреждение на страте и не потрачу время на работу с устаревшим окружением также можно шифровать значения … не хранить их на локальном диске и добавить OTP .. много что можно :)
  • в итоге что то можно проверить только на стейдже или проде ….. например как сообщения об ошибках и мониторинг будет выглядеть … но это ж мало кто видит так что и так ок :) у кого есть централизованный мониторинг и логирование ошибок для локальной разработки ? а отдельно от Dev и с фильтрацией по разработчикам ?

  • и это не все … и они очень хороши, быстро развиваются …. но это все нужно учить и возможно менять структуру и разработчиков потом учить, и все равно хочется проще гибче. Главное что мы можем тт заметить это то что они основаны на кубернетис. Возможно можно сделать все более общим путем …
  • это классическое решение проблемы которое достаточно давно и широко применяется … к сожалению обычно не на старте проекта
  • kubernetes k3s k3sup WireGuard
  • Container Network Interface k3s k3sup kilo
  • ×