Релизы
Релизом считается любая опубликованная версия платформы Deckhouse Kubernetes Platform (DKP). Каждый релиз распространяется по каналам обновлений с указанными задержками. DKP публикует два вида релизов:
- патч-версия (например, c
0.0.1
на0.0.2
) — исправление ошибок, выпускается по мере необходимости; - минорная версия (например, c
0.0.1
на0.1.0
) — добавление новой функции, выпускается каждые 3-4 недели.
Каналы обновлений
Актуальная информация о версиях DKP на разных каналах обновлений доступна на сайте releases.deckhouse.ru.
Deckhouse Kubernetes Platform использует пять каналов обновлений, обеспечивающих поэтапное развертывание новых версий. Каждая новая версия DKP сначала публикуется в канале Alpha и постепенно продвигается к Rock Solid. Обновления из менее стабильных каналов доступны небольшому числу пользователей, что позволяет выявлять и устранять потенциальные проблемы до того, как они повлияют на production-среды.
- Rock Solid — наиболее стабильный канал обновлений. Подойдет для кластеров, которым необходимо обеспечить повышенный уровень стабильности. Обновления публикуются не ранее чем через 30 дней после выхода релиза.
- Stable — стабильный канал для кластеров в эксплуатации. Обновления публикуются не ранее чем через 14 дней после выхода релиза.
- Early Access — рекомендуемый канал обновлений, если вы не уверены в выборе. Подойдет для активно развивающихся кластеров (запускаются, дорабатываются новые приложения и т. п.). Обновления публикуются не ранее чем через 7 дней после выхода релиза.
- Beta – ориентирован на кластеры разработки, как и канал обновлений Alpha. Получает версии, предварительно опробованные на канале обновлений Alpha.
- Alpha – наименее стабильный канал обновлений с наиболее частым появлением новых версий. Ориентирован на кластеры разработки с небольшим количеством разработчиков. Версии появляются сразу после выхода релиза.
Процесс переключения на более стабильный канал
При переключении на более стабильный канал (например, с Alpha
на EarlyAccess
):
- DKP загружает данные о релизах из канала
EarlyAccess
. - Сравнивает их с данными из существующих в кластере кастомных ресурсов DeckhouseRelease.
- Если в кластере есть более поздние релизы со статусом
Pending
(ещё не применены), они будут удалены, поскольку они ещё не были опубликованы на новом канале. - Если более поздние релизы уже перешли в статус
Deployed
(успешно установлены), переход на новый релиз произойдёт не сразу. DKP останется на текущем релизе до тех пор, пока на каналеEarlyAccess
не выйдет более поздняя версия, которую можно будет установить.
- Если в кластере есть более поздние релизы со статусом
Процесс переключения на менее стабильный канал
При переключении на менее стабильный канал (например, с EarlyAccess
на Alpha
):
- DKP скачивает данные о релизах из канала
Alpha
. - Сравнивает их с данными из существующих в кластере кастомных ресурсов DeckhouseRelease.
- Выполняет обновление в соответствии с настроенными параметрами обновления.
Обновление control plane
В Deckhouse Kubernetes Platform (DKP) процесс обновления control plane максимально автоматизирован и безопасен как для single-master-, так и для multi-master-кластеров. При этом могут возникать кратковременные перерывы в доступности API-сервера, однако на работу приложений внутри кластера обновление control plane не влияет. Дополнительное окно для регламентных работ, как правило, не требуется.
В DKP поддерживаются последние пять минорных версий Kubernetes. Полный список актуальных версий доступен в соответствующей таблице.
Обновление патч-версий
Обновление patch-версий компонентов control plane (в рамках одной минорной версии, например, с 1.27.3
на 1.27.5
) происходит автоматически вместе с обновлением версии Deckhouse. Пользователь не может управлять установкой patch-версий вручную — процесс полностью автоматизирован внутри платформы.
Автоматическое обновление минорных версий
Для автоматического обновления минорной версии control plane (например, с 1.28.*
на 1.30.*
) укажите kubernetesVersion: Automatic
в ресурсе ClusterConfiguration. Будет выбрана минорная версия Kubernetes, используемая в DKP по умолчанию на момент обновления.
Ручное обновление минорных версий
Для ручного обновления минорной версии control plane (например, с 1.28.*
до 1.30.*
), укажите нужную версию в параметре kubernetesVersion
ресурса ClusterConfiguration. Например: kubernetesVersion: 1.30
.
d8 platform edit cluster-configuration
Команда запускает обновление до минорной версии Kubernetes, используемой в DKP по умолчанию на момент обновления. Чтобы отследить ход обновления, ориентируйтесь на версию Kubernetes, указанную в выводе команды описания узлов:
d8 k get nodes
Процесс обновления компонентов control plane
- Модуль
control-plane-manager
вносит изменения в манифесты основных компонентов (apiserver
,controller-manager
,scheduler
и др.). - Обновлённые компоненты разворачиваются на всех master-узлах.
При обновлении до новой минорной версии (upgrade):
- Если нужно поднять версию сразу на несколько минорных релизов (например, с
1.28
до1.30
), обновление происходит поэтапно: с1.28
до1.29
и затем с1.29
до1.30
. - На каждом этапе сначала обновляется control plane, а затем выполняется обновление kubelet на узлах.
При откате до предыдущей версии (downgrade):
- Гарантируется успешный откат только на одну минорную версию назад от максимальной версии, когда-либо использовавшейся в кластере.
- Откат происходит в обратном порядке. Сначала откатываются компоненты kubelet на узлах, затем — компоненты control plane.
После обновления control plane начинается обновление узлов кластера:
- Bashible API Server меняет версию kubelet в скриптах для всех групп узлов (NodeGroup).
- Обновление узлов в разных NodeGroup идёт параллельно, однако внутри каждой NodeGroup узлы обновляются последовательно, по одному.
- Для каждой NodeGroup учитываются её настройки:
- ручной или автоматический режим обновления;
- наличие окон обновлений;
- требуется ли удалять поды с узла перед обновлением и др.
- Выбирается один (или несколько) узлов-кандидатов, удовлетворяющих всем условиям обновления, после чего выполняется их обновление.
- Процесс повторяется, пока не обновятся все узлы во всех группах.
- Когда обновлены все узлы во всех группах, процесс обновления завершается.
Получение истории изменений (changelog)
При каждом выпуске новой версии Deckhouse Kubernetes Platform (DKP) формируется changelog — подробный список изменений, включающий новые возможности, исправления ошибок, обновления компонентов, а также важные замечания по совместимости.
Changelog для конкретной версии DKP можно найти в общем списке релизов проекта Deckhouse на GitHub.
Сводная информация о ключевых изменениях, обновлениях версий компонентов, а также о том, какие компоненты в кластере будут перезапущены в процессе обновления, доступна в описании нулевой патч-версии релиза: пример для релиза DKP v1.68.
Содержимое changelog
Changelog содержит четыре раздела:
- Know before update (важно знать перед обновлением) — важная информация, которую необходимо учесть перед обновлением. Включает сведения о требованиях к совместимости, необходимых действиях перед обновлением и возможных последствиях для кластера.
- Features (новые возможности) — описание ключевых улучшений и новых функций, добавленных в релизе.
- Fixes (исправления) — описание незначительных изменений, обновлений безопасности или улучшения производительности.
- Chore (сервисные изменения) — перечисление технических изменений, которые включают обновления зависимостей, рефакторинг, исправления в процессах сборки и тестирования, а также устранение уязвимостей.
Минорные версии и нулевая патч-версия
Вся ключевая информация о крупных изменениях добавляется в нулевую патч-версию релиза (например, v1.68.0
для релиза v1.68
). Перед обновлением до новой минорной версии (например, v1.68
):
- Изучите changelog соответствующей версии.
- Проверьте, затрагивают ли изменения вашу инфраструктуру.
- При необходимости внести корректировки в конфигурацию кластера.
Проверка зависимостей при обновлении
Перед применением нового релиза Deckhouse Kubernetes Platform проверяет состояние кластера. При обнаружении одной из следующих несовместимостей, процесс обновления прерывается:
- Неподдерживаемая версия Kubernetes.
- При включённом режиме
kubernetesVersion: Automatic
обновление останавливается, если:- в релизе изменена рекомендуемая версия Kubernetes;
- включен мониторинг;
- в кластере присутствуют ресурсы, объявленные как deprecated в новой версии.
- Установленная версия Ingress-контроллера не поддерживается новым релизом.
- На узлах присутствуют устаревшие или неподдерживаемые операционные системы.
- В кластере включён модуль, объявленный
deprecated
или удалённый в новом релизе.