Kubernetes Blog опубликовал технический разбор Storage Version Migration в Kubernetes v1.37. Он объясняет перенос уже сохранённых ресурсов на актуальную версию хранения.
Storage Version Migration получила статус General Availability в Kubernetes v1.37. Встроенные API StorageVersionMigration и контроллер control plane стабильны и включены по умолчанию во всех кластерах этой версии.
Миграцию запускают созданием декларативного объекта StorageVersionMigration. Встроенный контроллер отслеживает такие объекты и автоматически переносит существующие ресурсы на версию хранения по умолчанию для этого API.
При смене версии хранения CRD старую версию API нельзя безопасно убрать, пока все ресурсы в хранилище не будут перезаписаны без неё. При настройке шифрования at rest или ротации ключей существующие ресурсы остаются незашифрованными либо зашифрованными старым ключом, пока их не перепишет Kubernetes API server.
Проверка утверждений:
- Kubernetes Blog опубликовал технический разбор Storage Version Migration в Kubernetes v1.37, объясняющий перенос уже сохранённых ресурсов на актуальную версию хранения. (подтверждено самой публикацией: доказательство; «Kubernetes v1.37: Storage Version Migration Enabled by Default»)
- Storage Version Migration получила статус General Availability в Kubernetes v1.37. (подтверждено самой публикацией: доказательство; «I am excited that storage version migration (SVM) has graduated to General Availability (GA) in Kubernetes v1.37!»)
- Встроенные StorageVersionMigration API и контроллер control plane полностью стабильны и включены по умолчанию во всех кластерах Kubernetes v1.37. (подтверждено самой публикацией: доказательство; «After a number of releases of work and testing, the built-in StorageVersionMigration API ( storagemigration.k8s.io/v1 ) and control plane controller are now fully stable and enabled by default across all v1.37 Kubernetes clusters.»)
- При смене версии хранения CRD нельзя безопасно убрать старую версию API, пока все ресурсы в хранилище не будут перезаписаны без неё. (подтверждено самой публикацией: доказательство; «You cannot safely remove v1alpha1 from the CRD’s .status.storedVersions or drop serving support until every single resource in storage has been re-written to not be serialized and stored with the alpha version.»)
- При настройке шифрования at rest или ротации ключей существующие ресурсы остаются незашифрованными либо зашифрованными старым ключом, пока их не перепишет Kubernetes API server. (подтверждено самой публикацией: доказательство; «When you configure encryption at rest or rotate encryption keys, existing resources in storage remain unencrypted (or encrypted under old keys) until they are actively re-written through the Kubernetes API server.»)
- Раньше администраторам и авторам CRD приходилось использовать ручные скрипты kubectl или внешний компонент kube-storage-version-migrator для принудительной перезаписи ресурсов. (подтверждено самой публикацией: доказательство; «Historically, cluster administrators and CRD authors had to rely on manual kubectl get / kubectl replace scripts, or to deploy the out-of-tree kube-storage-version-migrator component to force re-writes.»)
- Миграцию запускают созданием декларативного объекта StorageVersionMigration; встроенный контроллер следит за такими объектами и автоматически переносит существующие ресурсы на версию хранения по умолчанию для этого API. (подтверждено самой публикацией: доказательство; «The built-in StorageVersionMigrator controller in the Kubernetes control plane watches for these objects, and automatically migrates existing resources to the default storage version for that API.»)
- Контроллер обновляет статус объекта StorageVersionMigration по ходу миграции, а успешное завершение отмечается условием Succeeded со значением True. (подтверждено самой публикацией: доказательство; «A successful migration will report a Succeeded condition set to True:»)
- Авторы CRD могут включать или запускать миграции прямо вместе с обновлениями CRD, поскольку StorageVersionMigration является стандартным декларативным Kubernetes API. (подтверждено самой публикацией: доказательство; «Because StorageVersionMigration is a standard declarative Kubernetes API, CRD authors can bundle or trigger migrations directly alongside CRD upgrades.»)
Первоисточники:
оценка 79.8 · тип release · ревизия 1 · истории st-dk9tcr