ControllerRevision

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.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.


Операції


get отримати вказаний ControllerRevision

HTTP запит

GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}

Параметри

  • name (в шляху): string, обовʼязково

    назва ControllerRevision

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (ControllerRevision): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу ControllerRevision

HTTP-запит

GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions

Параметри

Відповідь

200 (ControllerRevisionList): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу ControllerRevision

HTTP-запит

GET /apis/apps/v1/controllerrevisions

Параметри

Відповідь

200 (ControllerRevisionList): OK

401: Unauthorized

create створення ControllerRevision

HTTP-запит

POST /apis/apps/v1/namespaces/{namespace}/controllerrevisions

Параметри

Відповідь

200 (ControllerRevision): OK

201 (ControllerRevision): Created

202 (ControllerRevision): Accepted

401: Unauthorized

update зміна вказаного ControllerRevision

HTTP-запит

PUT /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя ControllerRevision

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: ControllerRevision, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (ControllerRevision): OK

201 (ControllerRevision): Created

401: Unauthorized

patch часткове оновлення вказаного ControllerRevision

HTTP-запит

PATCH /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя ControllerRevision

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (ControllerRevision): OK

201 (ControllerRevision): Created

401: Unauthorized

delete видалення ControllerRevision

HTTP-запит

DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}

Параметри

  • name (в шляху): string, обовʼязковий

    імʼя ControllerRevision

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: DeleteOptions

  • dryRun (в запиті): string

    dryRun

  • gracePeriodSeconds (в запиті): integer

    gracePeriodSeconds

  • pretty (в запиті): string

    pretty

  • propagationPolicy (в запиті): string

    propagationPolicy

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection видалення колекції ControllerRevision

HTTP-запит

DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

Змінено September 06, 2024 at 4:29 PM PST: upstream sync (b8cab2cff8)