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.
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
отримати вказаний ControllerRevision
HTTP запит
GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
Параметри
name (в шляху): string, обовʼязково
назва ControllerRevision
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ControllerRevision): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ControllerRevision
HTTP-запит
GET /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
перелік або перегляд обʼєктів типу ControllerRevision
HTTP-запит
GET /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
створення ControllerRevision
HTTP-запит
POST /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
зміна вказаного ControllerRevision
HTTP-запит
PUT /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
часткове оновлення вказаного ControllerRevision
HTTP-запит
PATCH /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
видалення ControllerRevision
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
Параметри
name (в шляху): string, обовʼязковий
імʼя ControllerRevision
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ControllerRevision
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions
Параметри
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized