За время, прошедшее с момента предыдущего стабильного релиза Deckhouse, наша Kubernetes-платформа успела получить сертификацию CNCF для версий Kubernetes v1.22 и v1.23, появилась в списках adopters у Prometheus Operator, а еще — в числе пользователей Cilium. Как раз с Cilium связано и главное улучшение в новом стабильном релизе платформы — v1.33.
Cilium — ПО с открытым кодом, которое обеспечивает прозрачное и безопасное сетевое взаимодействие, а также балансировку нагрузки между контейнеризированными приложениями в кластере Kubernetes. Модуль cni-cilium теперь доступен в Deckhouse в дополнение к cni-flannel.
В статье рассмотрим возможности Cilium и расскажем о других важных улучшениях в Deckhouse v1.33.
Сеть на базе Cilium
В основе Cilium — технология eBPF. Она расширяет возможности сети для приложений, которые запускаются на базе Linux, делает ее более безопасной и наблюдаемой. eBPF реализует логику управления сетями внутри ядра операционной системы. Технология используется для организации высокопроизводительных сетей, мультикластерных и мультиоблачных инсталляций, балансировки трафика, шифрования, сетевой защиты, мониторинга.
Кроме Kubernetes, Cilium работает с managed-сервисами AWS, Google и Azure.
Продвинутые Network Policies
Cilium «из коробки» поддерживает Network Policy для управления доступом между приложениями внутри кластера. Сетевые политики работают на уровнях 3, 4 и 7 модели OSI, поэтому пользователи получают больше гибкости в управлении ingress- и egress-трафиком в кластере.
Также Cilium предоставляет управление сетевыми политиками на уровне узла (Nodes) — то, чего в Deckhouse раньше не было.
До cni-cilium для реализации сети в кластере мы применяли комбинацию двух модулей: flannel и kube-router. У них есть два критичных ограничения:
Модули работают за счет iptables. По сравнению с eBPF это более медленная технология. При большом количестве политик (от 500) возникают проблемы с производительностью сети.
Модули не поддерживают настройку политик между узлами в кластере, только между Pod’ами и сервисами.
eBPF работает гораздо быстрее, чем iptables, поэтому с помощью Cilium можно написать больше сетевых политик, в том числе для узлов.
Карта взаимодействия сервисов
Cilium также предоставляет Open Source-инструмент Hubble UI, который автоматически находит все сервисы в кластере и создает карту их взаимодействия (service map). Карта открывается в любом браузере.
Визуализация Hubble UI помогает лучше понимать взаимозависимость и поведение сервисов в кластере, быстрее выявлять и решать проблемы сетевого взаимодействия.
При включении cni-cilium в Deckhouse модуль cilium-hubble включается автоматически.
Миграция на cni-cilium
Сейчас cni-cilium можно включить вручную. Инструкция по миграции с cni-flannel скоро появится в документации Deckhouse (мы сообщим об этом в Telegram-чате Deckhouse).
В будущих релизах платформы модуль будет доступен по умолчанию для новых инсталляций. В старых всё останется по-прежнему, то есть если потребуется миграция, это можно будет сделать самостоятельно.
Новые модули в Deckhouse Community Edition
Помимо Cilium, в новом релизе Deckhouse появилось множество других улучшений, связанных с расширением функциональности платформы. Так, например, в бесплатной версии Deckhouse Community Edition появились модули, которые раньше были доступны только в платной Enterprise Edition:
extended-monitoring — содержит exporter’ы Prometheus, которые контролируют свободное место и inodes на узлах, сообщают о проблемах доступа к образам в Container Registry, собирают события в кластере Kubernetes и не только;
namespace-configurator — помогает автоматически включать новые пространства имен K8s в мониторинг через аннотации
extended-monitoring.flant.com/enabled=true
;openvpn — предоставляет доступ к ресурсам кластера посредством OpenVPN с аутентификацией по сертификатам. Также предоставляет простой web-интерфейс, через который можно выпускать и отзывать сертификаты, отменять отзыв и получать готовый пользовательский конфигурационный файл;
secret-copier — отвечает за копирование секретов во все пространства имен. Модуль избавляет от необходимости постоянно копировать в CI секреты, чтобы, например, скачать образы или заказать RBD в Ceph;
okmeter — устанавливает агент для одноименного сервиса мониторинга (требуется его лицензия).
Другие изменения и улучшения Deckhouse 1.33
Добавлена поддержка:
Kubernetes 1.23 (подробнее о новых фичах в этой версии Kubernetes — в нашем обзоре);
Ubuntu 22.04 LTS в качестве ОС узлов;
протокола UDP в модуле openvpn — в некоторых случаях это повышает скорость работы через VPN.
Еще одно важное обновление — базовый образ Alpine. В старой версии была обнаружена уязвимость OpenSSL (CVE-2022-0778). Уязвимость позволяла создать SSL-сертификат с неверными параметрами эллиптической кривой, чтобы вызвать бесконечный цикл.
P.S.
Релиз Deckhouse v1.33 переведен в канал обновлений stable вместе с выпуском версии v1.33.12.
Для знакомства с платформой Deckhouse рекомендуем раздел «Быстрый старт» (на русском и английском языках).
Полезные ссылки на ресурсы проекта:
основной GitHub-репозиторий (будем рады новым звездам!);
официальный Twitter-аккаунт (на английском);
Читайте также в нашем блоге:
Комментарии (5)
dobry-kot
06.07.2022 21:25Cilium автоматически подходит тем, у кого:
1) Большие инсталляции, которые пораждают много правил iptables
2) Кто хочет получить дополнительный обсервабилити и получать фидбек по дропам режектам со всех нод в одном месте через hubble-relay.3) кому нужно понижать летенси обработки трафика
Не подойдет тем у кого:
1) Нет ресурсов для изучения bpf (это не прогулка по парку, это тяжелое путешествие пешком по горам ) Нужно понимать азы syscall, базовое понимание С, что бы понимать как пишутся программы BPF и golang - т.к все либы Cilium написаны на нем.
2) У кого много легаси и старые ядра ОС. Точно не помню, но желательно иметь 4+ (* на каких-то 3-ках тоже работает - смотрите доку)
amarao
А чем оно лучше calico?
Macbet
они очень сильно отличаются у calico bgp под капотом у cilium eBpf
amarao
https://projectcalico.docs.tigera.io/maintenance/ebpf/enabling-ebpf
shurup
Calico — хорошее решение! Но нам нужно что-то выбирать. Идея Deckhouse не в том, чтобы собрать в одном месте все возможные реализации каких-то задач, потому что кто-то предпочитает что-то по своим причинам, а предоставить пользователям решение каждой задачи надёжным, проверенным способом, который будет закрывать необходимые потребности, всегда работать, делать это одинаково в разных кейсах (в разных облаках и т.п.), всегда поддерживаться в актуальном состоянии.
Если же «по верхам» сравнивать с Calico, то Cilium:
Технически хорош. И по своей производительности (например), и по своим фичам (observability с Hubble, крутые политики).
Был раньше и очень популярен сегодня. 12,4k vs 3,7k звёзд на GitHub, 438 vs 261 contributors и т.п.
Имеет поддержку индустрии: это выбор крупных провайдеров (AWS и GCP), это проект CNCF.
Поэтому при необходимости что-то выбрать наш выбор пал именно на него.