Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the v1alpha1 API group. +kubebuilder:object:generate=true +groupName=kuberik.com
Index ¶
- Constants
- Variables
- type BlockedRelease
- type ClusterRolloutSchedule
- type ClusterRolloutScheduleList
- type ClusterRolloutScheduleSpec
- type ClusterRolloutScheduleStatus
- type DateRange
- type DayOfWeek
- type DeploymentHistoryEntry
- type FailedHealthCheck
- type HealthCheck
- type HealthCheckList
- type HealthCheckSelectorConfig
- func (in *HealthCheckSelectorConfig) DeepCopy() *HealthCheckSelectorConfig
- func (in *HealthCheckSelectorConfig) DeepCopyInto(out *HealthCheckSelectorConfig)
- func (hcsc *HealthCheckSelectorConfig) GetNamespaceSelector() *metav1.LabelSelector
- func (hcsc *HealthCheckSelectorConfig) GetSelector() *metav1.LabelSelector
- func (hcsc *HealthCheckSelectorConfig) IsValid() bool
- type HealthCheckSpec
- type HealthCheckStatus
- type HealthStatus
- type ProviderRolloutReference
- type Repository
- type Rollout
- type RolloutDependency
- type RolloutDependencyList
- type RolloutDependencySpec
- type RolloutDependencyStatus
- type RolloutGate
- type RolloutGateList
- type RolloutGateSpec
- type RolloutGateStatus
- type RolloutGateStatusSummary
- type RolloutList
- type RolloutSchedule
- type RolloutScheduleAction
- type RolloutScheduleList
- type RolloutScheduleSpec
- type RolloutScheduleStatus
- type RolloutSpec
- type RolloutStatus
- type ScheduleRule
- type TimeRange
- type TriggeredByInfo
- type VersionInfo
Constants ¶
const ( // RolloutReady means the rollout is ready to serve requests. RolloutReady = "Ready" // RolloutReleasesUpdated means the available releases were updated. RolloutReleasesUpdated = "ReleasesUpdated" // RolloutGatesPassing means all gates are passing. RolloutGatesPassing = "GatesPassing" // RolloutBakeTimeRetrying means the bake time is being retried after a failure. RolloutBakeTimeRetrying = "BakeTimeRetrying" // RolloutInvalidBakeTimeConfiguration means the bake time configuration is invalid. RolloutInvalidBakeTimeConfiguration = "InvalidBakeTimeConfiguration" // RolloutDeploymentBlocked means deployment is blocked because health checks are unhealthy. RolloutDeploymentBlocked = "DeploymentBlocked" // RolloutBakeFailureDisabled means health check failures will not fail the current deployment. // This occurs when the previous deployment also failed, allowing recovery without cascading failures. RolloutBakeFailureDisabled = "BakeFailureDisabled" )
const ( BakeStatusDeploying = "Deploying" BakeStatusInProgress = "InProgress" BakeStatusSucceeded = "Succeeded" BakeStatusFailed = "Failed" BakeStatusCancelled = "Cancelled" )
const ( // RolloutDependencyReady indicates the dependency was evaluated successfully // and its managed RolloutGate reflects that evaluation. RolloutDependencyReady = "Ready" // RolloutDependencySatisfied indicates that no release the consumer could // deploy next is held back by this dependency. RolloutDependencySatisfied = "Satisfied" )
Condition types for RolloutDependency.
const RequiresAnnotationPrefix = "com.kuberik.rollout.requires."
RequiresAnnotationPrefix is the OCI annotation prefix used by a release to declare what it requires of another service's contract. The annotation key is "com.kuberik.rollout.requires.<contract>".
The value is a version constraint as defined by github.com/Masterminds/semver, applied verbatim: https://github.com/Masterminds/semver#checking-version-constraints
Note that a bare version ("1.2.0") is an exact match there. A release that tolerates later providers should say so — "^1.2.0" (compatible within the major), "~1.2.0" (within the minor), or ">=1.2.0".
const ( // RetryAnnotation, when set on a Rollout whose latest history entry has BakeStatus=Failed, // triggers a retry: the rollout controller resets BakeStatus to Deploying, records // LastRetryTimestamp on the history entry, and removes the annotation. The annotation // value is opaque to this controller — domain-specific retry modes (e.g. how failed // RolloutTests should be handled) live as separate annotations owned by their respective // controllers, keyed off LastRetryTimestamp as the cross-controller signal. RetryAnnotation = "rollout.kuberik.com/retry" )
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: "kuberik.com", Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme. SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type BlockedRelease ¶ added in v0.9.0
type BlockedRelease struct {
// Tag is the image tag of the blocked release candidate.
// +kubebuilder:validation:Required
// +required
Tag string `json:"tag"`
// RequiredVersion is the version constraint the candidate places on the
// provider's contract, verbatim from its requires annotation.
// +optional
RequiredVersion *string `json:"requiredVersion,omitempty"`
// Reason is a short, machine-readable reason the candidate is blocked.
// +optional
Reason string `json:"reason,omitempty"`
}
BlockedRelease describes a consumer release candidate held back by this dependency, and why.
func (*BlockedRelease) DeepCopy ¶ added in v0.9.0
func (in *BlockedRelease) DeepCopy() *BlockedRelease
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockedRelease.
func (*BlockedRelease) DeepCopyInto ¶ added in v0.9.0
func (in *BlockedRelease) DeepCopyInto(out *BlockedRelease)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterRolloutSchedule ¶ added in v0.7.0
type ClusterRolloutSchedule struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ClusterRolloutScheduleSpec `json:"spec,omitempty"`
Status ClusterRolloutScheduleStatus `json:"status,omitempty"`
}
ClusterRolloutSchedule is the Schema for the clusterrolloutschedules API.
func (*ClusterRolloutSchedule) DeepCopy ¶ added in v0.7.0
func (in *ClusterRolloutSchedule) DeepCopy() *ClusterRolloutSchedule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRolloutSchedule.
func (*ClusterRolloutSchedule) DeepCopyInto ¶ added in v0.7.0
func (in *ClusterRolloutSchedule) DeepCopyInto(out *ClusterRolloutSchedule)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterRolloutSchedule) DeepCopyObject ¶ added in v0.7.0
func (in *ClusterRolloutSchedule) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterRolloutScheduleList ¶ added in v0.7.0
type ClusterRolloutScheduleList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ClusterRolloutSchedule `json:"items"`
}
ClusterRolloutScheduleList contains a list of ClusterRolloutSchedule.
func (*ClusterRolloutScheduleList) DeepCopy ¶ added in v0.7.0
func (in *ClusterRolloutScheduleList) DeepCopy() *ClusterRolloutScheduleList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRolloutScheduleList.
func (*ClusterRolloutScheduleList) DeepCopyInto ¶ added in v0.7.0
func (in *ClusterRolloutScheduleList) DeepCopyInto(out *ClusterRolloutScheduleList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterRolloutScheduleList) DeepCopyObject ¶ added in v0.7.0
func (in *ClusterRolloutScheduleList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterRolloutScheduleSpec ¶ added in v0.7.0
type ClusterRolloutScheduleSpec struct {
// RolloutSelector is a label selector to match Rollouts across namespaces.
// +required
RolloutSelector *metav1.LabelSelector `json:"rolloutSelector"`
// NamespaceSelector is a label selector to match namespaces.
// If empty, applies to all namespaces.
// +optional
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty"`
// Rules is a list of schedule rules.
// The schedule is active if ANY rule matches the current time/date.
// +required
// +kubebuilder:validation:MinItems=1
Rules []ScheduleRule `json:"rules"`
// Timezone is the IANA timezone for the schedule (e.g., "America/New_York").
// Defaults to "UTC" if not specified.
// +kubebuilder:default="UTC"
// +optional
Timezone string `json:"timezone,omitempty"`
// Action defines what to do when the schedule is active.
// - "Allow": Gate passes when active, blocks when inactive
// - "Deny": Gate blocks when active, passes when inactive
// +kubebuilder:default="Deny"
// +optional
Action RolloutScheduleAction `json:"action,omitempty"`
}
ClusterRolloutScheduleSpec defines the desired state of ClusterRolloutSchedule.
func (*ClusterRolloutScheduleSpec) DeepCopy ¶ added in v0.7.0
func (in *ClusterRolloutScheduleSpec) DeepCopy() *ClusterRolloutScheduleSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRolloutScheduleSpec.
func (*ClusterRolloutScheduleSpec) DeepCopyInto ¶ added in v0.7.0
func (in *ClusterRolloutScheduleSpec) DeepCopyInto(out *ClusterRolloutScheduleSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterRolloutScheduleStatus ¶ added in v0.7.0
type ClusterRolloutScheduleStatus struct {
// Active indicates if the schedule is currently active (any rule matches).
// +optional
Active bool `json:"active,omitempty"`
// ActiveRules is a list of rule names that are currently active.
// +optional
ActiveRules []string `json:"activeRules,omitempty"`
// NextTransition is the timestamp when the active state will next change.
// +optional
NextTransition *metav1.Time `json:"nextTransition,omitempty"`
// ManagedGates is a list of RolloutGate names being managed by this schedule.
// Format: "namespace/name"
// +optional
ManagedGates []string `json:"managedGates,omitempty"`
// MatchingRollouts is the count of rollouts currently matched by the selectors.
// +optional
MatchingRollouts int `json:"matchingRollouts,omitempty"`
// Conditions represents the current state of the schedule.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
ClusterRolloutScheduleStatus defines the observed state of ClusterRolloutSchedule.
func (*ClusterRolloutScheduleStatus) DeepCopy ¶ added in v0.7.0
func (in *ClusterRolloutScheduleStatus) DeepCopy() *ClusterRolloutScheduleStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRolloutScheduleStatus.
func (*ClusterRolloutScheduleStatus) DeepCopyInto ¶ added in v0.7.0
func (in *ClusterRolloutScheduleStatus) DeepCopyInto(out *ClusterRolloutScheduleStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DateRange ¶ added in v0.7.0
type DateRange struct {
// Start date in YYYY-MM-DD format
// +kubebuilder:validation:Pattern=`^\d{4}-\d{2}-\d{2}$`
// +required
Start string `json:"start"`
// End date in YYYY-MM-DD format
// +kubebuilder:validation:Pattern=`^\d{4}-\d{2}-\d{2}$`
// +required
End string `json:"end"`
}
DateRange represents a date range.
func (*DateRange) DeepCopy ¶ added in v0.7.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DateRange.
func (*DateRange) DeepCopyInto ¶ added in v0.7.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DayOfWeek ¶ added in v0.7.0
type DayOfWeek string
DayOfWeek represents a day of the week. +kubebuilder:validation:Enum=Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday
type DeploymentHistoryEntry ¶
type DeploymentHistoryEntry struct {
// ID is a unique auto-incrementing identifier for this history entry.
// +optional
ID *int64 `json:"id,omitempty"`
// Version is the version information that was deployed.
// +kubebuilder:validation:Required
// +required
Version VersionInfo `json:"version"`
// Timestamp is the time when the deployment occurred.
// +kubebuilder:validation:Required
// +required
Timestamp metav1.Time `json:"timestamp"`
// Message provides a descriptive message about this deployment entry
// This field contains human-readable information about the deployment context.
// For automatic deployments, it includes information about gate bypass and failed bake unblock.
// For manual deployments (when wantedVersion is specified), it can contain a custom message
// provided via the "rollout.kuberik.com/deployment-message" annotation, or defaults to "Manual deployment".
// +optional
Message *string `json:"message,omitempty"`
// TriggeredBy indicates what triggered this deployment.
// Kind can be "User" for manual deployments triggered by a user, or "System" for automatic deployments.
// Name contains the name of the user or system that triggered the deployment.
// For user-triggered deployments, this is extracted from the "rollout.kuberik.com/deploy-user" annotation.
// For system-triggered deployments, this is typically "rollout-controller".
// +optional
TriggeredBy *TriggeredByInfo `json:"triggeredBy,omitempty"`
// BakeStatus tracks the bake state for this deployment (e.g., None, InProgress, Succeeded, Failed, Cancelled)
// The bake process ensures that the deployment is stable and healthy before marking as successful.
// +optional
BakeStatus *string `json:"bakeStatus,omitempty"`
// BakeStatusMessage provides details about the bake state for this deployment
// This field contains human-readable information about why the bake status is what it is.
// +optional
BakeStatusMessage *string `json:"bakeStatusMessage,omitempty"`
// BakeStartTime is the time when the bake period started for this deployment
// This is when the rollout controller began monitoring the deployment for stability.
// +optional
BakeStartTime *metav1.Time `json:"bakeStartTime,omitempty"`
// BakeEndTime is the time when the bake period ended for this deployment
// This is when the bake process completed (either successfully or with failure).
// +optional
BakeEndTime *metav1.Time `json:"bakeEndTime,omitempty"`
// FailedHealthChecks contains all health checks that failed during bake.
// This field is populated when bake fails due to health check errors.
// +optional
FailedHealthChecks []FailedHealthCheck `json:"failedHealthChecks,omitempty"`
// LastRetryTimestamp is the time when a retry was most recently requested for this deployment.
// When set, downstream controllers (health checks, kruise rollout step gates) use this as a
// cutoff: stale failure conditions with LastTransitionTime older than LastRetryTimestamp are
// ignored as they reflect the pre-retry state.
// +optional
LastRetryTimestamp *metav1.Time `json:"lastRetryTimestamp,omitempty"`
}
DeploymentHistoryEntry represents a single entry in the deployment history.
func (*DeploymentHistoryEntry) DeepCopy ¶
func (in *DeploymentHistoryEntry) DeepCopy() *DeploymentHistoryEntry
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentHistoryEntry.
func (*DeploymentHistoryEntry) DeepCopyInto ¶
func (in *DeploymentHistoryEntry) DeepCopyInto(out *DeploymentHistoryEntry)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FailedHealthCheck ¶
type FailedHealthCheck struct {
// Name is the name of the health check.
// +kubebuilder:validation:Required
// +required
Name string `json:"name"`
// Namespace is the namespace of the health check.
// +kubebuilder:validation:Required
// +required
Namespace string `json:"namespace"`
// Message is the error message from the health check.
// +optional
Message *string `json:"message,omitempty"`
}
FailedHealthCheck represents a health check that failed during bake.
func (*FailedHealthCheck) DeepCopy ¶
func (in *FailedHealthCheck) DeepCopy() *FailedHealthCheck
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FailedHealthCheck.
func (*FailedHealthCheck) DeepCopyInto ¶
func (in *FailedHealthCheck) DeepCopyInto(out *FailedHealthCheck)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HealthCheck ¶
type HealthCheck struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec HealthCheckSpec `json:"spec,omitempty"`
Status HealthCheckStatus `json:"status,omitempty"`
}
HealthCheck is the Schema for the healthchecks API.
func (*HealthCheck) DeepCopy ¶
func (in *HealthCheck) DeepCopy() *HealthCheck
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheck.
func (*HealthCheck) DeepCopyInto ¶
func (in *HealthCheck) DeepCopyInto(out *HealthCheck)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HealthCheck) DeepCopyObject ¶
func (in *HealthCheck) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type HealthCheckList ¶
type HealthCheckList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []HealthCheck `json:"items"`
}
HealthCheckList contains a list of HealthCheck.
func (*HealthCheckList) DeepCopy ¶
func (in *HealthCheckList) DeepCopy() *HealthCheckList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckList.
func (*HealthCheckList) DeepCopyInto ¶
func (in *HealthCheckList) DeepCopyInto(out *HealthCheckList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HealthCheckList) DeepCopyObject ¶
func (in *HealthCheckList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type HealthCheckSelectorConfig ¶
type HealthCheckSelectorConfig struct {
// Selector specifies the label selector for matching HealthChecks
// +optional
Selector *metav1.LabelSelector `json:"selector,omitempty"`
// NamespaceSelector specifies the namespace selector for matching HealthChecks
// If not specified, only HealthChecks in the same namespace as the Rollout will be considered
// +optional
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty"`
}
HealthCheckSelectorConfig defines how to select HealthChecks for a rollout.
func (*HealthCheckSelectorConfig) DeepCopy ¶
func (in *HealthCheckSelectorConfig) DeepCopy() *HealthCheckSelectorConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckSelectorConfig.
func (*HealthCheckSelectorConfig) DeepCopyInto ¶
func (in *HealthCheckSelectorConfig) DeepCopyInto(out *HealthCheckSelectorConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HealthCheckSelectorConfig) GetNamespaceSelector ¶
func (hcsc *HealthCheckSelectorConfig) GetNamespaceSelector() *metav1.LabelSelector
GetNamespaceSelector returns the namespace selector.
func (*HealthCheckSelectorConfig) GetSelector ¶
func (hcsc *HealthCheckSelectorConfig) GetSelector() *metav1.LabelSelector
GetSelector returns the label selector for HealthChecks.
func (*HealthCheckSelectorConfig) IsValid ¶
func (hcsc *HealthCheckSelectorConfig) IsValid() bool
IsValid checks if the HealthCheckSelectorConfig is properly configured.
type HealthCheckSpec ¶
type HealthCheckSpec struct {
// Class specifies the type of health check (e.g., 'kustomization')
// +optional
Class *string `json:"class,omitempty"`
}
HealthCheckSpec defines the desired state of HealthCheck.
func (*HealthCheckSpec) DeepCopy ¶
func (in *HealthCheckSpec) DeepCopy() *HealthCheckSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckSpec.
func (*HealthCheckSpec) DeepCopyInto ¶
func (in *HealthCheckSpec) DeepCopyInto(out *HealthCheckSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HealthCheckStatus ¶
type HealthCheckStatus struct {
// Status indicates the health state of the check (e.g., 'Healthy', 'Unhealthy', 'Pending')
// +optional
Status HealthStatus `json:"status,omitempty"`
// LastErrorTime is the timestamp of the most recent error state
// +optional
LastErrorTime *metav1.Time `json:"lastErrorTime,omitempty"`
// Message provides additional details about the health status
// +optional
Message *string `json:"message,omitempty"`
// LastChangeTime is the timestamp when the health status last changed
// +optional
LastChangeTime *metav1.Time `json:"lastChangeTime,omitempty"`
}
HealthCheckStatus defines the observed state of HealthCheck.
func (*HealthCheckStatus) DeepCopy ¶
func (in *HealthCheckStatus) DeepCopy() *HealthCheckStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckStatus.
func (*HealthCheckStatus) DeepCopyInto ¶
func (in *HealthCheckStatus) DeepCopyInto(out *HealthCheckStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HealthStatus ¶
type HealthStatus string
const ( HealthStatusHealthy HealthStatus = "Healthy" HealthStatusUnhealthy HealthStatus = "Unhealthy" HealthStatusPending HealthStatus = "Pending" )
type ProviderRolloutReference ¶ added in v0.9.0
type ProviderRolloutReference struct {
// Name is the name of the providing Rollout.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
// +required
Name string `json:"name"`
// Namespace is the namespace of the providing Rollout.
// Defaults to the namespace of the RolloutDependency.
// +optional
Namespace *string `json:"namespace,omitempty"`
}
ProviderRolloutReference identifies the Rollout that provides a contract.
func (*ProviderRolloutReference) DeepCopy ¶ added in v0.9.0
func (in *ProviderRolloutReference) DeepCopy() *ProviderRolloutReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderRolloutReference.
func (*ProviderRolloutReference) DeepCopyInto ¶ added in v0.9.0
func (in *ProviderRolloutReference) DeepCopyInto(out *ProviderRolloutReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Repository ¶
type Repository struct {
// The URL of the repository
// +kubebuilder:validation:Required
// +required
URL string `json:"url,omitempty"`
// The secret name containing the authentication credentials
// +optional
Auth *corev1.LocalObjectReference `json:"secretRef,omitempty"`
}
func (*Repository) DeepCopy ¶
func (in *Repository) DeepCopy() *Repository
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Repository.
func (*Repository) DeepCopyInto ¶
func (in *Repository) DeepCopyInto(out *Repository)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Rollout ¶
type Rollout struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RolloutSpec `json:"spec,omitempty"`
Status RolloutStatus `json:"status,omitempty"`
}
Rollout is the Schema for the rollouts API.
func (*Rollout) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rollout.
func (*Rollout) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Rollout) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutDependency ¶ added in v0.9.0
type RolloutDependency struct {
metav1.TypeMeta `json:",inline"`
// metadata is a standard object metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitzero"`
// spec defines the desired state of RolloutDependency
// +required
Spec RolloutDependencySpec `json:"spec"`
// status defines the observed state of RolloutDependency
// +optional
Status RolloutDependencyStatus `json:"status,omitzero"`
}
RolloutDependency is the Schema for the rolloutdependencies API
func (*RolloutDependency) DeepCopy ¶ added in v0.9.0
func (in *RolloutDependency) DeepCopy() *RolloutDependency
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutDependency.
func (*RolloutDependency) DeepCopyInto ¶ added in v0.9.0
func (in *RolloutDependency) DeepCopyInto(out *RolloutDependency)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutDependency) DeepCopyObject ¶ added in v0.9.0
func (in *RolloutDependency) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutDependencyList ¶ added in v0.9.0
type RolloutDependencyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitzero"`
Items []RolloutDependency `json:"items"`
}
RolloutDependencyList contains a list of RolloutDependency
func (*RolloutDependencyList) DeepCopy ¶ added in v0.9.0
func (in *RolloutDependencyList) DeepCopy() *RolloutDependencyList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutDependencyList.
func (*RolloutDependencyList) DeepCopyInto ¶ added in v0.9.0
func (in *RolloutDependencyList) DeepCopyInto(out *RolloutDependencyList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutDependencyList) DeepCopyObject ¶ added in v0.9.0
func (in *RolloutDependencyList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutDependencySpec ¶ added in v0.9.0
type RolloutDependencySpec struct {
// RolloutRef references the consumer Rollout that this dependency gates.
// The Rollout must live in the same namespace as this RolloutDependency.
//
// The name is validated here because corev1.LocalObjectReference defaults it
// to the empty string, which would otherwise be admitted and then fail every
// lookup.
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="self.name != ”",message="rolloutRef.name must not be empty"
// +required
RolloutRef corev1.LocalObjectReference `json:"rolloutRef"`
// ProviderRef references the Rollout that provides the contract.
// +kubebuilder:validation:Required
// +required
ProviderRef ProviderRolloutReference `json:"providerRef"`
// Contract is the contract name matched against the consumer's
// "com.kuberik.rollout.requires.<contract>" annotations.
// Defaults to the name of the provider Rollout.
// +optional
Contract *string `json:"contract,omitempty"`
}
RolloutDependencySpec defines the desired state of RolloutDependency.
A RolloutDependency gates a consumer Rollout on the deployed contract version of a provider Rollout. Each release candidate of the consumer declares what it requires of the contract via a "com.kuberik.rollout.requires.<contract>" OCI annotation. A candidate is admitted only once the provider has successfully deployed a release whose own contract version (org.opencontainers.image.version) satisfies that constraint. The result is a topological rollout: providers advance before the consumers that depend on them.
func (*RolloutDependencySpec) ContractName ¶ added in v0.9.0
func (s *RolloutDependencySpec) ContractName() string
ContractName returns the contract name this dependency gates on, falling back to the provider Rollout name when not explicitly set.
func (*RolloutDependencySpec) DeepCopy ¶ added in v0.9.0
func (in *RolloutDependencySpec) DeepCopy() *RolloutDependencySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutDependencySpec.
func (*RolloutDependencySpec) DeepCopyInto ¶ added in v0.9.0
func (in *RolloutDependencySpec) DeepCopyInto(out *RolloutDependencySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutDependencySpec) ProviderNamespace ¶ added in v0.9.0
func (s *RolloutDependencySpec) ProviderNamespace(ownNamespace string) string
ProviderNamespace returns the namespace of the provider Rollout, defaulting to the given namespace of the RolloutDependency itself.
type RolloutDependencyStatus ¶ added in v0.9.0
type RolloutDependencyStatus struct {
// conditions represent the current state of the RolloutDependency resource.
//
// Condition types:
// - "Ready": the dependency was evaluated and its gate is in sync
// - "Satisfied": no release the consumer could deploy next is held back by
// this dependency
// +listType=map
// +listMapKey=type
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
// ProvidedVersion is the contract version currently deployed by the provider
// Rollout, taken from the OCI version annotation of its deployed release with
// the numeric per-build ordinal stripped. A real pre-release identifier
// ("2.0.0-alpha.1") is preserved, because it means the triple has not
// shipped.
// +optional
ProvidedVersion *string `json:"providedVersion,omitempty"`
// ProvidedTag is the image tag of the provider release that ProvidedVersion
// was read from.
// +optional
ProvidedTag *string `json:"providedTag,omitempty"`
// AdmittedVersions lists the consumer release candidate tags admitted by this
// dependency. This is the allow list published to the managed RolloutGate.
// Named for symmetry with RolloutGate.allowedVersions, which also holds tags.
// Capped at the newest entries; see maxPublishedReleases.
// +kubebuilder:validation:MaxItems=50
// +optional
AdmittedVersions []string `json:"admittedVersions,omitempty"`
// BlockedReleases lists the consumer release candidates held back by this
// dependency, with the constraint each places on the contract.
// Capped at the newest entries; see maxPublishedReleases.
// +kubebuilder:validation:MaxItems=50
// +optional
BlockedReleases []BlockedRelease `json:"blockedReleases,omitempty"`
// GateName is the name of the RolloutGate managed by this dependency.
// +optional
GateName string `json:"gateName,omitempty"`
}
RolloutDependencyStatus defines the observed state of RolloutDependency.
func (*RolloutDependencyStatus) DeepCopy ¶ added in v0.9.0
func (in *RolloutDependencyStatus) DeepCopy() *RolloutDependencyStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutDependencyStatus.
func (*RolloutDependencyStatus) DeepCopyInto ¶ added in v0.9.0
func (in *RolloutDependencyStatus) DeepCopyInto(out *RolloutDependencyStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutGate ¶
type RolloutGate struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RolloutGateSpec `json:"spec,omitempty"`
Status RolloutGateStatus `json:"status,omitempty"`
}
RolloutGate is the Schema for the rolloutgates API.
func (*RolloutGate) DeepCopy ¶
func (in *RolloutGate) DeepCopy() *RolloutGate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutGate.
func (*RolloutGate) DeepCopyInto ¶
func (in *RolloutGate) DeepCopyInto(out *RolloutGate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutGate) DeepCopyObject ¶
func (in *RolloutGate) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutGateList ¶
type RolloutGateList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []RolloutGate `json:"items"`
}
RolloutGateList contains a list of RolloutGate.
func (*RolloutGateList) DeepCopy ¶
func (in *RolloutGateList) DeepCopy() *RolloutGateList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutGateList.
func (*RolloutGateList) DeepCopyInto ¶
func (in *RolloutGateList) DeepCopyInto(out *RolloutGateList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutGateList) DeepCopyObject ¶
func (in *RolloutGateList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutGateSpec ¶
type RolloutGateSpec struct {
// +required
RolloutRef *corev1.LocalObjectReference `json:"rolloutRef"`
// Passing is true if the RolloutGate is passing.
// +required
// +default=true
Passing *bool `json:"passing,omitempty"`
// AllowedVersions is a list of versions that Rollout can be updated to.
// +optional
AllowedVersions *[]string `json:"allowedVersions,omitempty"`
}
RolloutGateSpec defines the desired state of RolloutGate.
func (*RolloutGateSpec) DeepCopy ¶
func (in *RolloutGateSpec) DeepCopy() *RolloutGateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutGateSpec.
func (*RolloutGateSpec) DeepCopyInto ¶
func (in *RolloutGateSpec) DeepCopyInto(out *RolloutGateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutGateStatus ¶
type RolloutGateStatus struct {
}
RolloutGateStatus defines the observed state of RolloutGate.
func (*RolloutGateStatus) DeepCopy ¶
func (in *RolloutGateStatus) DeepCopy() *RolloutGateStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutGateStatus.
func (*RolloutGateStatus) DeepCopyInto ¶
func (in *RolloutGateStatus) DeepCopyInto(out *RolloutGateStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutGateStatusSummary ¶
type RolloutGateStatusSummary struct {
// Name is the name of the gate.
// +kubebuilder:validation:Required
// +required
Name string `json:"name"`
// Passing is true if the gate is passing, false if it is blocking.
// +optional
Passing *bool `json:"passing,omitempty"`
// AllowedVersions is a list of versions that are allowed by the gate.
// +optional
AllowedVersions []string `json:"allowedVersions"`
// Message is a message describing the status of the gate.
// +optional
Message string `json:"message,omitempty"`
// BypassGates indicates whether this gate was bypassed for the current deployment.
// +kubebuilder:validation:Optional
// +optional
BypassGates bool `json:"bypassGates,omitempty"`
}
RolloutGateStatusSummary summarizes the status of a gate relevant to this rollout.
func (*RolloutGateStatusSummary) DeepCopy ¶
func (in *RolloutGateStatusSummary) DeepCopy() *RolloutGateStatusSummary
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutGateStatusSummary.
func (*RolloutGateStatusSummary) DeepCopyInto ¶
func (in *RolloutGateStatusSummary) DeepCopyInto(out *RolloutGateStatusSummary)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutList ¶
type RolloutList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Rollout `json:"items"`
}
RolloutList contains a list of Rollout.
func (*RolloutList) DeepCopy ¶
func (in *RolloutList) DeepCopy() *RolloutList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutList.
func (*RolloutList) DeepCopyInto ¶
func (in *RolloutList) DeepCopyInto(out *RolloutList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutList) DeepCopyObject ¶
func (in *RolloutList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutSchedule ¶ added in v0.7.0
type RolloutSchedule struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RolloutScheduleSpec `json:"spec,omitempty"`
Status RolloutScheduleStatus `json:"status,omitempty"`
}
RolloutSchedule is the Schema for the rolloutschedules API.
func (*RolloutSchedule) DeepCopy ¶ added in v0.7.0
func (in *RolloutSchedule) DeepCopy() *RolloutSchedule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutSchedule.
func (*RolloutSchedule) DeepCopyInto ¶ added in v0.7.0
func (in *RolloutSchedule) DeepCopyInto(out *RolloutSchedule)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutSchedule) DeepCopyObject ¶ added in v0.7.0
func (in *RolloutSchedule) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutScheduleAction ¶ added in v0.7.0
type RolloutScheduleAction string
RolloutScheduleAction defines the action to take when the schedule is active. +kubebuilder:validation:Enum=Allow;Deny
const ( // RolloutScheduleActionAllow allows rollouts when the schedule is active. // When inactive, rollouts are blocked. RolloutScheduleActionAllow RolloutScheduleAction = "Allow" // RolloutScheduleActionDeny blocks rollouts when the schedule is active. // When inactive, rollouts are allowed. RolloutScheduleActionDeny RolloutScheduleAction = "Deny" )
type RolloutScheduleList ¶ added in v0.7.0
type RolloutScheduleList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []RolloutSchedule `json:"items"`
}
RolloutScheduleList contains a list of RolloutSchedule.
func (*RolloutScheduleList) DeepCopy ¶ added in v0.7.0
func (in *RolloutScheduleList) DeepCopy() *RolloutScheduleList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutScheduleList.
func (*RolloutScheduleList) DeepCopyInto ¶ added in v0.7.0
func (in *RolloutScheduleList) DeepCopyInto(out *RolloutScheduleList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutScheduleList) DeepCopyObject ¶ added in v0.7.0
func (in *RolloutScheduleList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RolloutScheduleSpec ¶ added in v0.7.0
type RolloutScheduleSpec struct {
// RolloutSelector is a label selector to match Rollouts in the same namespace.
// +required
RolloutSelector *metav1.LabelSelector `json:"rolloutSelector"`
// Rules is a list of schedule rules.
// The schedule is active if ANY rule matches the current time/date.
// +required
// +kubebuilder:validation:MinItems=1
Rules []ScheduleRule `json:"rules"`
// Timezone is the IANA timezone for the schedule (e.g., "America/New_York").
// Defaults to "UTC" if not specified.
// +kubebuilder:default="UTC"
// +optional
Timezone string `json:"timezone,omitempty"`
// Action defines what to do when the schedule is active.
// - "Allow": Gate passes when active, blocks when inactive
// - "Deny": Gate blocks when active, passes when inactive
// +kubebuilder:default="Deny"
// +optional
Action RolloutScheduleAction `json:"action,omitempty"`
}
RolloutScheduleSpec defines the desired state of RolloutSchedule.
func (*RolloutScheduleSpec) DeepCopy ¶ added in v0.7.0
func (in *RolloutScheduleSpec) DeepCopy() *RolloutScheduleSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutScheduleSpec.
func (*RolloutScheduleSpec) DeepCopyInto ¶ added in v0.7.0
func (in *RolloutScheduleSpec) DeepCopyInto(out *RolloutScheduleSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutScheduleStatus ¶ added in v0.7.0
type RolloutScheduleStatus struct {
// Active indicates if the schedule is currently active (any rule matches).
// +optional
Active bool `json:"active,omitempty"`
// ActiveRules is a list of rule names that are currently active.
// +optional
ActiveRules []string `json:"activeRules,omitempty"`
// NextTransition is the timestamp when the active state will next change.
// +optional
NextTransition *metav1.Time `json:"nextTransition,omitempty"`
// ManagedGates is a list of RolloutGate names being managed by this schedule.
// +optional
ManagedGates []string `json:"managedGates,omitempty"`
// MatchingRollouts is the count of rollouts currently matched by the selector.
// +optional
MatchingRollouts int `json:"matchingRollouts,omitempty"`
// Conditions represents the current state of the schedule.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
RolloutScheduleStatus defines the observed state of RolloutSchedule.
func (*RolloutScheduleStatus) DeepCopy ¶ added in v0.7.0
func (in *RolloutScheduleStatus) DeepCopy() *RolloutScheduleStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutScheduleStatus.
func (*RolloutScheduleStatus) DeepCopyInto ¶ added in v0.7.0
func (in *RolloutScheduleStatus) DeepCopyInto(out *RolloutScheduleStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutSpec ¶
type RolloutSpec struct {
// ReleasesImagePolicy specifies the ImagePolicy that provides available releases
// +kubebuilder:validation:Required
// +required
ReleasesImagePolicy corev1.LocalObjectReference `json:"releasesImagePolicy,omitempty"`
// WantedVersion specifies a specific version to deploy, overriding the automatic version selection
// +optional
WantedVersion *string `json:"wantedVersion,omitempty"`
// VersionHistoryLimit defines the maximum number of entries to keep in the deployment history
// +kubebuilder:validation:Minimum=1
// +kubebuilder:default=10
// +optional
VersionHistoryLimit *int32 `json:"versionHistoryLimit,omitempty"`
// AvailableReleasesRetentionDays defines how many days of available releases to keep based on creation timestamp
// When history is full, releases older than this retention period may be removed.
// Defaults to 7 days if not specified.
// +kubebuilder:validation:Minimum=1
// +kubebuilder:default=7
// +optional
AvailableReleasesRetentionDays *int32 `json:"availableReleasesRetentionDays,omitempty"`
// AvailableReleasesMinCount defines the minimum number of available releases to always keep
// When history is full, at least this many releases will be retained regardless of other criteria.
// Defaults to 30 if not specified.
// +kubebuilder:validation:Minimum=1
// +kubebuilder:default=30
// +optional
AvailableReleasesMinCount *int32 `json:"availableReleasesMinCount,omitempty"`
// BakeTime specifies how long to wait after bake starts before marking as successful
// If no errors happen within the bake time, the rollout is baked successfully.
// If not specified, no bake time is enforced.
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$"
// +optional
BakeTime *metav1.Duration `json:"bakeTime,omitempty"`
// DeployTimeout specifies the maximum time to wait for bake to start before marking as failed
// If bake doesn't start within deployTimeout (i.e., health checks don't become healthy),
// the rollout should be marked as failed.
// If not specified, the rollout will wait indefinitely for bake to start.
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:Pattern="^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$"
// +optional
DeployTimeout *metav1.Duration `json:"deployTimeout,omitempty"`
// HealthCheckSelector specifies how to select HealthChecks for this rollout
// +optional
HealthCheckSelector *HealthCheckSelectorConfig `json:"healthCheckSelector,omitempty"`
}
RolloutSpec defines the desired state of Rollout.
func (*RolloutSpec) DeepCopy ¶
func (in *RolloutSpec) DeepCopy() *RolloutSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutSpec.
func (*RolloutSpec) DeepCopyInto ¶
func (in *RolloutSpec) DeepCopyInto(out *RolloutSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RolloutSpec) ValidateHealthCheckSelector ¶
func (rs *RolloutSpec) ValidateHealthCheckSelector() error
ValidateHealthCheckSelector validates the health check selector configuration. Returns an error if the configuration is invalid.
type RolloutStatus ¶
type RolloutStatus struct {
// Conditions represents the current state of the rollout process.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`
// History tracks the deployment history of this Rollout.
// Each entry contains the version deployed and the timestamp of the deployment.
// +optional
History []DeploymentHistoryEntry `json:"history,omitempty"`
// AvailableReleases is a list of all releases available in the releases repository.
// +optional
AvailableReleases []VersionInfo `json:"availableReleases,omitempty"`
// ReleaseCandidates is a list of releases that are candidates for the next deployment.
// These are filtered from AvailableReleases based on deployment history and version ordering.
// +optional
ReleaseCandidates []VersionInfo `json:"releaseCandidates,omitempty"`
// GatedReleaseCandidates is a list of release candidates that have passed through all gates.
// This shows which versions are actually available for deployment after gate evaluation.
// +optional
GatedReleaseCandidates []VersionInfo `json:"gatedReleaseCandidates,omitempty"`
// Gates summarizes the status of each gate relevant to this rollout.
// +optional
Gates []RolloutGateStatusSummary `json:"gates,omitempty"`
// ArtifactType is the media/artifact type of the image extracted from the manifest.
// This includes OCI artifact types, container image types, and other media types.
// This field is set once for the entire rollout based on the latest available release.
// +optional
ArtifactType *string `json:"artifactType,omitempty"`
// Source is the source information extracted from OCI annotations.
// This typically contains the repository URL or source code location.
// This field is set once for the entire rollout based on the latest available release.
// +optional
Source *string `json:"source,omitempty"`
// Title is the title of the image extracted from OCI annotations.
// This field is set once for the entire rollout based on the latest available release.
// +optional
Title *string `json:"title,omitempty"`
// Description is the description of the image extracted from OCI annotations.
// This field is set once for the entire rollout based on the latest available release.
// +optional
Description *string `json:"description,omitempty"`
}
RolloutStatus defines the observed state of Rollout.
func (*RolloutStatus) DeepCopy ¶
func (in *RolloutStatus) DeepCopy() *RolloutStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RolloutStatus.
func (*RolloutStatus) DeepCopyInto ¶
func (in *RolloutStatus) DeepCopyInto(out *RolloutStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScheduleRule ¶ added in v0.7.0
type ScheduleRule struct {
// Name is an optional identifier for this rule
// +optional
Name string `json:"name,omitempty"`
// TimeRange restricts the rule to specific times of day
// +optional
TimeRange *TimeRange `json:"timeRange,omitempty"`
// DaysOfWeek restricts the rule to specific days of the week
// +optional
DaysOfWeek []DayOfWeek `json:"daysOfWeek,omitempty"`
// DateRange restricts the rule to specific date range
// +optional
DateRange *DateRange `json:"dateRange,omitempty"`
}
ScheduleRule defines a time-based rule. The schedule is active if the current time/date matches this rule.
func (*ScheduleRule) DeepCopy ¶ added in v0.7.0
func (in *ScheduleRule) DeepCopy() *ScheduleRule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScheduleRule.
func (*ScheduleRule) DeepCopyInto ¶ added in v0.7.0
func (in *ScheduleRule) DeepCopyInto(out *ScheduleRule)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TimeRange ¶ added in v0.7.0
type TimeRange struct {
// Start time in HH:MM format (24-hour)
// +kubebuilder:validation:Pattern=`^([01]\d|2[0-3]):[0-5]\d$`
// +required
Start string `json:"start"`
// End time in HH:MM format (24-hour)
// +kubebuilder:validation:Pattern=`^([01]\d|2[0-3]):[0-5]\d$`
// +required
End string `json:"end"`
}
TimeRange represents a time range within a day.
func (*TimeRange) DeepCopy ¶ added in v0.7.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeRange.
func (*TimeRange) DeepCopyInto ¶ added in v0.7.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TriggeredByInfo ¶ added in v0.6.0
type TriggeredByInfo struct {
// Kind indicates the type of trigger: "User" for manual deployments triggered by a user,
// or "System" for automatic deployments triggered by the rollout controller.
// +kubebuilder:validation:Enum=User;System
// +kubebuilder:validation:Required
// +required
Kind string `json:"kind"`
// Name contains the name of the user or system that triggered the deployment.
// For user-triggered deployments, this is extracted from the "rollout.kuberik.com/deploy-user" annotation.
// For system-triggered deployments, this is typically "rollout-controller".
// +kubebuilder:validation:Required
// +required
Name string `json:"name"`
}
TriggeredByInfo indicates what triggered a deployment.
func (*TriggeredByInfo) DeepCopy ¶ added in v0.6.0
func (in *TriggeredByInfo) DeepCopy() *TriggeredByInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TriggeredByInfo.
func (*TriggeredByInfo) DeepCopyInto ¶ added in v0.6.0
func (in *TriggeredByInfo) DeepCopyInto(out *TriggeredByInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VersionInfo ¶
type VersionInfo struct {
// Tag is the image tag (e.g., "v1.2.3", "latest").
// +kubebuilder:validation:Required
// +required
Tag string `json:"tag"`
// Digest is the image digest if available from the ImagePolicy.
// +optional
Digest *string `json:"digest,omitempty"`
// Version is the semantic version extracted from OCI annotations if available.
// +optional
Version *string `json:"version,omitempty"`
// Revision is the revision information extracted from OCI annotations if available.
// +optional
Revision *string `json:"revision,omitempty"`
// Created is the creation timestamp extracted from OCI annotations if available.
// +optional
Created *metav1.Time `json:"created,omitempty"`
// Requires maps a contract name to what this release requires of that
// contract, extracted from "com.kuberik.rollout.requires.<contract>" OCI
// annotations. Values are version constraints as defined by
// github.com/Masterminds/semver, applied verbatim — note that a bare version
// is an exact match there, not a floor.
// RolloutDependency uses these to gate this release on the deployed version of
// the Rollout providing each contract.
//
// Bounded because it is populated from image annotations, which are outside
// this controller's trust boundary, and is stored on every release and every
// history entry.
// +kubebuilder:validation:MaxProperties=32
// +optional
Requires map[string]string `json:"requires,omitempty"`
// MetadataUnresolved is true when this release's OCI manifest could not be
// read, so Requires and the version fields say nothing about the image.
// A RolloutDependency blocks such a release rather than reading the absent
// annotations as "declares no requirement", which would open the gate
// whenever the registry is unreachable.
// +optional
MetadataUnresolved bool `json:"metadataUnresolved,omitempty"`
}
VersionInfo represents detailed information about a version.
func (*VersionInfo) DeepCopy ¶
func (in *VersionInfo) DeepCopy() *VersionInfo
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VersionInfo.
func (*VersionInfo) DeepCopyInto ¶
func (in *VersionInfo) DeepCopyInto(out *VersionInfo)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.