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

Содержание

Слайд 2

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

Свиридов Алексей
teamlead/senior

java developer backend-разработки
https://t.me/sviridov_alexey

Об авторе

Слайд 3

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

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

Что обсудим?

Слайд 4

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

Слайд 5

Проблемы

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

Слайд 6

Проблемы

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

Слайд 7

Проблемы

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

в staging

Слайд 8

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

Слайд 9

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

Слайд 10

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

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

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

Слайд 11

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

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

Слайд 13

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

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

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

Слайд 14

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

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

Kubernetes

Слайд 15

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)
Доступ извне
NodePort
MetalLB
Маршрутизация трафика внутри кластера
Ingress (nginx,

traefik, kong, envoy ...)
ambassador

Настройка

Слайд 21

Ingress? Ambassador!

Слайд 22

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

Слайд 24

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

ansible

k8s

Слайд 25

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

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

Слайд 26

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

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

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

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