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
kubernetes: kube-apiserver