- Главная
- →
- DevOps и эксплуатация
Лучшие практики CI/CD с Kubernetes и GitLab DevOps и эксплуатация
Сооснователь компании «Флант» и соавтор продуктов Deckhouse. Уже 20 лет с Linux и больше 16 — в эксплуатации highload-проектов. Понимает Docker, Kubernetes и отлично ориентируется в облачных платформах. Придумал werf, okmeter, pam_docker, nginx-http-rdns, loghouse и grafana-statusmap. Программирует на C, С++, PHP, Python и Bash. Читает на Go. Любит людей, но так и не научился их готовить.
Тезисы
Весь этот год мы в компании «Флант» активно переводили на Kubernetes проекты заказчиков, сильно различающихся как по масштабам, так и по технологиям. На данный момент (сентябрь 2017) у нас в Kubernetes (в production) функционируют 13 проектов, в состав которых входят более 130 различных приложений, написанных на 8 языках программирования: .NET, Erlang, Go, Java, Node.js, PHP, Python и Ruby. В этих проектах задействовано множество инфраструктурных компонентов, таких как Cassandra, Ceph, Firebird, Memcached, MongoDB, MySQL, NATS.io, NGINX, PostgreSQL, RabbitMQ, Redis, RethinkDB, Sphinx, SQLite и других. Мы поделимся обширным опытом, полученным в результате выстраивания CI/CD для таких приложений.
Почему мы выбрали именно Kubernetes как основную платформу, я уже рассказывал в докладе «Наш опыт с Kubernetes в небольших проектах» на РИТ++2017 (http://rootconf.ru/2017/abstracts/2701). Новый доклад посвящен подготовке самих приложений, а также паттернам CI/CD с Kubernetes. Основные вопросы, которых коснется доклад:
- К каким конфигурациям кластера Kubernetes (для разработки и для production) мы пришли и почему?
- Какие дополнительные компоненты в Kubernetes мы считаем необходимыми (Ingress, kube-lego, Dashboard, Prometheus)?
- Почему мы используем именно GitLab и где храним Docker-образы?
- Как правильно готовить приложения для жизни в Immutable infrastructure и какие ошибки часто встречаются?
- Почему описание инфраструктуры (правила сборки Docker-образов и манифесты для Kubernetes) обязательно должны лежать вместе с исходными кодами приложения?
- Как удобнее всего сделать review apps? Как оптимально разворачивать дампы, загружать сиды и выполнять миграции? Какие трудности возникают с построением review apps в приложениях с микросервисной архитектурой?
- Какие возможности Kubernetes может дать для запуска тестов (от юнит до end-to-end) и как их оптимально использовать?