ControllerRevision
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
ControllerRevision
ControllerRevision реализует неизменяемый снимок данных состояния. Клиенты несут ответственность за сериализацию и десериализацию объектов, содержащих их внутреннее состояние. После успешного создания ControllerRevision его нельзя обновить. API Server отклонит все запросы, пытающиеся изменить поле Data. Однако ControllerRevision можно удалить. Обратите внимание, что из-за использования контроллерами DaemonSet и StatefulSet для обновления и отката этот объект находится в бета-версии. Однако в будущих выпусках он может быть изменен по имени и представлению, и клиенты не должны полагаться на его стабильность. Он предназначен в первую очередь для внутреннего использования контроллерами.
-
apiVersion: apps/v1
-
kind: ControllerRevision
-
metadata (ObjectMeta)
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
revision (int64), необходимо
Revision указывает ревизию состояния, представленного в поле Data.
-
data (RawExtension)
Data — это сериализованное представление состояния.
*RawExtension используется для хранения расширений во внешних версиях.
Чтобы использовать это, создайте поле, которое имеет RawExtension в качестве типа в вашей внешней, версионированной структуре, и Object в вашей внутренней структуре. Вам также необходимо зарегистрировать различные типы плагинов.
// Внутренний пакет: type MyAPIObject struct { runtime.TypeMeta
json:",inline"MyPlugin runtime.Objectjson:"myPlugin"} type PluginA struct { AOption stringjson:"aOption"}// Внешний пакет: type MyAPIObject struct { runtime.TypeMeta
json:",inline"MyPlugin runtime.RawExtensionjson:"myPlugin"} type PluginA struct { AOption stringjson:"aOption"}// В сети JSON будет выглядеть примерно так: { "kind":"MyAPIObject", "apiVersion":"v1", "myPlugin": { "kind":"PluginA", "aOption":"foo", }, }
Что происходит? Сначала decode использует json или yaml для распаковки сериализованных данных в ваш внешний MyAPIObject. Это приводит к тому, что необработанный JSON сохраняется, но не распаковывается. Следующий шаг — копирование (с помощью pkg/conversion) во внутреннюю структуру. В пакете runtime установлен DefaultScheme с функциями преобразования, которые распакуют JSON, хранящийся в RawExtension, преобразуя его в правильный тип объекта и сохраняя его в Object. (TODO: В случае, если тип объекта неизвестен, будет создан и сохранен объект runtime.Unknown.)*
ControllerRevisionList
ControllerRevisionList — это ресурс, содержащий список объектов ControllerRevision.
-
apiVersion: apps/v1
-
kind: ControllerRevisionList
-
metadata (ListMeta)
Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]ControllerRevision), необходимо
Items — это список ControllerRevisions
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-24.docs.kubernetes.io/docs/reference/kubernetes-api/workload-resources/controller-revision-v1/