Витая в облаках

21 июля 2022
Витая в облаках

Больше облаков, хороших и разных — наверное так бы звучала знаменитая фраза из стихотворения Маяковского, живи он в наше время. Но для DevOps-инженера повышенная «облачность» — повод внимательно следить за тем, насколько стабильно работает инфраструктура. Об этом наш июльский дайджест.

Мистические облака

Гибридной и мультиоблачной инфраструктурой уже никого не удивить. Но один вопрос часто остаётся открытым — управление гетерогенными частями из единой точки. Что если эти части принадлежат разным провайдерам? Нужна некая платформа, позволяющая абстрагировать целые части инфраструктуры.

Изобретать велосипед не потребуется, такая система уже создана и прекрасно работает. Представляем Mist Community Edition — self-hosted платформу с открытым исходным кодом. Это очень удобная панель управления, где можно аккумулировать все ваши ресурсы, управлять ими и вести подсчёт стоимости. Важно, что Mist даёт возможность ручного управления, автоматизации и создания гибких политик доступа.

Платформа будет полезна не только администраторам инфраструктуры, но и финансовым менеджерам. Помимо прогнозирования расходов, есть вариант оповещать о превышении запланированных трат. Отдельно отметим опцию отслеживания зомби-инстансов.

Step by step

Наверное, все DevOps-инженеры слышали о Kyverno. Этот движок управления политиками был создан специально под Kubernetes. В его арсенале есть генерация, проверка и запланированное изменение конфигураций. При этом нет необходимости в изучении новых языков или работы с новым ПО. Kyverno основан на штатных утилитах, таких как kubectl, kustomize и Git.

За последние пару лет Kyverno, первоначально принятый в «песочницу» CNCF (Cloud Native Computing Foundation), значительно изменился. Аж на 856% увеличилось количество коммиттеров, а также в 5 раз увеличилось количество звёздочек на Github. Суммарно было выпущено более 100 релизов и теперь проект получил новый уровень зрелости. Дальнейшее развитие будет идти в рамках созданного CNCF «инкубатора».

Любой проект, который был принят в этот «инкубатор» считается стабильным и рекомендуемым для использования в production. Kyverno встал на путь, по которому уже прошли такие именитые проекты, как:

  • kubernetes,
  • containerd,
  • etcd,
  • envoy,
  • prometheus,
  • coredns,
  • harbor,
  • helm и другие.

Надеемся, что это событие и активность сообщества позволят добавить в Kyverno много крутых фич, не потеряв при этом качества кода.

Исследуя 10K кластеров K8s

Повсеместное использование Kubernetes создаёт уникальную возможность узнать, как он применяется на практике, какие сложности возникают. Разработчики утилиты Kubescape провели исследование 10 000 кластеров Kubernetes на проблемы безопасности. Результаты превзошли ожидания, но в плохом смысле. 

Оказалось, что ни один из кластеров не был полностью безопасен. 65% кластеров имели как минимум 1 серьёзную проблему, требующую внимания. Половина кластеров содержала 14 и более неработающих элементов безопасности.

Вот ключевые выявленные проблемы:

  1. Избыточные права при запуске контейнеров. Это опасно, поскольку может вызвать утечку данных с хоста.
  2. Привязка пользователей с ролью администратора. Наличие таких пользователей создает угрозу безопасности. Их уровень доступа позволяет выполнять любые действия с любыми ресурсами.
  3. Некорректная настройка политик безопасности. Рабочие нагрузки без соответствующих ограничений подвергают риску всю систему.
  4. Использование изменяемой файловой системы. Если злоумышленник может создавать файлы или изменять приложения, то это потенциальная уязвимость.
  5. Недостаточная фильтрация Ingress и Egress. Проблемные кластеры выполняли рабочие нагрузки без соответствующей настройки фильтрации.

