apiVersion: apps/v1
import "k8s.io/api/apps/v1"
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 — це ресурс, що містить список обʼєктів 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
get отримати вказаний ControllerRevisionGET /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (в шляху): string, обовʼязково
назва ControllerRevision
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
200 (ControllerRevision): OK
401: Unauthorized
list перелік або перегляд обʼєктів типу ControllerRevisionGET /apis/apps/v1/namespaces/{namespace}/controllerrevisions
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
200 (ControllerRevisionList): OK
401: Unauthorized
list перелік або перегляд обʼєктів типу ControllerRevisionGET /apis/apps/v1/controllerrevisions
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
200 (ControllerRevisionList): OK
401: Unauthorized
create створення ControllerRevisionPOST /apis/apps/v1/namespaces/{namespace}/controllerrevisions
namespace (в шляху): string, обовʼязково
body: ControllerRevision, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
200 (ControllerRevision): OK
201 (ControllerRevision): Created
202 (ControllerRevision): Accepted
401: Unauthorized
update зміна вказаного ControllerRevisionPUT /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (в шляху): string, обовʼязково
імʼя ControllerRevision
namespace (в шляху): string, обовʼязково
body: ControllerRevision, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
200 (ControllerRevision): OK
201 (ControllerRevision): Created
401: Unauthorized
patch часткове оновлення вказаного ControllerRevisionPATCH /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (в шляху): string, обовʼязково
імʼя ControllerRevision
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
200 (ControllerRevision): OK
201 (ControllerRevision): Created
401: Unauthorized
delete видалення ControllerRevisionDELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
name (в шляху): string, обовʼязковий
імʼя ControllerRevision
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection видалення колекції ControllerRevisionDELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
200 (Status): OK
401: Unauthorized