Внедрение Kubernetes для динамического создания тестовых окружений презентация

Содержание

Слайд 2

О проекте сервер онлайн-касс язык разработки - Kotlin 15 сервисов

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

RPS)

Свиридов Алексей
teamlead/senior java developer backend-разработки
https://t.me/sviridov_alexey

Об авторе

Слайд 3

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

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

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

Что обсудим?

Слайд 4

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

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

Слайд 5

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

Проблемы

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

Слайд 6

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

Проблемы

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

Слайд 7

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

Проблемы

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

из feature-branch в staging
Слайд 8

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

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

Слайд 9

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

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

Слайд 10

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

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

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

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

Слайд 11

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

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

Что имеем на момент

внедрения
Слайд 12

Слайд 13

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

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

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

Трудности создания окружения в ansible

Слайд 14

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

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

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

Kubernetes

Слайд 15

apt install kubelet kubeadm kubectl && kubeadm init Сетевой plugin,

apt 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 для добавления серверов

Установка

Слайд 16

Установить сетевой plugin Добавить в кластер сервера (kubeadm join) Доступ

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

кластера
Ingress (nginx, traefik, kong, envoy ...)
ambassador

Настройка

Слайд 17

MetalLB

MetalLB

Слайд 18

MetalLB

MetalLB

Слайд 19

Слайд 20

Ingress?

Ingress?

Слайд 21

Ingress? Ambassador!

Ingress? Ambassador!

Слайд 22

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

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

Слайд 23

Слайд 24

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

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

ansible

k8s

Слайд 25

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

Удалить namespace k8s
Удалить созданные данные
Удалить домен

Удаляем окружение

Слайд 26

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

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

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

Результаты и выводы

Имя файла: Внедрение-Kubernetes-для-динамического-создания-тестовых-окружений.pptx
Количество просмотров: 62
Количество скачиваний: 0