Несмотря на то, что компании постоянно повышают компетенции, проблемы безопасности остаются. Чем более тщательное внимание уделяется защите облачных приложений, тем меньше шанс на возникновение проблем в работе сервисов. 

Создание универсальной конфигурации

Когда нужно раскатать приложение на разных облаках, поневоле задумываешься о том, как разбираться с различиями в конфигурации. Как учесть все нюансы, присущие разным cloud-провайдерам и технологиям? Вокруг этой идеи стремления к единообразию был построен проект Pulumi.

Чтобы сгенерировать универсальную конфигурацию, подготовку приходится начинать на этапе создания приложения. Описывается такая конфигурация в файле Pulumi.yaml. Подключение библиотек Pulumi позволяет создавать заготовку конфигурации непосредственно внутри приложения, словно конструктор. 

Поддержка разных runtime сильно упрощает задачу описания конфигурации. Используя высокоуровневые компоненты библиотек, есть возможность обеспечить работу на разных облаках непосредственно через код.

Если же существующих провайдеров недостаточно, то можно создать собственный вариант. Подход отчасти напоминает Terraform через управление внешними ресурсами. Но при этом можно оставаться в рамках того языка, который привычен для разработчика. 

Стоит отметить, что этот проект подойдёт не всем. Использование императивного подхода к конфигурированию окружений требует знания специфичных языков разработки и иных приёмов код-ревью. Это добавляет дополнительные точки отказа и сложность в понимании инфраструктуры. 

Более подробно почему именно в нашей компании мы не используем этот инструмент, можно посмотреть в выступлениях нашего CTO Александра Кириллова.

Интересно посмотреть

Поговорим про методы развертывания инфраструктуры и приложений. Если вам кажется, что разворачивать Kubernetes через Kubernetes — это отличная идея, то мы с вами согласимся.

Мы уже много лет разворачиваем для наших разработчиков инфраструктуру по деплою кода с помощью git. Кроме обзора доступных нам в 2022 году инструментов, наш CTO Александр Кириллов рассказывает о поддержке GitOps-инфраструктуры с помощью инструментов GitOps и работе с Cluster API и Crossplane. Если вы ещё не знаете, как избавиться от Terraform или Ansible при развертывании кластера для нового проекта, то этот доклад точно будет вам полезен.

За всё время существования Evrone мы узнали об удалённой работе практически всё и готовы поделиться опытом. Например, как можно по репозиторию команды увидеть формирование «островов знаний» или формального отношения к code review. Делимся знаниями о том, как диагностировать и решать проблемы с разработчиками, которые работают на другом конце земного шара.

Конкурсы для разработчиков

Онлайн

DevOps Quiz

до 26 августа 2022

Предлагаем проверить себя в нашем новом квизе по DevOps-практикам. Внутри 7 общих вопросов, и только один правильный вариант ответа для каждого. Чтобы выйти в финал следует допустить не более одной ошибки.

Среди всех, набравших не менее 6 правильных ответов мы разыграем приз — Яндекс Станцию. Счастливчика определит генератор случайных чисел в прямом эфире на нашем Youtube.

Принять участие

Митапы

Онлайн

DevOps Meetup

19:00 - Online

Рады сообщить, что осенью у нас запланирован отличный DevOps Meetup. Программа мероприятия пока что формируется, но регистрация уже открыта. Детальная информация будет опубликована позже, так что следите за наши новостями.

Если у вас есть идея доклада и вы хотите стать спикером, то пишите на почту andy@evrone.com.

Для тех, кто пропустил наш предыдущий DevOps Meetup, мы выложили видео докладов в открытый доступ. Вы узнаете, как Avito управляет инфраструктурой, а также, как Газпромбанк повышает эффективность использования облаков. 

Подписывайтесь на наш Youtube-канал и жмите на колокольчик, чтобы не пропустить выход новых видеороликов.

Регистрация

Вакансии

Удаленка / Офис

Evrone 

Мы открыты для новых DevOps-инженеров. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.