Spec-Zone.ru › Kubernetes 1.27

ControllerRevision

ControllerRevision реализует неизменяемый снимок данных состояния.

apiVersion: apps/v1

import "k8s.io/api/apps/v1"

ControllerRevision

ControllerRevision реализует неизменяемый снимок данных состояния. Клиенты отвечают за сериализацию и десериализацию объектов, содержащих их внутреннее состояние. После успешного создания ControllerRevision, его нельзя обновить. API-сервер будет отклонять все запросы, пытающиеся изменить поле 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.Object json:"myPlugin" }

    type PluginA struct { AOption string json:"aOption" }

    // Внешний пакет:

    type MyAPIObject struct { runtime.TypeMeta json:",inline" MyPlugin runtime.RawExtension json:"myPlugin" }

    type PluginA struct { AOption string json:"aOption" }

    // В сети JSON будет выглядеть примерно так:

    { "kind":"MyAPIObject", "apiVersion":"v1", "myPlugin": { "kind":"PluginA", "aOption":"foo", }, }

    Что происходит? Сначала декодирование использует 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 — список ControllerRevision

© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-25.docs.kubernetes.io/docs/reference/kubernetes-api/workload-resources/controller-revision-v1/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API