583 lines
26 KiB
YAML
583 lines
26 KiB
YAML
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.14.0
|
|
name: batchreleases.rollouts.kruise.io
|
|
spec:
|
|
group: rollouts.kruise.io
|
|
names:
|
|
kind: BatchRelease
|
|
listKind: BatchReleaseList
|
|
plural: batchreleases
|
|
singular: batchrelease
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .spec.targetReference.workloadRef.kind
|
|
name: KIND
|
|
type: string
|
|
- jsonPath: .status.phase
|
|
name: PHASE
|
|
type: string
|
|
- jsonPath: .status.canaryStatus.currentBatch
|
|
name: BATCH
|
|
type: integer
|
|
- jsonPath: .status.canaryStatus.batchState
|
|
name: BATCH-STATE
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: AGE
|
|
type: date
|
|
name: v1alpha1
|
|
schema:
|
|
openAPIV3Schema:
|
|
properties:
|
|
apiVersion:
|
|
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
|
|
type: string
|
|
kind:
|
|
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
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: BatchReleaseSpec defines how to describe an update between
|
|
different compRevision
|
|
properties:
|
|
releasePlan:
|
|
description: ReleasePlan is the details on how to rollout the resources
|
|
properties:
|
|
batchPartition:
|
|
description: |-
|
|
All pods in the batches up to the batchPartition (included) will have
|
|
the target resource specification while the rest still is the stable revision.
|
|
This is designed for the operators to manually rollout.
|
|
Default is nil, which means no partition and will release all batches.
|
|
BatchPartition start from 0.
|
|
format: int32
|
|
type: integer
|
|
batches:
|
|
description: |-
|
|
Batches is the details on each batch of the ReleasePlan.
|
|
Users can specify their batch plan in this field, such as:
|
|
batches:
|
|
- canaryReplicas: 1 # batches 0
|
|
- canaryReplicas: 2 # batches 1
|
|
- canaryReplicas: 5 # batches 2
|
|
Not that these canaryReplicas should be a non-decreasing sequence.
|
|
items:
|
|
description: ReleaseBatch is used to describe how each batch
|
|
release should be
|
|
properties:
|
|
canaryReplicas:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: |-
|
|
CanaryReplicas is the number of upgraded pods that should have in this batch.
|
|
it can be an absolute number (ex: 5) or a percentage of workload replicas.
|
|
batches[i].canaryReplicas should less than or equal to batches[j].canaryReplicas if i < j.
|
|
x-kubernetes-int-or-string: true
|
|
required:
|
|
- canaryReplicas
|
|
type: object
|
|
type: array
|
|
enableExtraWorkloadForCanary:
|
|
description: |-
|
|
EnableExtraWorkloadForCanary indicates whether to create extra workload for canary
|
|
True corresponds to RollingStyle "Canary".
|
|
False corresponds to RollingStyle "Partiton".
|
|
Ignored in BlueGreen-style.
|
|
This field is about to deprecate, use RollingStyle instead.
|
|
If both of them are set, controller will only consider this
|
|
filed when RollingStyle is empty
|
|
type: boolean
|
|
failureThreshold:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: |-
|
|
FailureThreshold indicates how many failed pods can be tolerated in all upgraded pods.
|
|
Only when FailureThreshold are satisfied, Rollout can enter ready state.
|
|
If FailureThreshold is nil, Rollout will use the MaxUnavailable of workload as its
|
|
FailureThreshold.
|
|
Defaults to nil.
|
|
x-kubernetes-int-or-string: true
|
|
finalizingPolicy:
|
|
description: |-
|
|
FinalizingPolicy define the behavior of controller when phase enter Finalizing
|
|
Defaults to "Immediate"
|
|
type: string
|
|
patchPodTemplateMetadata:
|
|
description: |-
|
|
PatchPodTemplateMetadata indicates patch configuration(e.g. labels, annotations) to the canary deployment podTemplateSpec.metadata
|
|
only support for canary deployment
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
description: annotations
|
|
type: object
|
|
labels:
|
|
additionalProperties:
|
|
type: string
|
|
description: labels
|
|
type: object
|
|
type: object
|
|
rollingStyle:
|
|
description: RollingStyle can be "Canary", "Partiton" or "BlueGreen"
|
|
type: string
|
|
rolloutID:
|
|
description: RolloutID indicates an id for each rollout progress
|
|
type: string
|
|
required:
|
|
- enableExtraWorkloadForCanary
|
|
type: object
|
|
targetReference:
|
|
description: TargetRef contains the GVK and name of the workload that
|
|
we need to upgrade to.
|
|
properties:
|
|
workloadRef:
|
|
description: |-
|
|
WorkloadRef contains enough information to let you identify a workload for Rollout
|
|
Batch release of the bypass
|
|
properties:
|
|
apiVersion:
|
|
description: API Version of the referent
|
|
type: string
|
|
kind:
|
|
description: Kind of the referent
|
|
type: string
|
|
name:
|
|
description: Name of the referent
|
|
type: string
|
|
required:
|
|
- apiVersion
|
|
- kind
|
|
- name
|
|
type: object
|
|
type: object
|
|
required:
|
|
- releasePlan
|
|
- targetReference
|
|
type: object
|
|
status:
|
|
description: BatchReleaseStatus defines the observed state of a release
|
|
plan
|
|
properties:
|
|
canaryStatus:
|
|
description: CanaryStatus describes the state of the canary rollout.
|
|
properties:
|
|
batchReadyTime:
|
|
description: |-
|
|
BatchReadyTime is the ready timestamp of the current batch or the last batch.
|
|
This field is updated once a batch ready, and the batches[x].pausedSeconds
|
|
relies on this field to calculate the real-time duration.
|
|
format: date-time
|
|
type: string
|
|
batchState:
|
|
description: CurrentBatchState indicates the release state of
|
|
the current batch.
|
|
type: string
|
|
currentBatch:
|
|
description: The current batch the rollout is working on/blocked,
|
|
it starts from 0
|
|
format: int32
|
|
type: integer
|
|
noNeedUpdateReplicas:
|
|
description: the number of pods that no need to rollback in rollback
|
|
scene.
|
|
format: int32
|
|
type: integer
|
|
updatedReadyReplicas:
|
|
description: UpdatedReadyReplicas is the number upgraded Pods
|
|
that have a Ready Condition.
|
|
format: int32
|
|
type: integer
|
|
updatedReplicas:
|
|
description: UpdatedReplicas is the number of upgraded Pods.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- currentBatch
|
|
type: object
|
|
collisionCount:
|
|
description: |-
|
|
Count of hash collisions for creating canary Deployment. The controller uses this
|
|
field as a collision avoidance mechanism when it needs to create the name for the
|
|
newest canary Deployment.
|
|
format: int32
|
|
type: integer
|
|
conditions:
|
|
description: Conditions represents the observed process state of each
|
|
phase during executing the release plan.
|
|
items:
|
|
description: RolloutCondition describes the state of a rollout at
|
|
a certain point.
|
|
properties:
|
|
lastTransitionTime:
|
|
description: Last time the condition transitioned from one status
|
|
to another.
|
|
format: date-time
|
|
type: string
|
|
lastUpdateTime:
|
|
description: The last time this condition was updated.
|
|
format: date-time
|
|
type: string
|
|
message:
|
|
description: A human readable message indicating details about
|
|
the transition.
|
|
type: string
|
|
reason:
|
|
description: The reason for the condition's last transition.
|
|
type: string
|
|
status:
|
|
description: Phase of the condition, one of True, False, Unknown.
|
|
type: string
|
|
type:
|
|
description: Type of rollout condition.
|
|
type: string
|
|
required:
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
observedGeneration:
|
|
description: |-
|
|
ObservedGeneration is the most recent generation observed for this BatchRelease.
|
|
It corresponds to this BatchRelease's generation, which is updated on mutation
|
|
by the API Server, and only if BatchRelease Spec was changed, its generation will increase 1.
|
|
format: int64
|
|
type: integer
|
|
observedReleasePlanHash:
|
|
description: ObservedReleasePlanHash is a hash code of observed itself
|
|
spec.releasePlan.
|
|
type: string
|
|
observedRolloutID:
|
|
description: |-
|
|
ObservedRolloutID is the most recent rollout-id observed for this BatchRelease.
|
|
If RolloutID was changed, we will restart to roll out from batch 0,
|
|
to ensure the batch-id and rollout-id labels of Pods are correct.
|
|
type: string
|
|
observedWorkloadReplicas:
|
|
description: |-
|
|
ObservedWorkloadReplicas is observed replicas of target referenced workload.
|
|
This field is designed to deal with scaling event during rollout, if this field changed,
|
|
it means that the workload is scaling during rollout.
|
|
format: int32
|
|
type: integer
|
|
phase:
|
|
description: |-
|
|
Phase is the release plan phase, which indicates the current state of release
|
|
plan state machine in BatchRelease controller.
|
|
type: string
|
|
stableRevision:
|
|
description: StableRevision is the pod-template-hash of stable revision
|
|
pod template.
|
|
type: string
|
|
updateRevision:
|
|
description: UpdateRevision is the pod-template-hash of update revision
|
|
pod template.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: false
|
|
subresources:
|
|
status: {}
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .spec.targetReference.workloadRef.kind
|
|
name: KIND
|
|
type: string
|
|
- jsonPath: .status.phase
|
|
name: PHASE
|
|
type: string
|
|
- jsonPath: .status.canaryStatus.currentBatch
|
|
name: BATCH
|
|
type: integer
|
|
- jsonPath: .status.canaryStatus.batchState
|
|
name: BATCH-STATE
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: AGE
|
|
type: date
|
|
name: v1beta1
|
|
schema:
|
|
openAPIV3Schema:
|
|
properties:
|
|
apiVersion:
|
|
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
|
|
type: string
|
|
kind:
|
|
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
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: BatchReleaseSpec defines how to describe an update between
|
|
different compRevision
|
|
properties:
|
|
releasePlan:
|
|
description: ReleasePlan is the details on how to rollout the resources
|
|
properties:
|
|
batchPartition:
|
|
description: |-
|
|
All pods in the batches up to the batchPartition (included) will have
|
|
the target resource specification while the rest still is the stable revision.
|
|
This is designed for the operators to manually rollout.
|
|
Default is nil, which means no partition and will release all batches.
|
|
BatchPartition start from 0.
|
|
format: int32
|
|
type: integer
|
|
batches:
|
|
description: |-
|
|
Batches is the details on each batch of the ReleasePlan.
|
|
Users can specify their batch plan in this field, such as:
|
|
batches:
|
|
- canaryReplicas: 1 # batches 0
|
|
- canaryReplicas: 2 # batches 1
|
|
- canaryReplicas: 5 # batches 2
|
|
Not that these canaryReplicas should be a non-decreasing sequence.
|
|
items:
|
|
description: ReleaseBatch is used to describe how each batch
|
|
release should be
|
|
properties:
|
|
canaryReplicas:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: |-
|
|
CanaryReplicas is the number of upgraded pods that should have in this batch.
|
|
it can be an absolute number (ex: 5) or a percentage of workload replicas.
|
|
batches[i].canaryReplicas should less than or equal to batches[j].canaryReplicas if i < j.
|
|
x-kubernetes-int-or-string: true
|
|
required:
|
|
- canaryReplicas
|
|
type: object
|
|
type: array
|
|
enableExtraWorkloadForCanary:
|
|
description: |-
|
|
EnableExtraWorkloadForCanary indicates whether to create extra workload for canary
|
|
True corresponds to RollingStyle "Canary".
|
|
False corresponds to RollingStyle "Partiton".
|
|
Ignored in BlueGreen-style.
|
|
This field is about to deprecate, use RollingStyle instead.
|
|
If both of them are set, controller will only consider this
|
|
filed when RollingStyle is empty
|
|
type: boolean
|
|
failureThreshold:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: |-
|
|
FailureThreshold indicates how many failed pods can be tolerated in all upgraded pods.
|
|
Only when FailureThreshold are satisfied, Rollout can enter ready state.
|
|
If FailureThreshold is nil, Rollout will use the MaxUnavailable of workload as its
|
|
FailureThreshold.
|
|
Defaults to nil.
|
|
x-kubernetes-int-or-string: true
|
|
finalizingPolicy:
|
|
description: |-
|
|
FinalizingPolicy define the behavior of controller when phase enter Finalizing
|
|
Defaults to "Immediate"
|
|
type: string
|
|
patchPodTemplateMetadata:
|
|
description: |-
|
|
PatchPodTemplateMetadata indicates patch configuration(e.g. labels, annotations) to the canary deployment podTemplateSpec.metadata
|
|
only support for canary deployment
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
description: annotations
|
|
type: object
|
|
labels:
|
|
additionalProperties:
|
|
type: string
|
|
description: labels
|
|
type: object
|
|
type: object
|
|
rollingStyle:
|
|
description: RollingStyle can be "Canary", "Partiton" or "BlueGreen"
|
|
type: string
|
|
rolloutID:
|
|
description: RolloutID indicates an id for each rollout progress
|
|
type: string
|
|
required:
|
|
- enableExtraWorkloadForCanary
|
|
type: object
|
|
workloadRef:
|
|
description: |-
|
|
WorkloadRef contains enough information to let you identify a workload for Rollout
|
|
Batch release of the bypass
|
|
properties:
|
|
apiVersion:
|
|
description: API Version of the referent
|
|
type: string
|
|
kind:
|
|
description: Kind of the referent
|
|
type: string
|
|
name:
|
|
description: Name of the referent
|
|
type: string
|
|
required:
|
|
- apiVersion
|
|
- kind
|
|
- name
|
|
type: object
|
|
required:
|
|
- releasePlan
|
|
type: object
|
|
status:
|
|
description: BatchReleaseStatus defines the observed state of a release
|
|
plan
|
|
properties:
|
|
canaryStatus:
|
|
description: CanaryStatus describes the state of the canary rollout.
|
|
properties:
|
|
batchReadyTime:
|
|
description: |-
|
|
BatchReadyTime is the ready timestamp of the current batch or the last batch.
|
|
This field is updated once a batch ready, and the batches[x].pausedSeconds
|
|
relies on this field to calculate the real-time duration.
|
|
format: date-time
|
|
type: string
|
|
batchState:
|
|
description: CurrentBatchState indicates the release state of
|
|
the current batch.
|
|
type: string
|
|
currentBatch:
|
|
description: The current batch the rollout is working on/blocked,
|
|
it starts from 0
|
|
format: int32
|
|
type: integer
|
|
noNeedUpdateReplicas:
|
|
description: the number of pods that no need to rollback in rollback
|
|
scene.
|
|
format: int32
|
|
type: integer
|
|
updatedReadyReplicas:
|
|
description: UpdatedReadyReplicas is the number upgraded Pods
|
|
that have a Ready Condition.
|
|
format: int32
|
|
type: integer
|
|
updatedReplicas:
|
|
description: UpdatedReplicas is the number of upgraded Pods.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- currentBatch
|
|
type: object
|
|
collisionCount:
|
|
description: |-
|
|
Count of hash collisions for creating canary Deployment. The controller uses this
|
|
field as a collision avoidance mechanism when it needs to create the name for the
|
|
newest canary Deployment.
|
|
format: int32
|
|
type: integer
|
|
conditions:
|
|
description: Conditions represents the observed process state of each
|
|
phase during executing the release plan.
|
|
items:
|
|
description: RolloutCondition describes the state of a rollout at
|
|
a certain point.
|
|
properties:
|
|
lastTransitionTime:
|
|
description: Last time the condition transitioned from one status
|
|
to another.
|
|
format: date-time
|
|
type: string
|
|
lastUpdateTime:
|
|
description: The last time this condition was updated.
|
|
format: date-time
|
|
type: string
|
|
message:
|
|
description: A human readable message indicating details about
|
|
the transition.
|
|
type: string
|
|
reason:
|
|
description: The reason for the condition's last transition.
|
|
type: string
|
|
status:
|
|
description: Phase of the condition, one of True, False, Unknown.
|
|
type: string
|
|
type:
|
|
description: Type of rollout condition.
|
|
type: string
|
|
required:
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
message:
|
|
description: Message provides details on why the rollout is in its
|
|
current phase
|
|
type: string
|
|
observedGeneration:
|
|
description: |-
|
|
ObservedGeneration is the most recent generation observed for this BatchRelease.
|
|
It corresponds to this BatchRelease's generation, which is updated on mutation
|
|
by the API Server, and only if BatchRelease Spec was changed, its generation will increase 1.
|
|
format: int64
|
|
type: integer
|
|
observedReleasePlanHash:
|
|
description: ObservedReleasePlanHash is a hash code of observed itself
|
|
spec.releasePlan.
|
|
type: string
|
|
observedRolloutID:
|
|
description: |-
|
|
ObservedRolloutID is the most recent rollout-id observed for this BatchRelease.
|
|
If RolloutID was changed, we will restart to roll out from batch 0,
|
|
to ensure the batch-id and rollout-id labels of Pods are correct.
|
|
type: string
|
|
observedWorkloadReplicas:
|
|
description: |-
|
|
ObservedWorkloadReplicas is observed replicas of target referenced workload.
|
|
This field is designed to deal with scaling event during rollout, if this field changed,
|
|
it means that the workload is scaling during rollout.
|
|
format: int32
|
|
type: integer
|
|
phase:
|
|
description: |-
|
|
Phase is the release plan phase, which indicates the current state of release
|
|
plan state machine in BatchRelease controller.
|
|
type: string
|
|
stableRevision:
|
|
description: StableRevision is the pod-template-hash of stable revision
|
|
pod template.
|
|
type: string
|
|
updateRevision:
|
|
description: UpdateRevision is the pod-template-hash of update revision
|
|
pod template.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|