Разделы презентаций


В production за 60 секунд

Содержание

О проектесервер онлайн-кассязык разработки - Kotlin15 сервисов~ 35 000 торговых точек(~1500-2000 RPS)Свиридов Алексейteamlead/senior java developer backend-разработкиhttps://t.me/sviridov_alexeyОб авторе

Слайды и текст этой презентации

Слайд 1В production за 60 секунд
Внедрение kubernetes для динамического создания тестовых

окружений

В production за 60 секундВнедрение kubernetes для динамического создания тестовых окружений

Слайд 2

О проекте


сервер онлайн-касс
язык разработки - Kotlin
15 сервисов
~ 35 000 торговых

точек
(~1500-2000 RPS)

Свиридов Алексей
teamlead/senior java developer backend-разработки

https://t.me/sviridov_alexey
Об авторе

О проектесервер онлайн-кассязык разработки - Kotlin15 сервисов~ 35 000 торговых точек(~1500-2000 RPS)Свиридов Алексейteamlead/senior java developer backend-разработкиhttps://t.me/sviridov_alexeyОб авторе

Слайд 3Зачем нужно создавать тестовые окружения
Проблемы динамического создания окружений существующим стеком
Использование

Kubernetes, плюсы и минусы
Установка и настройка Kubernetes
Итоги
Что обсудим?

Зачем нужно создавать тестовые окруженияПроблемы динамического создания окружений существующим стекомИспользование Kubernetes, плюсы и минусыУстановка и настройка KubernetesИтогиЧто

Слайд 4Предыдущая модель разработки

Предыдущая модель разработки

Слайд 5Проблемы
Для бизнеса
Мелкие фичи долго ждут в RC
Неудобно смотреть превью фич

ПроблемыДля бизнесаМелкие фичи долго ждут в RCНеудобно смотреть превью фич

Слайд 6Проблемы
Для QA
Неизолированное тестирование функционала
Проблемы тестирования при появлении новых изменений

ПроблемыДля QAНеизолированное тестирование функционалаПроблемы тестирования при появлении новых изменений

Слайд 7Проблемы
Для разработчиков
Конфликты при merge в staging
Несовместимость структур в автотестах
Помнить о

merge из feature-branch в staging

ПроблемыДля разработчиковКонфликты при merge в stagingНесовместимость структур в автотестахПомнить о merge из feature-branch в staging

Слайд 8Идеальная модель

Идеальная модель

Слайд 9Компромиссная модель

Компромиссная модель

Слайд 10Отдельный домен (mk-1010.dev.modulkassa.local)
Сборка сервисов из feature branch
Заменить внешние интеграции моками
Создание

изолированной инфраструктуры для сервисов
Развертывание сервисов
Удалить сервисы и инфраструктуру после

тестирования

Что нужно для тестирования feature branch

Отдельный домен (mk-1010.dev.modulkassa.local)Сборка сервисов из feature branchЗаменить внешние интеграции мокамиСоздание изолированной инфраструктуры для сервисов Развертывание сервисовУдалить сервисы

Слайд 11Сборка в docker image
Деплой ansible’ом
Несколько серверов
nginx как LB

Что имеем на

момент внедрения

Сборка в docker imageДеплой ansible’омНесколько серверовnginx как LBЧто имеем на момент внедрения

Слайд 13Как развернуть сервисы на несколько серверов
Как избежать конфликта портов на

одном сервере
Как заводить внешний трафик в окружение
Как конфигурировать окружения
Трудности создания

окружения в ansible
Как развернуть сервисы на несколько серверовКак избежать конфликта портов на одном сервереКак заводить внешний трафик в окружениеКак

Слайд 14Автоматически распределит сервисы по серверам
Namespace’ы чтобы избежать конфликта портов
Делает LB

для сервисов
Не запрещает ходить вовне
Можно задавать конфигурацию в namespace’ах
Проблемы kubernetes

на bare metal
Где хранить данные
Как заводить внешний трафик

Kubernetes

Автоматически распределит сервисы по серверамNamespace’ы чтобы избежать конфликта портовДелает LB для сервисовНе запрещает ходить вовнеМожно задавать конфигурацию

Слайд 15apt install kubelet kubeadm kubectl && kubeadm init
Сетевой plugin, маска

сети pod’ов --pod-network-cidr=10.244.0.0/16
На что обратить внимание
Отключить swap
Достаточно места на

дисках
Уникальные hostname (Ubuntu-1804-bionic-64-minimal)
kubeadm reset
Записать вывод kubeadm init для добавления серверов

Установка

apt install kubelet kubeadm kubectl && kubeadm initСетевой plugin, маска сети pod’ов --pod-network-cidr=10.244.0.0/16 На что обратить вниманиеОтключить

Слайд 16Установить сетевой plugin
Добавить в кластер сервера (kubeadm join)
Доступ извне
NodePort
MetalLB
Маршрутизация трафика

внутри кластера
Ingress (nginx, traefik, kong, envoy ...)
ambassador
Настройка

Установить сетевой pluginДобавить в кластер сервера (kubeadm join)Доступ извнеNodePortMetalLBМаршрутизация трафика внутри кластераIngress (nginx, traefik, kong, envoy ...)ambassadorНастройка

Слайд 17MetalLB

MetalLB

Слайд 18MetalLB

MetalLB

Слайд 20Ingress?

Ingress?

Слайд 21Ingress? Ambassador!

Ingress? Ambassador!

Слайд 22Запускаем трафик в кластер

Запускаем трафик в кластер

Слайд 24Отличие деплоя ansible и k8s
ansible
k8s

Отличие деплоя ansible и k8sansiblek8s

Слайд 25Удалить namespace k8s
Удалить созданные данные
Удалить домен
Удаляем окружение

Удалить namespace k8sУдалить созданные данные Удалить доменУдаляем окружение

Слайд 26Значительно сократилось количество конфликтов
Сократилось время вывода мелких фич/фиксов в production
Более

надежные результаты тестирования
Технология доступная, практические результаты достигаются очень быстро
Результаты

и выводы
Значительно сократилось количество конфликтовСократилось время вывода мелких фич/фиксов в productionБолее надежные результаты тестированияТехнология доступная, практические результаты достигаются

Слайд 27
Q&A

https://t.me/sviridov_alexey

Q&Ahttps://t.me/sviridov_alexey

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика