github deckhouse/deckhouse v1.24.0
Deckhouse v1.24.0

latest releases: v1.63.10, v1.64.0, v1.63.9...
3 years ago

En

All Deckhouse components will be restarted during the update

Switch Docker registry from registry.flant.com to registry.deckhouse.io. This is a necessary step for the public release of Deckhouse. The source code is published on GitHub. Your applications running in the cluster won’t be affected during the update.
The most crucial components that can affect your developer teams:

  • API server
  • Kube-controller-manager
  • Kube-scheduler
  • Grafana
  • Prometheus
  • Dashboard
  • Dex
  • OpenVPN
  • Ingress nginx

Significant changes

Kubernetes patch update

Update Kubernetes 1.19.10 to 1.19.13.

Update Kubernetes 1.20.6 to 1.20.9.

Update Kubernetes 1.21.0 to 1.21.3.

Use base images for all components

A limited number of the base images is used to build final images. If a third-party image must be used, a binary from this image is copied to the base image. Previously, a third-party image was copied to the Deckhouse registry and used as is. Alpine is used to run almost all applications in clusters.

Online resize for vSphere Volumes

Migrating from FCD (First Class Disk) to CNS (Cloud Native Storage) volume types. CNS volume types support online resize, and vSphere API that provides CNS is much more stable.

Nginx Ingress Controller improvements

Use Deployment for LoadBalancer and LoadBalancerWithProxyProtocol ingress controller inlets. This allows autoscaling of ingress controllers. There is a minimum of two pods running on every frontend node that receives incoming traffic. It prevents cloud load balancers from updating targets during ingress controllers roll out.

Fix the problem with 503 errors during the rollout of HostWithFailover controllers.

New module log-shipper

This module allows to aggregate and to push logs from cluster to Elasticsearch, Loki, or Logstash. The management of storage itself (Elasticsearch or Loki) is out of the scope of this module.

Update Prometheus to 2.28.0

The new version has the latest features and consumes less memory during startup.

Autoconverge base infrastructure

Base infrastructure is created during the bootstrap process of the Cloud cluster. This infrastructure is allowed to be changed only by dhctl itself. Terraform state is periodically checked for changes introduced not through dhctl, and if such a change is detected – terraform is reapplied, but only if the change is safe. Safe change is assumed to be any change that allows the in-place updates to be done. If there are unsafe changes, there will be an alert from the cluster.

Stable v1 API versions

All stable CustomResources are released under the v1 version (1, 2).

Other changes

[node-manager]

  • Enhancement: Set containerd desired version to 1.4.6. Fixes CVE-2021-30465. It was decided not to force containerd updates on all nodes because an attacker should have access to Kubernetes API to exploit the vulnerability. An attacker must be able to create multiple containers with a fairly specific mount configuration. All new nodes will have version 1.4.6.
  • Enhancement: Rename nodeType in v1 NodeGroup API. Previously there were Cloud and Hybrid nodes. It was confusing as there was also the term Hybrid for ClusterType. To solve this ambiguity new types were introduced: CloudEphemeral (for NodeGroups that are used by machine controller manager), CloudPermanent (for NodeGroups that are created by the dhctl), and CloudStatic (for NodeGroups that can be used to bootstrap nodes that are manually created in a cloud provider).
  • Refactoring: Fix machine controller manager race condition.
    The first virtual machine in NodeGroup sometimes was created with outdated settings after the InstanceClass update. This could have been leading to potential problems of cluster stability.

[cloud-provider-openstack]

  • Enhancement: Add option to disable topology feature flag in csi-provisioner.

[cloud-provider-yandex]

  • Enhancement: Simplify bootstrap process for the WithNATInstance layout. It also fixes routing issues for virtual machines with the additional network interface.

[descheduler]

  • Enhancement: Update descheduler to 0.21.0.
  • Enhancement: Add HighNodeUtilization strategy.
  • Enhancement: Run as Deployment.

[user-authn]

  • Enhancement: Use in-cluster address to access an OIDC provider.

Other internal changes

  • Enhancement: Split the code into CE/EE/FE editions.
  • Refactoring: New module flant-integration combines prometheus-madison-integration and flant-pricing modules.
  • Enhancement: First step of in-cluster DNS refactoring.
  • Refactoring: Fix custom resource definitions to be fully compatible with Kubernetes API style guide.
  • Refactoring: Update dhctl configuration structs to use the v1 API version.
  • Enhancement: Switch to werf 1.2.
  • Enhancement: Bump trickster version to v1.1.5.
  • Fix: Move http challenge solver image to one from the Deckhouse registry in cert-manager module.
  • Improvements in the dhctl 1, 2.
  • Fix the control-plane/scheduler probe correctness in upmeter module.
  • Deferred object patcher.
  • Enhancement: Migrate ingress-nginx, node-manager, cert-manager, monitoring-ping, prometheus-pushgateway, monitoring-applications, control-plane-manager and other modules hooks from bash to go.
  • Refactoring: Build internal documentation according to an edition type (CE/EE/FE).
  • Fix: Prevent kubelet from binding to 0.0.0.0.
  • Enhancement: Remove k8s bundles API. This completes bashible-api-server refactoring.

