alekfed

a

DevOps

Общий опыт: 2 года

Мой опыт в области DevOps сосредоточен вокруг нужд компании, занимающейся разработкой платформы для интеграции с маркетплейсами Ozon, Wilberries, Tmall, Яндекс.Маркет и Goods.

Kubernetes

Изначально инфраструктура компании базировалась на Docker Compose / Docker Swarm , но в определённый момент появились основания для перевода её на Kubernetes. Есть опыт разворачивания кластеров с использованием Kubespray и K3s .

С появлением кластера у нас возник ряд проблем, в частности, с локальной разработкой. Я пробовал организовать её на основе локальных миникластеров ( kind , minikube ) с утилитами вроде Tilt и Skaffold , но, в итоге, по ряду причин вернулся к Compose.

В то же время, упаковка приложений в Helm-чарты в некоторой степени упростила управление ими в облаке. Для решения вопроса воспроизводимости конфигурации кластера на уровне приложений я пробовал Helmfile и провайдером Helm к Terraform , и остановился на последнем.

CI/CD

В области CI/CD мой опыт ограничен GitLab и Drone . На каждый проект, который предополагалось использовать в production, был настроен пайплайн, включающий в себя прогон кода через линтеры и запуск всех тестов, сборку нового Docker-образа приложения и разворачивание этого образа на staging и, в дальнейшем, на production серверах. Для хранения образов использовался встроенный реестр GitLab. Dockerfile’ы оптимизировались для сборки production образа.

Drone я заинтересовался, когда обнаружил, что GitLab’овские воркеры могут без проблем выжирать по 10Гб ОЗУ на один воркер. Но в какой-то момент появилась возможность дёшево перенести GitLab на отдельный сервер с кучей ОЗУ, так что вариант с Drone утратил актуальность.

FaaS

Возможность иметь сервер FaaS-сервис в собственном кластере открывает интересные архитектурные возможности. OpenFaaS оказался отличным вариантом, под который довольно просто писать функции. Правда, локально (без кластера) он разворачивается через раз, но внутренний сервер для разработки решил вопрос.

Nix

Другая интересная идея, которой я занимаюсь последнее время — декларативно-конфигурируемые дистрибутивы Linux для использования их в качестве базовых систем, которые не (так) страшно обновлять. К таковым, на сегодняшний день, серьёзно можно отнести только NixOS (не Guix ). Я поддерживаю конфигурацию своей системы в репозитории , но было бы интересно попробовать эту систему для более масштабных задач.

(см. также раздел по Linux в системном администрировании )


Иллюстрация



email icon telegram icon github icon