Text file
src/github.com/openshift/api/config/v1/0000_00_cluster-version-operator_01_clusterversion.crd.yaml
1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 api-approved.openshift.io: https://github.com/openshift/api/pull/495
6 include.release.openshift.io/self-managed-high-availability: "true"
7 include.release.openshift.io/single-node-developer: "true"
8 name: clusterversions.config.openshift.io
9spec:
10 group: config.openshift.io
11 names:
12 kind: ClusterVersion
13 plural: clusterversions
14 singular: clusterversion
15 scope: Cluster
16 versions:
17 - additionalPrinterColumns:
18 - jsonPath: .status.history[?(@.state=="Completed")].version
19 name: Version
20 type: string
21 - jsonPath: .status.conditions[?(@.type=="Available")].status
22 name: Available
23 type: string
24 - jsonPath: .status.conditions[?(@.type=="Progressing")].status
25 name: Progressing
26 type: string
27 - jsonPath: .status.conditions[?(@.type=="Progressing")].lastTransitionTime
28 name: Since
29 type: date
30 - jsonPath: .status.conditions[?(@.type=="Progressing")].message
31 name: Status
32 type: string
33 name: v1
34 schema:
35 openAPIV3Schema:
36 description: "ClusterVersion is the configuration for the ClusterVersionOperator. This is where parameters related to automatic updates can be set. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
37 type: object
38 required:
39 - spec
40 properties:
41 apiVersion:
42 description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
43 type: string
44 kind:
45 description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
46 type: string
47 metadata:
48 type: object
49 spec:
50 description: spec is the desired state of the cluster version - the operator will work to ensure that the desired version is applied to the cluster.
51 type: object
52 required:
53 - clusterID
54 properties:
55 capabilities:
56 description: capabilities configures the installation of optional, core cluster components. A null value here is identical to an empty object; see the child properties for default semantics.
57 type: object
58 properties:
59 additionalEnabledCapabilities:
60 description: additionalEnabledCapabilities extends the set of managed capabilities beyond the baseline defined in baselineCapabilitySet. The default is an empty set.
61 type: array
62 items:
63 description: ClusterVersionCapability enumerates optional, core cluster components.
64 type: string
65 enum:
66 - openshift-samples
67 - baremetal
68 - marketplace
69 - Console
70 - Insights
71 - Storage
72 - CSISnapshot
73 - NodeTuning
74 x-kubernetes-list-type: atomic
75 baselineCapabilitySet:
76 description: baselineCapabilitySet selects an initial set of optional capabilities to enable, which can be extended via additionalEnabledCapabilities. If unset, the cluster will choose a default, and the default may change over time. The current default is vCurrent.
77 type: string
78 enum:
79 - None
80 - v4.11
81 - v4.12
82 - v4.13
83 - vCurrent
84 channel:
85 description: channel is an identifier for explicitly requesting that a non-default set of updates be applied to this cluster. The default channel will be contain stable updates that are appropriate for production clusters.
86 type: string
87 clusterID:
88 description: clusterID uniquely identifies this cluster. This is expected to be an RFC4122 UUID value (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx in hexadecimal values). This is a required field.
89 type: string
90 desiredUpdate:
91 description: "desiredUpdate is an optional field that indicates the desired value of the cluster version. Setting this value will trigger an upgrade (if the current version does not match the desired version). The set of recommended update values is listed as part of available updates in status, and setting values outside that range may cause the upgrade to fail. \n Some of the fields are inter-related with restrictions and meanings described here. 1. image is specified, version is specified, architecture is specified. API validation error. 2. image is specified, version is specified, architecture is not specified. You should not do this. version is silently ignored and image is used. 3. image is specified, version is not specified, architecture is specified. API validation error. 4. image is specified, version is not specified, architecture is not specified. image is used. 5. image is not specified, version is specified, architecture is specified. version and desired architecture are used to select an image. 6. image is not specified, version is specified, architecture is not specified. version and current architecture are used to select an image. 7. image is not specified, version is not specified, architecture is specified. API validation error. 8. image is not specified, version is not specified, architecture is not specified. API validation error. \n If an upgrade fails the operator will halt and report status about the failing component. Setting the desired update value back to the previous version will cause a rollback to be attempted. Not all rollbacks will succeed."
92 type: object
93 properties:
94 architecture:
95 description: architecture is an optional field that indicates the desired value of the cluster architecture. In this context cluster architecture means either a single architecture or a multi architecture. architecture can only be set to Multi thereby only allowing updates from single to multi architecture. If architecture is set, image cannot be set and version must be set. Valid values are 'Multi' and empty.
96 type: string
97 enum:
98 - Multi
99 - ""
100 force:
101 description: force allows an administrator to update to an image that has failed verification or upgradeable checks. This option should only be used when the authenticity of the provided image has been verified out of band because the provided image will run with full administrative access to the cluster. Do not use this flag with images that comes from unknown or potentially malicious sources.
102 type: boolean
103 image:
104 description: image is a container image location that contains the update. image should be used when the desired version does not exist in availableUpdates or history. When image is set, version is ignored. When image is set, version should be empty. When image is set, architecture cannot be specified.
105 type: string
106 version:
107 description: version is a semantic version identifying the update version. version is ignored if image is specified and required if architecture is specified.
108 type: string
109 x-kubernetes-validations:
110 - rule: 'has(self.architecture) && has(self.image) ? (self.architecture == '''' || self.image == '''') : true'
111 message: cannot set both Architecture and Image
112 - rule: 'has(self.architecture) && self.architecture != '''' ? self.version != '''' : true'
113 message: Version must be set if Architecture is set
114 overrides:
115 description: overrides is list of overides for components that are managed by cluster version operator. Marking a component unmanaged will prevent the operator from creating or updating the object.
116 type: array
117 items:
118 description: ComponentOverride allows overriding cluster version operator's behavior for a component.
119 type: object
120 required:
121 - group
122 - kind
123 - name
124 - namespace
125 - unmanaged
126 properties:
127 group:
128 description: group identifies the API group that the kind is in.
129 type: string
130 kind:
131 description: kind indentifies which object to override.
132 type: string
133 name:
134 description: name is the component's name.
135 type: string
136 namespace:
137 description: namespace is the component's namespace. If the resource is cluster scoped, the namespace should be empty.
138 type: string
139 unmanaged:
140 description: 'unmanaged controls if cluster version operator should stop managing the resources in this cluster. Default: false'
141 type: boolean
142 upstream:
143 description: upstream may be used to specify the preferred update server. By default it will use the appropriate update server for the cluster and region.
144 type: string
145 status:
146 description: status contains information about the available updates and any in-progress updates.
147 type: object
148 required:
149 - availableUpdates
150 - desired
151 - observedGeneration
152 - versionHash
153 properties:
154 availableUpdates:
155 description: availableUpdates contains updates recommended for this cluster. Updates which appear in conditionalUpdates but not in availableUpdates may expose this cluster to known issues. This list may be empty if no updates are recommended, if the update service is unavailable, or if an invalid channel has been specified.
156 type: array
157 items:
158 description: Release represents an OpenShift release image and associated metadata.
159 type: object
160 properties:
161 channels:
162 description: channels is the set of Cincinnati channels to which the release currently belongs.
163 type: array
164 items:
165 type: string
166 image:
167 description: image is a container image location that contains the update. When this field is part of spec, image is optional if version is specified and the availableUpdates field contains a matching version.
168 type: string
169 url:
170 description: url contains information about this release. This URL is set by the 'url' metadata property on a release or the metadata returned by the update API and should be displayed as a link in user interfaces. The URL field may not be set for test or nightly releases.
171 type: string
172 version:
173 description: version is a semantic version identifying the update version. When this field is part of spec, version is optional if image is specified.
174 type: string
175 nullable: true
176 capabilities:
177 description: capabilities describes the state of optional, core cluster components.
178 type: object
179 properties:
180 enabledCapabilities:
181 description: enabledCapabilities lists all the capabilities that are currently managed.
182 type: array
183 items:
184 description: ClusterVersionCapability enumerates optional, core cluster components.
185 type: string
186 enum:
187 - openshift-samples
188 - baremetal
189 - marketplace
190 - Console
191 - Insights
192 - Storage
193 - CSISnapshot
194 - NodeTuning
195 x-kubernetes-list-type: atomic
196 knownCapabilities:
197 description: knownCapabilities lists all the capabilities known to the current cluster.
198 type: array
199 items:
200 description: ClusterVersionCapability enumerates optional, core cluster components.
201 type: string
202 enum:
203 - openshift-samples
204 - baremetal
205 - marketplace
206 - Console
207 - Insights
208 - Storage
209 - CSISnapshot
210 - NodeTuning
211 x-kubernetes-list-type: atomic
212 conditionalUpdates:
213 description: conditionalUpdates contains the list of updates that may be recommended for this cluster if it meets specific required conditions. Consumers interested in the set of updates that are actually recommended for this cluster should use availableUpdates. This list may be empty if no updates are recommended, if the update service is unavailable, or if an empty or invalid channel has been specified.
214 type: array
215 items:
216 description: ConditionalUpdate represents an update which is recommended to some clusters on the version the current cluster is reconciling, but which may not be recommended for the current cluster.
217 type: object
218 required:
219 - release
220 - risks
221 properties:
222 conditions:
223 description: 'conditions represents the observations of the conditional update''s current status. Known types are: * Evaluating, for whether the cluster-version operator will attempt to evaluate any risks[].matchingRules. * Recommended, for whether the update is recommended for the current cluster.'
224 type: array
225 items:
226 description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
227 type: object
228 required:
229 - lastTransitionTime
230 - message
231 - reason
232 - status
233 - type
234 properties:
235 lastTransitionTime:
236 description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
237 type: string
238 format: date-time
239 message:
240 description: message is a human readable message indicating details about the transition. This may be an empty string.
241 type: string
242 maxLength: 32768
243 observedGeneration:
244 description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
245 type: integer
246 format: int64
247 minimum: 0
248 reason:
249 description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
250 type: string
251 maxLength: 1024
252 minLength: 1
253 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
254 status:
255 description: status of the condition, one of True, False, Unknown.
256 type: string
257 enum:
258 - "True"
259 - "False"
260 - Unknown
261 type:
262 description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
263 type: string
264 maxLength: 316
265 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
266 x-kubernetes-list-map-keys:
267 - type
268 x-kubernetes-list-type: map
269 release:
270 description: release is the target of the update.
271 type: object
272 properties:
273 channels:
274 description: channels is the set of Cincinnati channels to which the release currently belongs.
275 type: array
276 items:
277 type: string
278 image:
279 description: image is a container image location that contains the update. When this field is part of spec, image is optional if version is specified and the availableUpdates field contains a matching version.
280 type: string
281 url:
282 description: url contains information about this release. This URL is set by the 'url' metadata property on a release or the metadata returned by the update API and should be displayed as a link in user interfaces. The URL field may not be set for test or nightly releases.
283 type: string
284 version:
285 description: version is a semantic version identifying the update version. When this field is part of spec, version is optional if image is specified.
286 type: string
287 risks:
288 description: risks represents the range of issues associated with updating to the target release. The cluster-version operator will evaluate all entries, and only recommend the update if there is at least one entry and all entries recommend the update.
289 type: array
290 minItems: 1
291 items:
292 description: ConditionalUpdateRisk represents a reason and cluster-state for not recommending a conditional update.
293 type: object
294 required:
295 - matchingRules
296 - message
297 - name
298 - url
299 properties:
300 matchingRules:
301 description: matchingRules is a slice of conditions for deciding which clusters match the risk and which do not. The slice is ordered by decreasing precedence. The cluster-version operator will walk the slice in order, and stop after the first it can successfully evaluate. If no condition can be successfully evaluated, the update will not be recommended.
302 type: array
303 minItems: 1
304 items:
305 description: ClusterCondition is a union of typed cluster conditions. The 'type' property determines which of the type-specific properties are relevant. When evaluated on a cluster, the condition may match, not match, or fail to evaluate.
306 type: object
307 required:
308 - type
309 properties:
310 promql:
311 description: promQL represents a cluster condition based on PromQL.
312 type: object
313 required:
314 - promql
315 properties:
316 promql:
317 description: PromQL is a PromQL query classifying clusters. This query query should return a 1 in the match case and a 0 in the does-not-match case. Queries which return no time series, or which return values besides 0 or 1, are evaluation failures.
318 type: string
319 type:
320 description: type represents the cluster-condition type. This defines the members and semantics of any additional properties.
321 type: string
322 enum:
323 - Always
324 - PromQL
325 x-kubernetes-list-type: atomic
326 message:
327 description: message provides additional information about the risk of updating, in the event that matchingRules match the cluster state. This is only to be consumed by humans. It may contain Line Feed characters (U+000A), which should be rendered as new lines.
328 type: string
329 minLength: 1
330 name:
331 description: name is the CamelCase reason for not recommending a conditional update, in the event that matchingRules match the cluster state.
332 type: string
333 minLength: 1
334 url:
335 description: url contains information about this risk.
336 type: string
337 format: uri
338 minLength: 1
339 x-kubernetes-list-map-keys:
340 - name
341 x-kubernetes-list-type: map
342 x-kubernetes-list-type: atomic
343 conditions:
344 description: conditions provides information about the cluster version. The condition "Available" is set to true if the desiredUpdate has been reached. The condition "Progressing" is set to true if an update is being applied. The condition "Degraded" is set to true if an update is currently blocked by a temporary or permanent error. Conditions are only valid for the current desiredUpdate when metadata.generation is equal to status.generation.
345 type: array
346 items:
347 description: ClusterOperatorStatusCondition represents the state of the operator's managed and monitored components.
348 type: object
349 required:
350 - lastTransitionTime
351 - status
352 - type
353 properties:
354 lastTransitionTime:
355 description: lastTransitionTime is the time of the last update to the current status property.
356 type: string
357 format: date-time
358 message:
359 description: message provides additional information about the current condition. This is only to be consumed by humans. It may contain Line Feed characters (U+000A), which should be rendered as new lines.
360 type: string
361 reason:
362 description: reason is the CamelCase reason for the condition's current status.
363 type: string
364 status:
365 description: status of the condition, one of True, False, Unknown.
366 type: string
367 type:
368 description: type specifies the aspect reported by this condition.
369 type: string
370 desired:
371 description: desired is the version that the cluster is reconciling towards. If the cluster is not yet fully initialized desired will be set with the information available, which may be an image or a tag.
372 type: object
373 properties:
374 channels:
375 description: channels is the set of Cincinnati channels to which the release currently belongs.
376 type: array
377 items:
378 type: string
379 image:
380 description: image is a container image location that contains the update. When this field is part of spec, image is optional if version is specified and the availableUpdates field contains a matching version.
381 type: string
382 url:
383 description: url contains information about this release. This URL is set by the 'url' metadata property on a release or the metadata returned by the update API and should be displayed as a link in user interfaces. The URL field may not be set for test or nightly releases.
384 type: string
385 version:
386 description: version is a semantic version identifying the update version. When this field is part of spec, version is optional if image is specified.
387 type: string
388 history:
389 description: history contains a list of the most recent versions applied to the cluster. This value may be empty during cluster startup, and then will be updated when a new update is being applied. The newest update is first in the list and it is ordered by recency. Updates in the history have state Completed if the rollout completed - if an update was failing or halfway applied the state will be Partial. Only a limited amount of update history is preserved.
390 type: array
391 items:
392 description: UpdateHistory is a single attempted update to the cluster.
393 type: object
394 required:
395 - completionTime
396 - image
397 - startedTime
398 - state
399 - verified
400 properties:
401 acceptedRisks:
402 description: acceptedRisks records risks which were accepted to initiate the update. For example, it may menition an Upgradeable=False or missing signature that was overriden via desiredUpdate.force, or an update that was initiated despite not being in the availableUpdates set of recommended update targets.
403 type: string
404 completionTime:
405 description: completionTime, if set, is when the update was fully applied. The update that is currently being applied will have a null completion time. Completion time will always be set for entries that are not the current update (usually to the started time of the next update).
406 type: string
407 format: date-time
408 nullable: true
409 image:
410 description: image is a container image location that contains the update. This value is always populated.
411 type: string
412 startedTime:
413 description: startedTime is the time at which the update was started.
414 type: string
415 format: date-time
416 state:
417 description: state reflects whether the update was fully applied. The Partial state indicates the update is not fully applied, while the Completed state indicates the update was successfully rolled out at least once (all parts of the update successfully applied).
418 type: string
419 verified:
420 description: verified indicates whether the provided update was properly verified before it was installed. If this is false the cluster may not be trusted. Verified does not cover upgradeable checks that depend on the cluster state at the time when the update target was accepted.
421 type: boolean
422 version:
423 description: version is a semantic version identifying the update version. If the requested image does not define a version, or if a failure occurs retrieving the image, this value may be empty.
424 type: string
425 observedGeneration:
426 description: observedGeneration reports which version of the spec is being synced. If this value is not equal to metadata.generation, then the desired and conditions fields may represent a previous version.
427 type: integer
428 format: int64
429 versionHash:
430 description: versionHash is a fingerprint of the content that the cluster will be updated with. It is used by the operator to avoid unnecessary work and is for internal use only.
431 type: string
432 served: true
433 storage: true
434 subresources:
435 status: {}
View as plain text