Ru

Все компоненты Deckhouse будут перезапущены во время обновления

Переход с Docker registry registry.flant.com на registry.deckhouse.io. Это обязательный шаг для публичного релиза Deckhouse. Исходный код опубликован на GitHub. Ваши приложения, запущенные в кластере, не будут затронуты во время обновления.
Ключевые компоненты, которые могут сказаться на работе команды разработки:

  • API server
  • Kube-controller-manager
  • Kube-scheduler
  • Grafana
  • Prometheus
  • Dashboard
  • Dex
  • OpenVPN
  • Ingress nginx

Значительные изменения

Обновление patch версии Kubernetes

Обновление Kubernetes с 1.19.10 до 1.19.13.

Обновление Kubernetes с 1.20.6 до 1.20.9.

Обновление Kubernetes с 1.21.0 до 1.21.3.

Использование базовых образов для всех компонентов

Ограниченное количество базовых образов используется для сборки конечных образов. Если необходимо использовать сторонний образ, то бинарный файл из этого образа копируется в базовый образ. Раннее сторонние образа копировались в Deckhouse registry и использовались в исходном виде. Для запуска практически всех приложений в кластере используется Alpine.

Изменение размера дисков без отмонтирования для vSphere Volumes

Миграция типов дисков с FCD (First Class Disk) на CNS (Cloud Native Storage). Тип диска CNS поддерживает изменение размера на лету, и vSphere API, который предоставляет CNS, гораздо более стабильный.

Улучшения Nginx Ingress Controller

Использование Deployment для LoadBalancer и LoadBalancerWithProxyProtocol инлетов ingress controller’a. Это даёт возможность автоскейлинга ingress controller’ов. Минимум два пода запущены на каждом обсуживающем входящий трафик frontend узле. Это позволяет избежать обновления списка целевых узлов на облачных балансировщиках нагрузки при перекате ingress controller’ов.

Исправлена проблема с получением 503 ошибок во время переката ingress controller’ов при использовании инлета HostWithFailover.

Новый модуль log-shipper

Этот модуль позволяет агрегировать и отправлять логи из кластера в Elasticsearch, Loki или Logstash. Управление самим хранилищем (Elasticsearch или Loki) не входит в задачи этого модуля.

Обновление Prometheus до 2.28.0

В новой версии содержится большое количество нового функционала и значительно снижено потребление памяти во время запуска.

Автоматическое приведение базовой инфраструктуры к ожидаемому состоянию

Базовая инфраструктура создаётся в процессе создания кластера в облаке с помощью dhctl. В дальнейшем эту инфраструктуру разрешено менять только при использования самого dhctl. Состояние Terraform’a периодически проверяется на предмет внесения внешних изменений. Если такие изменения обнаружены, то terraform выполняется заново, но только если эти изменения являются безопасными. Изменения считаются безопасными, если они выполняются без пересоздания объектов в облаке. Если обнаружены небезопасные изменения, то в кластере появится алерт.

Стабильная версия v1 API

Все стабильные CustomResource выпущены с версией v1 (1, 2).

Другие изменения

[node-manager]

  • Улучшение: Желаемая версия сontainerd изменена на 1.4.6. Это исправляет CVE-2021-30465. Было принято решение не обновлять принудительно сontainerd на всех узлах, так как атакующий должен иметь доступ к Kubernetes API для использования данной уязвимости. Атакующий должен создать множество контейнеров с достаточно специфической конфигурацией точек монтирования. Все новые узлы будут с сontainerd версии 1.4.6.
  • Улучшение: Переименованы nodeType в v1 NodeGroup API. Ранее были Cloud и Hybrid типы узлов. Это приводило к недопонимаю, потому что также существует тип кластера Hybrid. Для разрешения этой неоднозначности были добавлены новые типы узлов: CloudEphemeral (для NodeGroup, которые используются machine controller manager’ом), CloudPermanent (для NodeGroup, которые создаются с помощью dhctl), и CloudStatic (для NodeGroup, которые используются для добавления в кластер узлов, созданных вручную в облачном провайдере).
  • Рефакторинг: Исправлено состояние гонки в machine controller manager’e.
    Первая виртуальная машина в NodeGroup`е иногда создавалась с устаревшими настройками после обновления InstanceClass’а. Это могло приводить к потенциальным проблемам со стабильностью работы кластера.

[cloud-provider-openstack]

  • Улучшение: Добавлена опция, которая позволяет отключить функционал учитывающий топологию облака в csi-provisioner`e при заказе дисков.

[cloud-provider-yandex]

  • Улучшение: Упрощён процесс создания кластера при использовании схемы размещения WithNATInstance. Также исправлены проблемы с маршрутизацией на виртуальных машинах при использовании дополнительного сетевого интерфейса.

[descheduler]

[user-authn]

  • Улучшение: Использование внутрикластерного адреса для доступа к OIDC провайдеру.

Другие внутренние изменения

Don't miss a new deckhouse release

NewReleases is sending notifications on new releases.