- Главная
- →
- DevOps и эксплуатация
Лучшие практики CI/CD с Kubernetes и GitLab DevOps и эксплуатация
Технический директор и соучредитель компании «Флант». 17 лет с Linux, 14 лет в эксплуатации, включая поддержку более 50 highload-проектов. Программирует на C, PHP, Python и Bash. Любит С++. Читает на Go. Понимает Docker и Kubernetes. Архитектор и соавтор nginx-http-rdns, pam_docker, werf, deckhouse и okmeter.
Тезисы
Весь этот год мы в компании «Флант» активно переводили на 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) и как их оптимально использовать?