Documentation ¶
Index ¶
- Constants
- func CanaryStepString(c CanaryStep) string
- func DurationFromInt(i int) *intstr.IntOrString
- func DurationFromString(s string) *intstr.IntOrString
- type ALBTrafficRouting
- type AmbassadorTrafficRouting
- type AnalysisPhase
- type AnalysisRun
- type AnalysisRunArgument
- type AnalysisRunList
- type AnalysisRunSpec
- type AnalysisRunStatus
- type AnalysisTemplate
- type AnalysisTemplateList
- type AnalysisTemplateSpec
- type AntiAffinity
- type Argument
- type ArgumentValueFrom
- type BlueGreenStatus
- type BlueGreenStrategy
- type CanaryStatus
- type CanaryStep
- type CanaryStrategy
- type ClusterAnalysisTemplate
- type ClusterAnalysisTemplateList
- type DatadogMetric
- type DurationString
- type FieldRef
- type IstioDestinationRule
- type IstioTrafficRouting
- type IstioVirtualService
- type JobMetric
- type KayentaMetric
- type KayentaScope
- type KayentaThreshold
- type Measurement
- type Metric
- type MetricProvider
- type MetricResult
- type NewRelicMetric
- type NginxTrafficRouting
- type ObjectRef
- type PauseCondition
- type PauseReason
- type PodTemplateMetadata
- type PreferredDuringSchedulingIgnoredDuringExecution
- type PrometheusMetric
- type ReplicaSetSpecRef
- type RequiredDuringSchedulingIgnoredDuringExecution
- type Rollout
- type RolloutAnalysis
- type RolloutAnalysisBackground
- type RolloutAnalysisRunStatus
- type RolloutAnalysisTemplate
- type RolloutCondition
- type RolloutConditionType
- type RolloutExperimentStep
- type RolloutExperimentStepAnalysisTemplateRef
- type RolloutExperimentTemplate
- type RolloutList
- type RolloutPause
- type RolloutSpec
- type RolloutStatus
- type RolloutStrategy
- type RolloutTrafficRouting
- type SMITrafficRouting
- type ScopeDetail
- type SecretKeyRef
- type SetCanaryScale
- type ValueFrom
- type ValueFromPodTemplateHash
- type WavefrontMetric
- type WebMetric
- type WebMetricHeader
Constants ¶
const ( // DefaultRolloutUniqueLabelKey is the default key of the selector that is added // to existing ReplicaSets (and label key that is added to its pods) to prevent the existing ReplicaSets // to select new pods (and old pods being select by new ReplicaSet). DefaultRolloutUniqueLabelKey string = "rollouts-pod-template-hash" // DefaultReplicaSetScaleDownDeadlineAnnotationKey is the default key attached to an old stable ReplicaSet after // the rollout transitioned to a new version. It contains the time when the controller can scale down the RS. DefaultReplicaSetScaleDownDeadlineAnnotationKey = "scale-down-deadline" // ManagedByRolloutKey is the key used to indicate which rollout(s) manage a resource but doesn't own it. ManagedByRolloutsKey = "argo-rollouts.argoproj.io/managed-by-rollouts" // DefaultReplicaSetRestartAnnotationKey indicates that the ReplicaSet with this annotation was restarted at the // time listed in the value DefaultReplicaSetRestartAnnotationKey = "argo-rollouts.argoproj.io/restarted-after" // LabelKeyControllerInstanceID is the label the controller uses for the rollout, experiment, analysis segregation // between controllers. Controllers will only operate on objects with the same instanceID as the controller. LabelKeyControllerInstanceID = "argo-rollouts.argoproj.io/controller-instance-id" )
const ( // RolloutTypeLabel indicates how the rollout created the analysisRun RolloutTypeLabel = "rollout-type" // RolloutTypeStepLabel indicates that the analysisRun was created as a canary step RolloutTypeStepLabel = "Step" // RolloutTypeBackgroundRunLabel indicates that the analysisRun was created in Background to an execution RolloutTypeBackgroundRunLabel = "Background" // RolloutTypePrePromotionLabel indicates that the analysisRun was created before the active service promotion RolloutTypePrePromotionLabel = "PrePromotion" // RolloutTypePostPromotionLabel indicates that the analysisRun was created after the active service promotion RolloutTypePostPromotionLabel = "PostPromotion" // RolloutCanaryStepIndexLabel indicates which step created this analysisRun RolloutCanaryStepIndexLabel = "step-index" )
Variables ¶
This section is empty.
Functions ¶
func CanaryStepString ¶
func CanaryStepString(c CanaryStep) string
CanaryStepString returns a string representation of a canary step
func DurationFromInt ¶
func DurationFromInt(i int) *intstr.IntOrString
DurationFromInt creates duration in seconds from int value
func DurationFromString ¶
func DurationFromString(s string) *intstr.IntOrString
DurationFromString creates duration from string value must be a string representation of an int with optional time unit (see time.ParseDuration)
Types ¶
type ALBTrafficRouting ¶
type ALBTrafficRouting struct { // Ingress refers to the name of an `Ingress` resource in the same namespace as the `Rollout` Ingress string `json:"ingress" protobuf:"bytes,1,opt,name=ingress"` // ServicePort refers to the port that the Ingress action should route traffic to ServicePort int32 `json:"servicePort" protobuf:"varint,2,opt,name=servicePort"` // RootService references the service in the ingress to the controller should add the action to RootService string `json:"rootService,omitempty" protobuf:"bytes,3,opt,name=rootService"` // AnnotationPrefix has to match the configured annotation prefix on the alb ingress controller // +optional AnnotationPrefix string `json:"annotationPrefix,omitempty" protobuf:"bytes,4,opt,name=annotationPrefix"` }
ALBTrafficRouting configuration for ALB ingress controller to control traffic routing
type AmbassadorTrafficRouting ¶
type AmbassadorTrafficRouting struct { // Mappings refer to the name of the Ambassador Mappings used to route traffic to the // service Mappings []string `json:"mappings" protobuf:"bytes,1,rep,name=mappings"` }
AmbassadorTrafficRouting defines the configuration required to use Ambassador as traffic router
type AnalysisPhase ¶
type AnalysisPhase string
AnalysisPhase is the overall phase of an AnalysisRun, MetricResult, or Measurement
const ( AnalysisPhasePending AnalysisPhase = "Pending" AnalysisPhaseRunning AnalysisPhase = "Running" AnalysisPhaseSuccessful AnalysisPhase = "Successful" AnalysisPhaseFailed AnalysisPhase = "Failed" AnalysisPhaseError AnalysisPhase = "Error" AnalysisPhaseInconclusive AnalysisPhase = "Inconclusive" )
Possible AnalysisPhase values
func (AnalysisPhase) Completed ¶
func (as AnalysisPhase) Completed() bool
Completed returns whether or not the analysis status is considered completed
type AnalysisRun ¶
type AnalysisRun struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` Spec AnalysisRunSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` Status AnalysisRunStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` }
AnalysisRun is an instantiation of an AnalysisTemplate
type AnalysisRunArgument ¶
type AnalysisRunArgument struct { // Name argument name Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // Value a hardcoded value for the argument. This field is a one of field with valueFrom Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` // ValueFrom A reference to where the value is stored. This field is a one of field with valueFrom ValueFrom *ArgumentValueFrom `json:"valueFrom,omitempty" protobuf:"bytes,3,opt,name=valueFrom"` }
AnalysisRunArgument argument to add to analysisRun
type AnalysisRunList ¶
type AnalysisRunList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` Items []AnalysisRun `json:"items" protobuf:"bytes,2,rep,name=items"` }
AnalysisRunList is a list of AnalysisTemplate resources
type AnalysisRunSpec ¶
type AnalysisRunSpec struct { // Metrics contains the list of metrics to query as part of an analysis run Metrics []Metric `json:"metrics" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=metrics"` // Args are the list of arguments used in this run Args []Argument `json:"args,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=args"` // Terminate is used to prematurely stop the run (e.g. rollout completed and analysis is no longer desired) Terminate bool `json:"terminate,omitempty" protobuf:"varint,3,opt,name=terminate"` }
AnalysisRunSpec is the spec for a AnalysisRun resource
type AnalysisRunStatus ¶
type AnalysisRunStatus struct { // Phase is the status of the analysis run Phase AnalysisPhase `json:"phase" protobuf:"bytes,1,opt,name=phase,casttype=AnalysisPhase"` // Message is a message explaining current status Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` // MetricResults contains the metrics collected during the run MetricResults []MetricResult `json:"metricResults,omitempty" protobuf:"bytes,3,rep,name=metricResults"` // StartedAt indicates when the analysisRun first started StartedAt *metav1.Time `json:"startedAt,omitempty" protobuf:"bytes,4,opt,name=startedAt"` }
AnalysisRunStatus is the status for a AnalysisRun resource
type AnalysisTemplate ¶
type AnalysisTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` Spec AnalysisTemplateSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` }
AnalysisTemplate holds the template for performing canary analysis
type AnalysisTemplateList ¶
type AnalysisTemplateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` Items []AnalysisTemplate `json:"items" protobuf:"bytes,2,rep,name=items"` }
AnalysisTemplateList is a list of AnalysisTemplate resources
type AnalysisTemplateSpec ¶
type AnalysisTemplateSpec struct { // Metrics contains the list of metrics to query as part of an analysis run Metrics []Metric `json:"metrics" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=metrics"` // Args are the list of arguments to the template Args []Argument `json:"args,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=args"` }
AnalysisTemplateSpec is the specification for a AnalysisTemplate resource
type AntiAffinity ¶
type AntiAffinity struct { // +optional PreferredDuringSchedulingIgnoredDuringExecution *PreferredDuringSchedulingIgnoredDuringExecution `` /* 140-byte string literal not displayed */ // +optional RequiredDuringSchedulingIgnoredDuringExecution *RequiredDuringSchedulingIgnoredDuringExecution `` /* 138-byte string literal not displayed */ }
AntiAffinity defines which inter-pod scheduling rule to use for anti-affinity injection
type Argument ¶
type Argument struct { // Name is the name of the argument Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // Value is the value of the argument Value *string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` // ValueFrom is a reference to where a secret is stored. This field is one of the fields with valueFrom ValueFrom *ValueFrom `json:"valueFrom,omitempty" protobuf:"bytes,3,opt,name=valueFrom"` }
Argument is an argument to an AnalysisRun
type ArgumentValueFrom ¶
type ArgumentValueFrom struct { // PodTemplateHashValue gets the value from one of the children ReplicaSet's Pod Template Hash PodTemplateHashValue *ValueFromPodTemplateHash `json:"podTemplateHashValue,omitempty" protobuf:"bytes,1,opt,name=podTemplateHashValue,casttype=ValueFromPodTemplateHash"` //FieldRef FieldRef *FieldRef `json:"fieldRef,omitempty" protobuf:"bytes,2,opt,name=fieldRef"` }
ArgumentValueFrom defines references to fields within resources to grab for the value (i.e. Pod Template Hash)
type BlueGreenStatus ¶
type BlueGreenStatus struct { // PreviewSelector indicates which replicas set the preview service is serving traffic to // +optional PreviewSelector string `json:"previewSelector,omitempty" protobuf:"bytes,1,opt,name=previewSelector"` // ActiveSelector indicates which replicas set the active service is serving traffic to // +optional ActiveSelector string `json:"activeSelector,omitempty" protobuf:"bytes,2,opt,name=activeSelector"` // ScaleUpPreviewCheckPoint indicates that the Replicaset receiving traffic from the preview service is ready to be scaled up after the rollout is unpaused // +optional ScaleUpPreviewCheckPoint bool `json:"scaleUpPreviewCheckPoint,omitempty" protobuf:"varint,3,opt,name=scaleUpPreviewCheckPoint"` // PrePromotionAnalysisRunStatus indicates the status of the current prepromotion analysis run PrePromotionAnalysisRunStatus *RolloutAnalysisRunStatus `json:"prePromotionAnalysisRunStatus,omitempty" protobuf:"bytes,4,opt,name=prePromotionAnalysisRunStatus"` // PostPromotionAnalysisRunStatus indicates the status of the current post promotion analysis run PostPromotionAnalysisRunStatus *RolloutAnalysisRunStatus `json:"postPromotionAnalysisRunStatus,omitempty" protobuf:"bytes,5,opt,name=postPromotionAnalysisRunStatus"` }
BlueGreenStatus status fields that only pertain to the blueGreen rollout
type BlueGreenStrategy ¶
type BlueGreenStrategy struct { // Name of the service that the rollout modifies as the active service. ActiveService string `json:"activeService" protobuf:"bytes,1,opt,name=activeService"` // Name of the service that the rollout modifies as the preview service. // +optional PreviewService string `json:"previewService,omitempty" protobuf:"bytes,2,opt,name=previewService"` // PreviewReplicaCount is the number of replicas to run for the preview stack before the // switchover. Once the rollout is resumed the desired replicaset will be full scaled up before the switch occurs // +optional PreviewReplicaCount *int32 `json:"previewReplicaCount,omitempty" protobuf:"varint,3,opt,name=previewReplicaCount"` // AutoPromotionEnabled indicates if the rollout should automatically promote the new ReplicaSet // to the active service or enter a paused state. If not specified, the default value is true. // +optional AutoPromotionEnabled *bool `json:"autoPromotionEnabled,omitempty" protobuf:"varint,4,opt,name=autoPromotionEnabled"` // AutoPromotionSeconds is a duration in seconds in which to delay auto-promotion (default: 0). // The countdown begins after the preview ReplicaSet have reached full availability. // This option is ignored if autoPromotionEnabled is set to false. // +optional AutoPromotionSeconds int32 `json:"autoPromotionSeconds,omitempty" protobuf:"varint,5,opt,name=autoPromotionSeconds"` // Defaults to 25% of total replicas. // +optional MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,6,opt,name=maxUnavailable"` // ScaleDownDelaySeconds adds a delay before scaling down the previous replicaset. // If omitted, the Rollout waits 30 seconds before scaling down the previous ReplicaSet. // A minimum of 30 seconds is recommended to ensure IP table propagation across the nodes in // a cluster. See https://github.com/argoproj/argo-rollouts/issues/19#issuecomment-476329960 for // more information // +optional ScaleDownDelaySeconds *int32 `json:"scaleDownDelaySeconds,omitempty" protobuf:"varint,7,opt,name=scaleDownDelaySeconds"` // ScaleDownDelayRevisionLimit limits the number of old RS that can run at one time before getting scaled down // +optional ScaleDownDelayRevisionLimit *int32 `json:"scaleDownDelayRevisionLimit,omitempty" protobuf:"varint,8,opt,name=scaleDownDelayRevisionLimit"` // PrePromotionAnalysis configuration to run analysis before a selector switch PrePromotionAnalysis *RolloutAnalysis `json:"prePromotionAnalysis,omitempty" protobuf:"bytes,9,opt,name=prePromotionAnalysis"` // AntiAffinity enables anti-affinity rules for Blue Green deployment // +optional AntiAffinity *AntiAffinity `json:"antiAffinity,omitempty" protobuf:"bytes,10,opt,name=antiAffinity"` // PostPromotionAnalysis configuration to run analysis after a selector switch PostPromotionAnalysis *RolloutAnalysis `json:"postPromotionAnalysis,omitempty" protobuf:"bytes,11,opt,name=postPromotionAnalysis"` // PreviewMetadata specify labels and annotations which will be attached to the preview pods for // the duration which they act as a preview pod, and will be removed after PreviewMetadata *PodTemplateMetadata `json:"previewMetadata,omitempty" protobuf:"bytes,12,opt,name=previewMetadata"` // ActiveMetadata specify labels and annotations which will be attached to the active pods for // the duration which they act as a active pod, and will be removed after ActiveMetadata *PodTemplateMetadata `json:"activeMetadata,omitempty" protobuf:"bytes,13,opt,name=activeMetadata"` }
BlueGreenStrategy defines parameters for Blue Green deployment
type CanaryStatus ¶
type CanaryStatus struct { // CurrentStepAnalysisRunStatus indicates the status of the current step analysis run CurrentStepAnalysisRunStatus *RolloutAnalysisRunStatus `json:"currentStepAnalysisRunStatus,omitempty" protobuf:"bytes,1,opt,name=currentStepAnalysisRunStatus"` // CurrentBackgroundAnalysisRunStatus indicates the status of the current background analysis run CurrentBackgroundAnalysisRunStatus *RolloutAnalysisRunStatus `json:"currentBackgroundAnalysisRunStatus,omitempty" protobuf:"bytes,2,opt,name=currentBackgroundAnalysisRunStatus"` // CurrentExperiment indicates the running experiment CurrentExperiment string `json:"currentExperiment,omitempty" protobuf:"bytes,3,opt,name=currentExperiment"` }
CanaryStatus status fields that only pertain to the canary rollout
type CanaryStep ¶
type CanaryStep struct { // SetWeight sets what percentage of the newRS should receive SetWeight *int32 `json:"setWeight,omitempty" protobuf:"varint,1,opt,name=setWeight"` // Pause freezes the rollout by setting spec.Paused to true. // A Rollout will resume when spec.Paused is reset to false. // +optional Pause *RolloutPause `json:"pause,omitempty" protobuf:"bytes,2,opt,name=pause"` // Experiment defines the experiment object that should be created Experiment *RolloutExperimentStep `json:"experiment,omitempty" protobuf:"bytes,3,opt,name=experiment"` // Analysis defines the AnalysisRun that will run for a step Analysis *RolloutAnalysis `json:"analysis,omitempty" protobuf:"bytes,4,opt,name=analysis"` // SetCanaryScale defines how to scale the newRS without changing traffic weight // +optional SetCanaryScale *SetCanaryScale `json:"setCanaryScale,omitempty" protobuf:"bytes,5,opt,name=setCanaryScale"` }
CanaryStep defines a step of a canary deployment.
type CanaryStrategy ¶
type CanaryStrategy struct { // CanaryService holds the name of a service which selects pods with canary version and don't select any pods with stable version. // +optional CanaryService string `json:"canaryService,omitempty" protobuf:"bytes,1,opt,name=canaryService"` // StableService holds the name of a service which selects pods with stable version and don't select any pods with canary version. // +optional StableService string `json:"stableService,omitempty" protobuf:"bytes,2,opt,name=stableService"` // Steps define the order of phases to execute the canary deployment // +optional Steps []CanaryStep `json:"steps,omitempty" protobuf:"bytes,3,rep,name=steps"` // TrafficRouting hosts all the supported service meshes supported to enable more fine-grained traffic routing TrafficRouting *RolloutTrafficRouting `json:"trafficRouting,omitempty" protobuf:"bytes,4,opt,name=trafficRouting"` // Value can be an absolute number (ex: 5) or a percentage of total pods at the start of update (ex: 10%). // Absolute number is calculated from percentage by rounding down. // This can not be 0 if MaxSurge is 0. // By default, a fixed value of 25% is used. // Example: when this is set to 30%, the old RC can be scaled down by 30% // immediately when the rolling update starts. Once new pods are ready, old RC // can be scaled down further, followed by scaling up the new RC, ensuring // that at least 70% of original number of pods are available at all times // during the update. // +optional MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,5,opt,name=maxUnavailable"` // MaxSurge The maximum number of pods that can be scheduled above the original number of // pods. // Value can be an absolute number (ex: 5) or a percentage of total pods at // the start of the update (ex: 10%). This can not be 0 if MaxUnavailable is 0. // Absolute number is calculated from percentage by rounding up. // By default, a value of 25% is used. // Example: when this is set to 30%, the new RC can be scaled up by 30% // immediately when the rolling update starts. Once old pods have been killed, // new RC can be scaled up further, ensuring that total number of pods running // at any time during the update is at most 130% of original pods. // +optional MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,6,opt,name=maxSurge"` // Analysis runs a separate analysisRun while all the steps execute. This is intended to be a continuous validation of the new ReplicaSet Analysis *RolloutAnalysisBackground `json:"analysis,omitempty" protobuf:"bytes,7,opt,name=analysis"` // AntiAffinity enables anti-affinity rules for Canary deployment // +optional AntiAffinity *AntiAffinity `json:"antiAffinity,omitempty" protobuf:"bytes,8,opt,name=antiAffinity"` // CanaryMetadata specify labels and annotations which will be attached to the canary pods for // the duration which they act as a canary, and will be removed after CanaryMetadata *PodTemplateMetadata `json:"canaryMetadata,omitempty" protobuf:"bytes,9,opt,name=canaryMetadata"` // StableMetadata specify labels and annotations which will be attached to the stable pods for // the duration which they act as a canary, and will be removed after StableMetadata *PodTemplateMetadata `json:"stableMetadata,omitempty" protobuf:"bytes,10,opt,name=stableMetadata"` // ScaleDownDelaySeconds adds a delay before scaling down the previous ReplicaSet when the // canary strategy is used with traffic routing (default 30 seconds). A delay in scaling down // the previous ReplicaSet is needed after switching the stable service selector to point to // the new ReplicaSet, in order to give time for traffic providers to re-target the new pods. // This value is ignored with basic, replica-weighted canary without traffic routing. // +optional ScaleDownDelaySeconds *int32 `json:"scaleDownDelaySeconds,omitempty" protobuf:"varint,11,opt,name=scaleDownDelaySeconds"` // ScaleDownDelayRevisionLimit limits the number of old RS that can run at one time before getting scaled down // +optional ScaleDownDelayRevisionLimit *int32 `json:"scaleDownDelayRevisionLimit,omitempty" protobuf:"varint,12,opt,name=scaleDownDelayRevisionLimit"` }
CanaryStrategy defines parameters for a Replica Based Canary
type ClusterAnalysisTemplate ¶
type ClusterAnalysisTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` Spec AnalysisTemplateSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` }
ClusterAnalysisTemplate holds the template for performing canary analysis
type ClusterAnalysisTemplateList ¶
type ClusterAnalysisTemplateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` Items []ClusterAnalysisTemplate `json:"items" protobuf:"bytes,2,rep,name=items"` }
AnalysisTemplateList is a list of AnalysisTemplate resources
type DatadogMetric ¶
type DatadogMetric struct { Interval DurationString `json:"interval,omitempty" protobuf:"bytes,1,opt,name=interval,casttype=DurationString"` Query string `json:"query" protobuf:"bytes,2,opt,name=query"` }
type DurationString ¶
type DurationString string
DurationString is a string representing a duration (e.g. 30s, 5m, 1h)
type FieldRef ¶
type FieldRef struct { // Required: Path of the field to select in the specified API version FieldPath string `json:"fieldPath" protobuf:"bytes,1,opt,name=fieldPath"` }
type IstioDestinationRule ¶
type IstioDestinationRule struct { // Name holds the name of the DestinationRule Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // CanarySubsetName is the subset name to modify labels with canary ReplicaSet pod template hash value CanarySubsetName string `json:"canarySubsetName" protobuf:"bytes,2,opt,name=canarySubsetName"` // StableSubsetName is the subset name to modify labels with stable ReplicaSet pod template hash value StableSubsetName string `json:"stableSubsetName" protobuf:"bytes,3,opt,name=stableSubsetName"` }
IstioDestinationRule is a reference to an Istio DestinationRule to modify and shape traffic
type IstioTrafficRouting ¶
type IstioTrafficRouting struct { // VirtualService references an Istio VirtualService to modify to shape traffic VirtualService IstioVirtualService `json:"virtualService" protobuf:"bytes,1,opt,name=virtualService"` // DestinationRule references an Istio DestinationRule to modify to shape traffic DestinationRule *IstioDestinationRule `json:"destinationRule,omitempty" protobuf:"bytes,2,opt,name=destinationRule"` }
IstioTrafficRouting configuration for Istio service mesh to enable fine grain configuration
type IstioVirtualService ¶
type IstioVirtualService struct { // Name holds the name of the VirtualService Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // Routes list of routes within VirtualService to edit Routes []string `json:"routes" protobuf:"bytes,2,rep,name=routes"` }
IstioVirtualService holds information on the virtual service the rollout needs to modify
type JobMetric ¶
type JobMetric struct { Metadata metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` Spec batchv1.JobSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` }
JobMetric defines a job to run which acts as a metric
type KayentaMetric ¶
type KayentaMetric struct { Address string `json:"address" protobuf:"bytes,1,opt,name=address"` Application string `json:"application" protobuf:"bytes,2,opt,name=application"` CanaryConfigName string `json:"canaryConfigName" protobuf:"bytes,3,opt,name=canaryConfigName"` MetricsAccountName string `json:"metricsAccountName" protobuf:"bytes,4,opt,name=metricsAccountName"` ConfigurationAccountName string `json:"configurationAccountName" protobuf:"bytes,5,opt,name=configurationAccountName"` StorageAccountName string `json:"storageAccountName" protobuf:"bytes,6,opt,name=storageAccountName"` Threshold KayentaThreshold `json:"threshold" protobuf:"bytes,7,opt,name=threshold"` Scopes []KayentaScope `json:"scopes" protobuf:"bytes,8,rep,name=scopes"` }
type KayentaScope ¶
type KayentaScope struct { Name string `json:"name" protobuf:"bytes,1,opt,name=name"` ControlScope ScopeDetail `json:"controlScope" protobuf:"bytes,2,opt,name=controlScope"` ExperimentScope ScopeDetail `json:"experimentScope" protobuf:"bytes,3,opt,name=experimentScope"` }
type KayentaThreshold ¶
type Measurement ¶
type Measurement struct { // Phase is the status of this single measurement Phase AnalysisPhase `json:"phase" protobuf:"bytes,1,opt,name=phase,casttype=AnalysisPhase"` // Message contains a message describing current condition (e.g. error messages) Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` // StartedAt is the timestamp in which this measurement started to be measured StartedAt *metav1.Time `json:"startedAt,omitempty" protobuf:"bytes,3,opt,name=startedAt"` // FinishedAt is the timestamp in which this measurement completed and value was collected FinishedAt *metav1.Time `json:"finishedAt,omitempty" protobuf:"bytes,4,opt,name=finishedAt"` // Value is the measured value of the metric Value string `json:"value,omitempty" protobuf:"bytes,5,opt,name=value"` // Metadata stores additional metadata about this metric result, used by the different providers // (e.g. kayenta run ID, job name) Metadata map[string]string `json:"metadata,omitempty" protobuf:"bytes,6,rep,name=metadata"` // ResumeAt is the timestamp when the analysisRun should try to resume the measurement ResumeAt *metav1.Time `json:"resumeAt,omitempty" protobuf:"bytes,7,opt,name=resumeAt"` }
Measurement is a point in time result value of a single metric, and the time it was measured
type Metric ¶
type Metric struct { // Name is the name of the metric Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // Interval defines an interval string (e.g. 30s, 5m, 1h) between each measurement. // If omitted, will perform a single measurement Interval DurationString `json:"interval,omitempty" protobuf:"bytes,2,opt,name=interval,casttype=DurationString"` // InitialDelay how long the AnalysisRun should wait before starting this metric InitialDelay DurationString `json:"initialDelay,omitempty" protobuf:"bytes,3,opt,name=initialDelay,casttype=DurationString"` // Count is the number of times to run the measurement. If both interval and count are omitted, // the effective count is 1. If only interval is specified, metric runs indefinitely. // If count > 1, interval must be specified. Count *intstrutil.IntOrString `json:"count,omitempty" protobuf:"bytes,4,opt,name=count"` // SuccessCondition is an expression which determines if a measurement is considered successful // Expression is a goevaluate expression. The keyword `result` is a variable reference to the // value of measurement. Results can be both structured data or primitive. // Examples: // result > 10 // (result.requests_made * result.requests_succeeded / 100) >= 90 SuccessCondition string `json:"successCondition,omitempty" protobuf:"bytes,5,opt,name=successCondition"` // FailureCondition is an expression which determines if a measurement is considered failed // If both success and failure conditions are specified, and the measurement does not fall into // either condition, the measurement is considered Inconclusive FailureCondition string `json:"failureCondition,omitempty" protobuf:"bytes,6,opt,name=failureCondition"` // FailureLimit is the maximum number of times the measurement is allowed to fail, before the // entire metric is considered Failed (default: 0) FailureLimit *intstrutil.IntOrString `json:"failureLimit,omitempty" protobuf:"bytes,7,opt,name=failureLimit"` // InconclusiveLimit is the maximum number of times the measurement is allowed to measure // Inconclusive, before the entire metric is considered Inconclusive (default: 0) InconclusiveLimit *intstrutil.IntOrString `json:"inconclusiveLimit,omitempty" protobuf:"bytes,8,opt,name=inconclusiveLimit"` // ConsecutiveErrorLimit is the maximum number of times the measurement is allowed to error in // succession, before the metric is considered error (default: 4) ConsecutiveErrorLimit *intstrutil.IntOrString `json:"consecutiveErrorLimit,omitempty" protobuf:"bytes,9,opt,name=consecutiveErrorLimit"` // Provider configuration to the external system to use to verify the analysis Provider MetricProvider `json:"provider" protobuf:"bytes,10,opt,name=provider"` }
Metric defines a metric in which to perform analysis
func (*Metric) EffectiveCount ¶
func (m *Metric) EffectiveCount() *intstrutil.IntOrString
EffectiveCount is the effective count based on whether or not count/interval is specified If neither count or interval is specified, the effective count is 1 If only interval is specified, metric runs indefinitely and there is no effective count (nil) Otherwise, it is the user specified value
type MetricProvider ¶
type MetricProvider struct { // Prometheus specifies the prometheus metric to query Prometheus *PrometheusMetric `json:"prometheus,omitempty" protobuf:"bytes,1,opt,name=prometheus"` // Kayenta specifies a Kayenta metric Kayenta *KayentaMetric `json:"kayenta,omitempty" protobuf:"bytes,2,opt,name=kayenta"` // Web specifies a generic HTTP web metric Web *WebMetric `json:"web,omitempty" protobuf:"bytes,3,opt,name=web"` // Datadog specifies a datadog metric to query Datadog *DatadogMetric `json:"datadog,omitempty" protobuf:"bytes,4,opt,name=datadog"` // Wavefront specifies the wavefront metric to query Wavefront *WavefrontMetric `json:"wavefront,omitempty" protobuf:"bytes,5,opt,name=wavefront"` // NewRelic specifies the newrelic metric to query NewRelic *NewRelicMetric `json:"newRelic,omitempty" protobuf:"bytes,6,opt,name=newRelic"` // Job specifies the job metric run Job *JobMetric `json:"job,omitempty" protobuf:"bytes,7,opt,name=job"` }
MetricProvider which external system to use to verify the analysis Only one of the fields in this struct should be non-nil
type MetricResult ¶
type MetricResult struct { // Name is the name of the metric Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // Phase is the overall aggregate status of the metric Phase AnalysisPhase `json:"phase" protobuf:"bytes,2,opt,name=phase,casttype=AnalysisPhase"` // Measurements holds the most recent measurements collected for the metric Measurements []Measurement `json:"measurements,omitempty" protobuf:"bytes,3,rep,name=measurements"` // Message contains a message describing current condition (e.g. error messages) Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` // Count is the number of times the metric was measured without Error // This is equal to the sum of Successful, Failed, Inconclusive Count int32 `json:"count,omitempty" protobuf:"varint,5,opt,name=count"` // Successful is the number of times the metric was measured Successful Successful int32 `json:"successful,omitempty" protobuf:"varint,6,opt,name=successful"` // Failed is the number of times the metric was measured Failed Failed int32 `json:"failed,omitempty" protobuf:"varint,7,opt,name=failed"` // Inconclusive is the number of times the metric was measured Inconclusive Inconclusive int32 `json:"inconclusive,omitempty" protobuf:"varint,8,opt,name=inconclusive"` // Error is the number of times an error was encountered during measurement Error int32 `json:"error,omitempty" protobuf:"varint,9,opt,name=error"` // ConsecutiveError is the number of times an error was encountered during measurement in succession // Resets to zero when non-errors are encountered ConsecutiveError int32 `json:"consecutiveError,omitempty" protobuf:"varint,10,opt,name=consecutiveError"` }
MetricResult contain a list of the most recent measurements for a single metric along with counters on how often the measurement
type NewRelicMetric ¶
type NewRelicMetric struct { // Profile is the name of the secret holding NR account configuration Profile string `json:"profile,omitempty" protobuf:"bytes,1,opt,name=profile"` // Query is a raw newrelic NRQL query to perform Query string `json:"query" protobuf:"bytes,2,opt,name=query"` }
NewRelicMetric defines the newrelic query to perform canary analysis
type NginxTrafficRouting ¶
type NginxTrafficRouting struct { // AnnotationPrefix has to match the configured annotation prefix on the nginx ingress controller // +optional AnnotationPrefix string `json:"annotationPrefix,omitempty" protobuf:"bytes,1,opt,name=annotationPrefix"` // StableIngress refers to the name of an `Ingress` resource in the same namespace as the `Rollout` StableIngress string `json:"stableIngress" protobuf:"bytes,2,opt,name=stableIngress"` // +optional AdditionalIngressAnnotations map[string]string `json:"additionalIngressAnnotations,omitempty" protobuf:"bytes,3,rep,name=additionalIngressAnnotations"` }
NginxTrafficRouting configuration for Nginx ingress controller to control traffic routing
type ObjectRef ¶
type ObjectRef struct { // API Version of the referent APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` // Kind of the referent Kind string `json:"kind,omitempty" protobuf:"bytes,2,opt,name=kind"` // Name of the referent Name string `json:"name,omitempty" protobuf:"bytes,3,opt,name=name"` }
ObjectRef holds a references to the Kubernetes object
type PauseCondition ¶
type PauseCondition struct { Reason PauseReason `json:"reason" protobuf:"bytes,1,opt,name=reason,casttype=PauseReason"` StartTime metav1.Time `json:"startTime" protobuf:"bytes,2,opt,name=startTime"` }
PauseCondition the reason for a pause and when it started
type PauseReason ¶
type PauseReason string
PauseReason reasons that the rollout can pause
const ( // PauseReasonInconclusiveAnalysis pauses rollout when rollout has an inconclusive analysis run PauseReasonInconclusiveAnalysis PauseReason = "InconclusiveAnalysisRun" // PauseReasonInconclusiveExperiment pauses rollout when rollout has an inconclusive experiment PauseReasonInconclusiveExperiment PauseReason = "InconclusiveExperiment" // PauseReasonCanaryPauseStep pause rollout for canary pause step PauseReasonCanaryPauseStep PauseReason = "CanaryPauseStep" // PauseReasonBlueGreenPause pause rollout before promoting rollout PauseReasonBlueGreenPause PauseReason = "BlueGreenPause" )
type PodTemplateMetadata ¶
type PodTemplateMetadata struct { // Labels Additional labels to add to the experiment // +optional Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,1,rep,name=labels"` // Annotations additional annotations to add to the experiment // +optional Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,2,rep,name=annotations"` }
PodTemplateMetadata extra labels to add to the template
type PreferredDuringSchedulingIgnoredDuringExecution ¶
type PreferredDuringSchedulingIgnoredDuringExecution struct { // Weight associated with matching the corresponding podAffinityTerm, in the range 1-100. Weight int32 `json:"weight" protobuf:"varint,1,opt,name=weight"` }
PreferredDuringSchedulingIgnoredDuringExecution defines the weight of the anti-affinity injection
type PrometheusMetric ¶
type PrometheusMetric struct { // Address is the HTTP address and port of the prometheus server Address string `json:"address,omitempty" protobuf:"bytes,1,opt,name=address"` // Query is a raw prometheus query to perform Query string `json:"query,omitempty" protobuf:"bytes,2,opt,name=query"` }
PrometheusMetric defines the prometheus query to perform canary analysis
type ReplicaSetSpecRef ¶
type ReplicaSetSpecRef string
ReplicaSetSpecRef defines which RS that the experiment's template will use.
const ( // CanarySpecRef indicates the RS template should be pulled from the newRS's template CanarySpecRef ReplicaSetSpecRef = "canary" // StableSpecRef indicates the RS template should be pulled from the stableRS's template StableSpecRef ReplicaSetSpecRef = "stable" )
type RequiredDuringSchedulingIgnoredDuringExecution ¶
type RequiredDuringSchedulingIgnoredDuringExecution struct{}
RequiredDuringSchedulingIgnoredDuringExecution defines inter-pod scheduling rule to be RequiredDuringSchedulingIgnoredDuringExecution
type Rollout ¶
type Rollout struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` Spec RolloutSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` Status RolloutStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` }
Rollout is a specification for a Rollout resource
type RolloutAnalysis ¶
type RolloutAnalysis struct { //Templates reference to a list of analysis templates to combine for an AnalysisRun Templates []RolloutAnalysisTemplate `json:"templates,omitempty" protobuf:"bytes,1,rep,name=templates"` // Args the arguments that will be added to the AnalysisRuns // +patchMergeKey=name // +patchStrategy=merge Args []AnalysisRunArgument `json:"args,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=args"` }
RolloutAnalysis defines a template that is used to create a analysisRun
type RolloutAnalysisBackground ¶
type RolloutAnalysisBackground struct { RolloutAnalysis `json:",inline" protobuf:"bytes,1,opt,name=rolloutAnalysis"` // StartingStep indicates which step the background analysis should start on // If not listed, controller defaults to 0 StartingStep *int32 `json:"startingStep,omitempty" protobuf:"varint,2,opt,name=startingStep"` }
RolloutAnalysisBackground defines a template that is used to create a background analysisRun
type RolloutAnalysisRunStatus ¶
type RolloutAnalysisRunStatus struct { Name string `json:"name" protobuf:"bytes,1,opt,name=name"` Status AnalysisPhase `json:"status" protobuf:"bytes,2,opt,name=status,casttype=AnalysisPhase"` Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` }
type RolloutAnalysisTemplate ¶
type RolloutAnalysisTemplate struct { //TemplateName name of template to use in AnalysisRun // +optional TemplateName string `json:"templateName" protobuf:"bytes,1,opt,name=templateName"` // Whether to look for the templateName at cluster scope or namespace scope // +optional ClusterScope bool `json:"clusterScope,omitempty" protobuf:"varint,2,opt,name=clusterScope"` }
type RolloutCondition ¶
type RolloutCondition struct { // Type of deployment condition. Type RolloutConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=RolloutConditionType"` // Phase of the condition, one of True, False, Unknown. Status corev1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"` // The last time this condition was updated. LastUpdateTime metav1.Time `json:"lastUpdateTime" protobuf:"bytes,3,opt,name=lastUpdateTime"` // Last time the condition transitioned from one status to another. LastTransitionTime metav1.Time `json:"lastTransitionTime" protobuf:"bytes,4,opt,name=lastTransitionTime"` // The reason for the condition's last transition. Reason string `json:"reason" protobuf:"bytes,5,opt,name=reason"` // A human readable message indicating details about the transition. Message string `json:"message" protobuf:"bytes,6,opt,name=message"` }
RolloutCondition describes the state of a rollout at a certain point.
type RolloutConditionType ¶
type RolloutConditionType string
RolloutConditionType defines the conditions of Rollout
const ( // InvalidSpec means the rollout has an invalid spec and will not progress until // the spec is fixed. InvalidSpec RolloutConditionType = "InvalidSpec" // RolloutAvailable means the rollout is available, ie. the active service is pointing at a // replicaset with the required replicas up and running for at least minReadySeconds. RolloutAvailable RolloutConditionType = "Available" // RolloutProgressing means the rollout is progressing. Progress for a rollout is // considered when a new replica set is created or adopted, when pods scale // up or old pods scale down, or when the services are updated. Progress is not estimated // for paused rollouts. RolloutProgressing RolloutConditionType = "Progressing" // RolloutReplicaFailure ReplicaFailure is added in a deployment when one of its pods // fails to be created or deleted. RolloutReplicaFailure RolloutConditionType = "ReplicaFailure" // RolloutPaused means that rollout is in a paused state. It is still progressing at this point. RolloutPaused RolloutConditionType = "Paused" // RolloutCompleted means that rollout is in a completed state. It is still progressing at this point. RolloutCompleted RolloutConditionType = "Completed" )
These are valid conditions of a rollout.
type RolloutExperimentStep ¶
type RolloutExperimentStep struct { // Templates what templates that should be added to the experiment. Should be non-nil // +patchMergeKey=name // +patchStrategy=merge Templates []RolloutExperimentTemplate `json:"templates" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=templates"` // Duration is a duration string (e.g. 30s, 5m, 1h) that the experiment should run for // +optional Duration DurationString `json:"duration,omitempty" protobuf:"bytes,2,opt,name=duration,casttype=DurationString"` // Analyzes reference which analysis templates to run with the experiment // +patchMergeKey=name // +patchStrategy=merge Analyzes []RolloutExperimentStepAnalysisTemplateRef `json:"analyses,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,3,rep,name=analyses"` //nolint }
RolloutExperimentStep defines a template that is used to create a experiment for a step
type RolloutExperimentStepAnalysisTemplateRef ¶
type RolloutExperimentStepAnalysisTemplateRef struct { // Name is a name for this analysis template invocation Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // TemplateName reference of the AnalysisTemplate name used by the Experiment to create the run TemplateName string `json:"templateName" protobuf:"bytes,2,opt,name=templateName"` // Whether to look for the templateName at cluster scope or namespace scope // +optional ClusterScope bool `json:"clusterScope,omitempty" protobuf:"varint,3,opt,name=clusterScope"` // Args the arguments that will be added to the AnalysisRuns // +patchMergeKey=name // +patchStrategy=merge Args []AnalysisRunArgument `json:"args,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,4,rep,name=args"` // RequiredForCompletion blocks the Experiment from completing until the analysis has completed RequiredForCompletion bool `json:"requiredForCompletion,omitempty" protobuf:"varint,5,opt,name=requiredForCompletion"` }
type RolloutExperimentTemplate ¶
type RolloutExperimentTemplate struct { // Name description of template that passed to the template Name string `json:"name" protobuf:"bytes,1,opt,name=name"` // SpecRef indicates where the rollout should get the RS template from SpecRef ReplicaSetSpecRef `json:"specRef" protobuf:"bytes,2,opt,name=specRef,casttype=ReplicaSetSpecRef"` // Replicas replica count for the template // +optional Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,3,opt,name=replicas"` // Metadata sets labels and annotations to use for the RS created from the template // +optional Metadata PodTemplateMetadata `json:"metadata,omitempty" protobuf:"bytes,4,opt,name=metadata"` // Selector overrides the selector to be used for the template's ReplicaSet. If omitted, will // use the same selector as the Rollout // +optional Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,5,opt,name=selector"` }
RolloutExperimentTemplate defines the template used to create experiments for the Rollout's experiment canary step
type RolloutList ¶
type RolloutList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` Items []Rollout `json:"items" protobuf:"bytes,2,rep,name=items"` }
RolloutList is a list of Rollout resources
type RolloutPause ¶
type RolloutPause struct { // Duration the amount of time to wait before moving to the next step. // +optional Duration *intstr.IntOrString `json:"duration,omitempty" protobuf:"bytes,1,opt,name=duration"` }
RolloutPause defines a pause stage for a rollout
func (RolloutPause) DurationSeconds ¶
func (p RolloutPause) DurationSeconds() int32
DurationSeconds converts the pause duration to seconds If Duration is nil 0 is returned if Duration values is string and does not contain a valid unit -1 is returned
type RolloutSpec ¶
type RolloutSpec struct { TemplateResolvedFromRef bool `json:"-"` SelectorResolvedFromRef bool `json:"-"` // Number of desired pods. This is a pointer to distinguish between explicit // zero and not specified. Defaults to 1. // +optional Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` // Label selector for pods. Existing ReplicaSets whose pods are // selected by this will be the ones affected by this rollout. // It must match the pod template's labels. // +optional Selector *metav1.LabelSelector `json:"selector" protobuf:"bytes,2,opt,name=selector"` // Template describes the pods that will be created. // +optional Template corev1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` // WorkloadRef holds a references to a workload that provides Pod template // +optional WorkloadRef *ObjectRef `json:"workloadRef,omitempty" protobuf:"bytes,10,opt,name=workloadRef"` // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing, for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"` // The deployment strategy to use to replace existing pods with new ones. // +optional Strategy RolloutStrategy `json:"strategy" protobuf:"bytes,5,opt,name=strategy"` // The number of old ReplicaSets to retain. If unspecified, will retain 10 old ReplicaSets RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` // Paused pauses the rollout at its current step. Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` // ProgressDeadlineSeconds The maximum time in seconds for a rollout to // make progress before it is considered to be failed. Argo Rollouts will // continue to process failed rollouts and a condition with a // ProgressDeadlineExceeded reason will be surfaced in the rollout status. // Note that progress will not be estimated during the time a rollout is paused. // Defaults to 600s. ProgressDeadlineSeconds *int32 `json:"progressDeadlineSeconds,omitempty" protobuf:"varint,8,opt,name=progressDeadlineSeconds"` // RestartAt indicates when all the pods of a Rollout should be restarted RestartAt *metav1.Time `json:"restartAt,omitempty" protobuf:"bytes,9,opt,name=restartAt"` }
RolloutSpec is the spec for a Rollout resource
func (*RolloutSpec) MarshalJSON ¶
func (s *RolloutSpec) MarshalJSON() ([]byte, error)
func (*RolloutSpec) SetResolvedSelector ¶
func (s *RolloutSpec) SetResolvedSelector(selector *metav1.LabelSelector)
func (*RolloutSpec) SetResolvedTemplate ¶
func (s *RolloutSpec) SetResolvedTemplate(template corev1.PodTemplateSpec)
type RolloutStatus ¶
type RolloutStatus struct { // Abort cancel the current rollout progression Abort bool `json:"abort,omitempty" protobuf:"varint,1,opt,name=abort"` // PauseConditions indicates why the rollout is currently paused PauseConditions []PauseCondition `json:"pauseConditions,omitempty" protobuf:"bytes,2,rep,name=pauseConditions"` // ControllerPause indicates the controller has paused the rollout. It is set to true when // the controller adds a pause condition. This field helps to discern the scenario where a // rollout was resumed after being paused by the controller (e.g. via the plugin). In that // situation, the pauseConditions would have been cleared , but controllerPause would still be // set to true. ControllerPause bool `json:"controllerPause,omitempty" protobuf:"varint,3,opt,name=controllerPause"` // AbortedAt indicates the controller reconciled an aborted rollout. The controller uses this to understand if // the controller needs to do some specific work when a Rollout is aborted. For example, the reconcileAbort is used // to indicate if the Rollout should enter an aborted state when the latest AnalysisRun is a failure, or the controller // has already put the Rollout into an aborted and should create a new AnalysisRun. AbortedAt *metav1.Time `json:"abortedAt,omitempty" protobuf:"bytes,4,opt,name=abortedAt"` // CurrentPodHash the hash of the current pod template // +optional CurrentPodHash string `json:"currentPodHash,omitempty" protobuf:"bytes,5,opt,name=currentPodHash"` // CurrentStepHash the hash of the current list of steps for the current strategy. This is used to detect when the // list of current steps change // +optional CurrentStepHash string `json:"currentStepHash,omitempty" protobuf:"bytes,6,opt,name=currentStepHash"` // Total number of non-terminated pods targeted by this rollout (their labels match the selector). // +optional Replicas int32 `json:"replicas,omitempty" protobuf:"varint,7,opt,name=replicas"` // Total number of non-terminated pods targeted by this rollout that have the desired template spec. // +optional UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,8,opt,name=updatedReplicas"` // Total number of ready pods targeted by this rollout. // +optional ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,9,opt,name=readyReplicas"` // Total number of available pods (ready for at least minReadySeconds) targeted by this rollout. // +optional AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,10,opt,name=availableReplicas"` // CurrentStepIndex defines the current step of the rollout is on. If the current step index is null, the // controller will execute the rollout. // +optional CurrentStepIndex *int32 `json:"currentStepIndex,omitempty" protobuf:"varint,11,opt,name=currentStepIndex"` // Count of hash collisions for the Rollout. The Rollout controller uses this // field as a collision avoidance mechanism when it needs to create the name for the // newest ReplicaSet. // +optional CollisionCount *int32 `json:"collisionCount,omitempty" protobuf:"varint,12,opt,name=collisionCount"` // The generation observed by the rollout controller by taking a hash of the spec. // +optional ObservedGeneration string `json:"observedGeneration,omitempty" protobuf:"bytes,13,opt,name=observedGeneration"` // Conditions a list of conditions a rollout can have. // +optional Conditions []RolloutCondition `json:"conditions,omitempty" protobuf:"bytes,14,rep,name=conditions"` // Canary describes the state of the canary rollout // +optional Canary CanaryStatus `json:"canary,omitempty" protobuf:"bytes,15,opt,name=canary"` // BlueGreen describes the state of the bluegreen rollout // +optional BlueGreen BlueGreenStatus `json:"blueGreen,omitempty" protobuf:"bytes,16,opt,name=blueGreen"` // HPAReplicas the number of non-terminated replicas that are receiving active traffic // +optional HPAReplicas int32 `json:"HPAReplicas,omitempty" protobuf:"varint,17,opt,name=HPAReplicas"` // Selector that identifies the pods that are receiving active traffic // +optional Selector string `json:"selector,omitempty" protobuf:"bytes,18,opt,name=selector"` // StableRS indicates the replicaset that has successfully rolled out // +optional StableRS string `json:"stableRS,omitempty" protobuf:"bytes,19,opt,name=stableRS"` // RestartedAt indicates last time a Rollout was restarted RestartedAt *metav1.Time `json:"restartedAt,omitempty" protobuf:"bytes,20,opt,name=restartedAt"` // PromoteFull indicates if the rollout should perform a full promotion, skipping analysis and pauses. PromoteFull bool `json:"promoteFull,omitempty" protobuf:"varint,21,opt,name=promoteFull"` }
RolloutStatus is the status for a Rollout resource
type RolloutStrategy ¶
type RolloutStrategy struct { // +optional BlueGreen *BlueGreenStrategy `json:"blueGreen,omitempty" protobuf:"bytes,1,opt,name=blueGreen"` // +optional Canary *CanaryStrategy `json:"canary,omitempty" protobuf:"bytes,2,opt,name=canary"` }
RolloutStrategy defines strategy to apply during next rollout
type RolloutTrafficRouting ¶
type RolloutTrafficRouting struct { // Istio holds Istio specific configuration to route traffic Istio *IstioTrafficRouting `json:"istio,omitempty" protobuf:"bytes,1,opt,name=istio"` // Nginx holds Nginx Ingress specific configuration to route traffic Nginx *NginxTrafficRouting `json:"nginx,omitempty" protobuf:"bytes,2,opt,name=nginx"` // Nginx holds ALB Ingress specific configuration to route traffic ALB *ALBTrafficRouting `json:"alb,omitempty" protobuf:"bytes,3,opt,name=alb"` // SMI holds TrafficSplit specific configuration to route traffic SMI *SMITrafficRouting `json:"smi,omitempty" protobuf:"bytes,4,opt,name=smi"` // Ambassador holds specific configuration to use Ambassador to route traffic Ambassador *AmbassadorTrafficRouting `json:"ambassador,omitempty" protobuf:"bytes,5,opt,name=ambassador"` }
RolloutTrafficRouting hosts all the different configuration for supported service meshes to enable more fine-grained traffic routing
type SMITrafficRouting ¶
type SMITrafficRouting struct { // RootService holds the name of that clients use to communicate. // +optional RootService string `json:"rootService,omitempty" protobuf:"bytes,1,opt,name=rootService"` // TrafficSplitName holds the name of the TrafficSplit. // +optional TrafficSplitName string `json:"trafficSplitName,omitempty" protobuf:"bytes,2,opt,name=trafficSplitName"` }
SMITrafficRouting configuration for TrafficSplit Custom Resource to control traffic routing
type ScopeDetail ¶
type ScopeDetail struct { Scope string `json:"scope" protobuf:"bytes,1,opt,name=scope"` Region string `json:"region" protobuf:"bytes,2,opt,name=region"` Step int64 `json:"step" protobuf:"varint,3,opt,name=step"` Start string `json:"start" protobuf:"bytes,4,opt,name=start"` End string `json:"end" protobuf:"bytes,5,opt,name=end"` }
type SecretKeyRef ¶
type SetCanaryScale ¶
type SetCanaryScale struct { // Weight sets the percentage of replicas the newRS should have // +optional Weight *int32 `json:"weight,omitempty" protobuf:"varint,1,opt,name=weight"` // Replicas sets the number of replicas the newRS should have // +optional Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,2,opt,name=replicas"` // MatchTrafficWeight cancels out previously set Replicas or Weight, effectively activating SetWeight // +optional MatchTrafficWeight bool `json:"matchTrafficWeight,omitempty" protobuf:"varint,3,opt,name=matchTrafficWeight"` }
SetCanaryScale defines how to scale the newRS without changing traffic weight
type ValueFrom ¶
type ValueFrom struct { // Secret is a reference to where a secret is stored. This field is one of the fields with valueFrom SecretKeyRef *SecretKeyRef `json:"secretKeyRef,omitempty" protobuf:"bytes,1,opt,name=secretKeyRef"` //FieldRef is a reference to the fields in metadata which we are referencing. This field is one of the fields with //valueFrom FieldRef *FieldRef `json:"fieldRef,omitempty" protobuf:"bytes,2,opt,name=fieldRef"` }
type ValueFromPodTemplateHash ¶
type ValueFromPodTemplateHash string
ValueFromPodTemplateHash indicates which ReplicaSet pod template pod hash to use
const ( // Stable tells the Rollout to get the pod template hash from the stable ReplicaSet Stable ValueFromPodTemplateHash = "Stable" // Latest tells the Rollout to get the pod template hash from the latest ReplicaSet Latest ValueFromPodTemplateHash = "Latest" )
type WavefrontMetric ¶
type WavefrontMetric struct { // Address is the HTTP address and port of the wavefront server Address string `json:"address,omitempty" protobuf:"bytes,1,opt,name=address"` // Query is a raw wavefront query to perform Query string `json:"query,omitempty" protobuf:"bytes,2,opt,name=query"` }
WavefrontMetric defines the wavefront query to perform canary analysis
type WebMetric ¶
type WebMetric struct { // URL is the address of the web metric URL string `json:"url" protobuf:"bytes,1,opt,name=url"` // Headers are optional HTTP headers to use in the request Headers []WebMetricHeader `json:"headers,omitempty" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,2,rep,name=headers"` // TimeoutSeconds is the timeout for the request in seconds (default: 10) TimeoutSeconds int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,3,opt,name=timeoutSeconds"` // JSONPath is a JSON Path to use as the result variable (default: "{$}") JSONPath string `json:"jsonPath,omitempty" protobuf:"bytes,4,opt,name=jsonPath"` // Insecure skips host TLS verification Insecure bool `json:"insecure,omitempty" protobuf:"varint,5,opt,name=insecure"` }