---
api_metadata:
apiVersion: "apps/v1"
import: "k8s.io/api/apps/v1"
kind: "ControllerRevision"
content_type: "api_reference"
description: "ControllerRevision 实现了状态数据的不可变快照。"
title: "ControllerRevision"
weight: 7
---
`apiVersion: apps/v1`
`import "k8s.io/api/apps/v1"`
## ControllerRevision {#ControllerRevision}
ControllerRevision 实现了状态数据的不可变快照。
客户端负责序列化和反序列化对象,包含对象内部状态。
成功创建 ControllerRevision 后,将无法对其进行更新。
API 服务器将无法成功验证所有尝试改变 data 字段的请求。
但是,可以删除 ControllerRevisions。
请注意,由于 DaemonSet 和 StatefulSet 控制器都使用它来进行更新和回滚,所以这个对象是 Beta 版。
但是,它可能会在未来版本中更改名称和表示形式,客户不应依赖其稳定性。
它主要供控制器内部使用。
- **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 作为其类型。
你还需要注册你的各个插件类型。
// 内部包:
```go
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.Object `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
```
// 外部包:
```go
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"`
MyPlugin runtime.RawExtension `json:"myPlugin"`
}
type PluginA struct {
AOption string `json:"aOption"`
}
```
// 在网络上,JSON 看起来像这样:
```json
{
"kind":"MyAPIObject",
"apiVersion":"v1",
"myPlugin": {
"kind":"PluginA",
"aOption":"foo",
},
}
```
那么会发生什么?
解码首先使用 json 或 yaml 将序列化数据解组到你的外部 MyAPIObject 中。
这会导致原始 JSON 被存储下来,但不会被解包。
下一步是复制(使用 pkg/conversion)到内部结构中。
runtime 包的 DefaultScheme 安装了转换函数,它将解析存储在 RawExtension 中的 JSON,
将其转换为正确的对象类型,并将其存储在 Object 中。
(TODO:如果对象是未知类型,将创建并存储一个 `runtime.Unknown`对象。)
## ControllerRevisionList {#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 的列表
## 操作 {#Operations}
### `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
#### 参数
- **namespace** (**路径参数**):string,必需
}}">namespace
- **allowWatchBookmarks** (**查询参数**): boolean
}}">allowWatchBookmarks
- **continue** (**查询参数**):string
}}">continue
- **fieldSelector** (**查询参数**):string
}}">fieldSelector
- **labelSelector** (**查询参数**):string
}}">labelSelector
- **limit** (**查询参数**)): integer
}}">limit
- **pretty** (**查询参数**):string
}}">pretty
- **resourceVersion** (**查询参数**):string
}}">resourceVersion
- **resourceVersionMatch** (**查询参数**):string
}}">resourceVersionMatch
- **sendInitialEvents** (**查询参数**): boolean
}}">sendInitialEvents
- **timeoutSeconds** (**查询参数**): integer
}}">timeoutSeconds
- **watch** (**查询参数**): boolean
}}">watch
#### 响应
200 (}}">ControllerRevisionList): OK
401: Unauthorized
### `list` 列出或监视 ControllerRevision 类别的对象
#### HTTP 请求
GET /apis/apps/v1/controllerrevisions
#### 参数
- **allowWatchBookmarks** (**查询参数**): boolean
}}">allowWatchBookmarks
- **continue** (**查询参数**):string
}}">continue
- **fieldSelector** (**查询参数**):string
}}">fieldSelector
- **labelSelector** (**查询参数**):string
}}">labelSelector
- **limit** (**查询参数**): integer
}}">limit
- **pretty** (**查询参数**):string
}}">pretty
- **resourceVersion** (**查询参数**):string
}}">resourceVersion
- **resourceVersionMatch** (**查询参数**):string
}}">resourceVersionMatch
- **sendInitialEvents** (**查询参数**): boolean
}}">sendInitialEvents
- **timeoutSeconds** (**查询参数**): integer
}}">timeoutSeconds
- **watch** (**查询参数**): boolean
}}">watch
#### 响应
200 (}}">ControllerRevisionList): OK
401: Unauthorized
### `create` 创建一个 ControllerRevision
#### HTTP 请求
POST /apis/apps/v1/namespaces/{namespace}/controllerrevisions
#### 参数
- **namespace** (**路径参数**):string,必需
}}">namespace
- **body**: }}">ControllerRevision,必需
- **dryRun** (**查询参数**):string
}}">dryRun
- **fieldManager** (**查询参数**):string
}}">fieldManager
- **fieldValidation** (**查询参数**):string
}}">fieldValidation
- **pretty** (**查询参数**):string
}}">pretty
#### 响应
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
#### 参数
- **namespace** (**路径参数**):string,必需
}}">namespace
- **body**: }}">DeleteOptions
- **continue** (**查询参数**):string
}}">continue
- **dryRun** (**查询参数**):string
}}">dryRun
- **fieldSelector** (**查询参数**):string
}}">fieldSelector
- **gracePeriodSeconds** (**查询参数**): integer
}}">gracePeriodSeconds
- **labelSelector** (**查询参数**):string
}}">labelSelector
- **limit** (**查询参数**): integer
}}">limit
- **pretty** (**查询参数**):string
}}">pretty
- **propagationPolicy** (**查询参数**):string
}}">propagationPolicy
- **resourceVersion** (**查询参数**):string
}}">resourceVersion
- **resourceVersionMatch** (**查询参数**):string
}}">resourceVersionMatch
- **sendInitialEvents** (**查询参数**): boolean
}}">sendInitialEvents
- **timeoutSeconds** (**查询参数**): integer
}}">timeoutSeconds
#### 响应
200 (}}">Status): OK
401: Unauthorized