27 марта, Москва | Deckhouse Conf 2025 — первая техническая конференция от команды Deckhouse. Зарегистрироваться

Обновления DKP Certified Security Edition

DKP CSE v1.64

Описание обновления

Основные изменения

  • Добавлен альтернативный способ управления сетью в кластере. Новый модуль cni-cilium, как и старый модуль cni-flannel, настраивает сетевую инфраструктуру в кластере и управляет ею. Новый модуль обеспечивает большую производительность (за счет использования eBPF) и дает возможность применять сетевые политики.
  • Добавлен кэширующий DNS-сервер. Новый модуль node-local-dns запускает на каждом узле кластера DNS-сервер, который ускоряет работу DNS.
  • Добавлен L2/BGP-балансировщик трафика. Новый модуль metallb дает возможность настроить балансировку TCP-трафика на узлы кластера, когда нет возможности использовать внешний балансировщик.
  • Добавлена функция изоляции проблемных узлов — fencing. Она позволяет кластеру быстрее реагировать на недоступность узла, снизить риск сбоя и потери данных, особенно в приложениях с сохранением состояния (Stateful-приложениях). При потере узлом связи с API-севером в течение минуты все поды узла удаляются, а сам узел удаляется из кластера. Функция настраивается в NodeGroup в секции параметров spec.fencing.
  • Режим высокой доступности для Deckhouse. В кластерах с более чем одним master-узлом ядро DKP работает по умолчанию в нескольких репликах. Режимом высокой доступности можно управлять глобально или на уровне модуля (параметр highAvailability).
  • Добавлена возможность автоматического вертикального масштабирования приложений. Новый модуль vertical-pod-autoscaler позволяет не выставлять точные параметры требуемых ресурсов в манифестах приложений, а вычислять их автоматически на основе данных модулей мониторинга.
  • Добавлена поддержка работы с хранилищами Ceph и NFS. Также добавлена возможность создания снимков состояния томов хранения данных Ceph и NFS (снапшотов) декларативным способом, с помощью ресурсов VolumeSnapshot. Функция, например, облегчает работы по резервному копированию или клонированию томов данных Ceph и NFS.
  • Добавлена функциональность работы с проектами (новый модуль multitenancy-manager). Проект описывается ресурсами ProjectTemplate (шаблон проекта) и Project (экземпляр проекта). В модуле предлагаются три преднастроенных шаблона проекта: «базовый», «безопасный» и «безопасный, с выделенными узлами». Подробнее об использовании проектов можно узнать в документации.
  • Добавлен агрегирующий прокси для метрик мониторинга (на базе promxy и mimir). Агрегирующий прокси позволяет использовать один источник данных в системе мониторинга, объединяя данные от всех реплик Prometheus.
  • Добавлен механизм декларативного управления статическими узлами. Реализующий эту функцию провайдер Cluster API Provider Static (CAPS) использует объекты StaticInstance, SSHCredentials и секцию параметров spec.staticInstances в объекте NodeGroup, чтобы настраивать сервер узла и подключить его к кластеру. Также провайдер CAPS отвечает за очистку сервера узла после отключения узла из кластера Kubernetes. Помимо этого, существует возможность перевода узлов под управление провайдера CAPS. Для этого нужно в соответствующем объекте StaticInstance установить аннотацию static.node.deckhouse.io/skip-bootstrap-phase: ""
  • Добавлена поддержка NGINX Ingress Controller 1.10 (возможна несовместимость директив на уровне configuration-snippet) и HTTP/3.
  • Добавлена возможность просмотра веб-версии документации DKP внутри кластера (модуль documentation).
  • Добавлена возможность реализации отказоустойчивого egress gateway. Для настройки используются ресурсы EgressGateway и EgressGatewayPolicy. Ресурс EgressGateway позволяет назначить группу узлов в качестве шлюзов для внешних запросов. Среди этих узлов выбирается активный, который и обрабатывает внешние запросы. Ресурс EgressGatewayPolicy используется для перенаправления внешних запросов приложений через настроенные шлюзы (доступно только при использовании модуля cni-cilium).
  • Добавлена возможность расширения планировщика внешними плагинами через вебхуки (ресурс KubeSchedulerWebhookConfiguration). Позволяет, например, настроить размещение подов приложений хранилища данных ближе к самим данным, использовать приоритет при выборе узла в зависимости от его состояния (сетевой нагрузки, состояния подсистемы хранения) и т. д.
  • Конфигурацию инсталлятора DKP можно разбивать на любое количество файлов, указывая их через множественное использование параметра --config. Инсталлятор сам определит нужный порядок применения ресурсов. 
  • Дополнены предварительные проверки установщика, которые до начала установки сообщают о потенциальных проблемах установки DKP, таких как корректность данных подключения к container registry, наличие подключения по SSH и т. п.
  • Добавлены метрики мониторинга по группам узлов.
  • Добавлена возможность отправлять журналы приложений через сокет TCP или UDP. Возможные форматы сообщений: текст, JSON, CEF, Syslog.
  • На активный под контроллера DKP (d8-system/deckhouse) добавлена метка лидера (leader=true). Это позволяет удобнее выполнять команды в поде DKP, независимо от того, работает ли он в режиме высокой доступности или нет. Например: kubectl -n d8-system -l app=deckhouse,leader=true -c deckhouse logs
  • Пользователям запрещено создание пространств имён с префиксом d8- и kube-. Такие системные пространства имён может создавать только сам DKP.
  • В модуле runtime-audit-engine добавлена возможность управлять настройками VPA (параметр resourcesRequests). Порт хука валидации изменился с 9680 на 4227. Возможно, это потребует обновления правил firewall, если трафик к master-узлам кластера фильтруется. Появилась возможность отправлять логи в Graylog — добавлена поддержка кодека GELF (параметр spec.socket.encoding.codec)
  • Добавлена возможность скачивания утилиты Deckhouse CLI внутри кластера (новый модуль deckhouse-tools). Утилита Deckhouse CLI предназначена для более удобной работы с кластерами Deckhouse Kubernetes Platform в терминале.
  • Добавлена валидация полей электронной почты и пароля пользователя при его создании — эти поля обязательны к заполнению.
  • Добавлена возможность разрешать использование в конкретных пространствах имён только конкретных классов Ingress-контроллера (IngressClass) и конкретных классов хранения (StorageClass). Для этого нужно указать список классов Ingress-контроллера (параметр policies.ingressClassNames) и классов хранения (параметр policies.storageClassNames) в операционной политике кластера.

Безопасность

  • Общий рефакторинг процесса сборки.
  • Использование distroless-образов следующими модулями и компонентами: cni-cilium, ebpf_exporter, memcached (Prometheus).
  • Добавлена возможность управления разрешением на запуск подов с автоматическим монтированием токена сервисного аккаунта (параметр automountServiceAccountToken) в политике безопасности.
  • Используются более строгие права для файлов и папок конфигурации кластера и файлов и папок, создаваемых Deckhouse.

Обратите внимание

  • Изменился диапазон портов, используемый компонентами DKP. Теперь управлять сетевыми политиками проще, так как большинство портов входит в диапазон 4200–4299. Актуальный список используемых портов и информацию об их назначении можно найти в документации.
  • Все компоненты DKP будут перезапущены в процессе обновления на новую версию.

Новые модули и компоненты

Подсистема «Кластер Kubernetes»

Модуль node-manager. Компоненты:

  • CAPI controller manager
  • CAPS controller manager
  • Fencing agent
  • d8
  • Yq

Модуль kube-dns. Компонент:

  • Sts pods hosts appender webhook

Модуль cni-cilium. Компоненты:

  • Agent
  • Safe agent updater
  • Egress gateway agent
  • CNI cilium operator

Модуль node-local-dns. Компоненты:

  • Node local DNS
  • Stale DNS connections cleaner

Модуль metallb. Компоненты:

  • Controller
  • Speaker

Модуль registry-packages-proxy. Компонент:

  • Registry packages proxy

Подсистема Deckhouse 

Модуль documentation. Компонент:

  • documentation

Подсистема «Мониторинг»

Модуль monitoring-kubernetes:

  • EBPF exporter

Модуль operator-prometheus:

  • Удалён компонент Prometheus config reloader.

Модуль prometheus:

  • Alerts receiver
  • Memcached
  • Aggregation proxy

Подсистема «Масштабирование и управление ресурсами»

Модуль vertical-pod-autoscaler. Компоненты:

  • Admission controller
  • Recommender
  • Updater

Подсистема «Безопасность»

В модуле operator-trivy. Компоненты:

  • Trivy server
  • Report updater

Удалён компонент:

  • Scan vulnerability report

В модуле admission-policy-engine. Компонент:

  • Trivy provider

В модуле user-authn. Компоненты:

  • Dex authenticator
  • Kubeconfig generator

Модуль multitenancy-manager. Компонент:

  • Multitenancy manager

Модуль runtime-audit-engine. Компонент:

  • K8s-metacollector

Подсистема «Хранение данных»

Модуль snapshot-controller. Компоненты:

  • Snapshot controller
  • Snapshot validation webhook

Модуль csi-ceph. Компоненты:

  • Сontroller
  • Webhooks
  • CSI Controller CephFS
  • CSI Controller RBD
  • CSI Node CephFS
  • CSI Node RBD

Модуль csi-nfs. Компоненты:

  • Сontroller
  • Webhooks
  • CSI controller NFS
  • CSI node NFS
Закрытые уязвимости
CVE
Описание
Критичность
компонент
Регрессия авторизации с нулевой длиной
CRITICAL
Регулярное выражение с неэффективной сложностью вычислений позволяет проводить атаку ReDoS (Regular Expression Denial of Service)
HIGH
Произвольное выполнение команд через локальный файл конфигурации git
HIGH
Удалённое выполнение кода через функции загрузки в модуле package_index
HIGH
Уязвимость обхода путей в Grafana Loki
MEDIUM
Уязвимость повышения привилегий в библиотеке Azure Identity
MEDIUM
Заголовок запроса proxy-authorization не удаляется при междоменных перенаправлениях
MEDIUM
Неправильные разрешения на журналах Windows контейнеров
MEDIUM

kubernetes: kubelet

URL может записывать конфиденциальную информацию в файл журнала
MEDIUM
Обход политики монтируемых секретов, установленной плагином ServiceAccount admission
LOW

kubernetes: kube-apiserver

Удаление корневых сертификатов от GLOBALTRUST из корневого хранилища
LOW

Мы используем файлы cookie, чтобы сделать работу с сайтом удобнее.
Подробнее — в политике обработки персональных данных и политике использования файлов «cookie».