Skip to content

Commit

Permalink
api: adds readinessGates setting for pods
Browse files Browse the repository at this point in the history
it should help implement zero-down time updates with external load balancers
  • Loading branch information
f41gh7 committed Aug 16, 2022
1 parent e43a4d5 commit 29807e6
Show file tree
Hide file tree
Showing 32 changed files with 336 additions and 0 deletions.
3 changes: 3 additions & 0 deletions api/v1beta1/vmagent_types.go
Expand Up @@ -370,6 +370,9 @@ type VMAgentSpec struct {
// set it to RollingUpdate for disabling operator statefulSet rollingUpdate
// +optional
StatefulRollingUpdateStrategy appsv1.StatefulSetUpdateStrategyType `json:"statefulRollingUpdateStrategy,omitempty"`

// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMAgentRemoteWriteSettings - defines global settings for all remoteWrite urls.
Expand Down
2 changes: 2 additions & 0 deletions api/v1beta1/vmalert_types.go
Expand Up @@ -249,6 +249,8 @@ type VMAlertSpec struct {
// configuration based on DNSPolicy.
// +optional
DNSConfig *v1.PodDNSConfig `json:"dnsConfig,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMAgentRemoteReadSpec defines the remote storage configuration for VmAlert to read alerts from
Expand Down
2 changes: 2 additions & 0 deletions api/v1beta1/vmalertmanager_types.go
Expand Up @@ -259,6 +259,8 @@ type VMAlertmanagerSpec struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMAlertmanagerList is a list of Alertmanagers.
Expand Down
2 changes: 2 additions & 0 deletions api/v1beta1/vmauth_types.go
Expand Up @@ -174,6 +174,8 @@ type VMAuthSpec struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// EmbeddedIngress describes ingress configuration options.
Expand Down
6 changes: 6 additions & 0 deletions api/v1beta1/vmcluster_types.go
Expand Up @@ -278,6 +278,8 @@ type VMSelect struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

func (s VMSelect) GetNameWithPrefix(clusterName string) string {
Expand Down Expand Up @@ -456,6 +458,8 @@ type VMInsert struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

func (cr *VMInsert) Probe() *EmbeddedProbes {
Expand Down Expand Up @@ -646,6 +650,8 @@ type VMStorage struct {
// Can be changed for RollingUpdate
// +optional
RollingUpdateStrategy appsv1.StatefulSetUpdateStrategyType `json:"rollingUpdateStrategy,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

type VMBackup struct {
Expand Down
2 changes: 2 additions & 0 deletions api/v1beta1/vmsingle_types.go
Expand Up @@ -182,6 +182,8 @@ type VMSingleSpec struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMSingleStatus defines the observed state of VMSingle
Expand Down
40 changes: 40 additions & 0 deletions api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions api/victoriametrics/v1beta1/vmagent_types.go
Expand Up @@ -370,6 +370,9 @@ type VMAgentSpec struct {
// set it to RollingUpdate for disabling operator statefulSet rollingUpdate
// +optional
StatefulRollingUpdateStrategy appsv1.StatefulSetUpdateStrategyType `json:"statefulRollingUpdateStrategy,omitempty"`

// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMAgentRemoteWriteSettings - defines global settings for all remoteWrite urls.
Expand Down
2 changes: 2 additions & 0 deletions api/victoriametrics/v1beta1/vmalert_types.go
Expand Up @@ -249,6 +249,8 @@ type VMAlertSpec struct {
// configuration based on DNSPolicy.
// +optional
DNSConfig *v1.PodDNSConfig `json:"dnsConfig,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMAgentRemoteReadSpec defines the remote storage configuration for VmAlert to read alerts from
Expand Down
2 changes: 2 additions & 0 deletions api/victoriametrics/v1beta1/vmalertmanager_types.go
Expand Up @@ -259,6 +259,8 @@ type VMAlertmanagerSpec struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMAlertmanagerList is a list of Alertmanagers.
Expand Down
2 changes: 2 additions & 0 deletions api/victoriametrics/v1beta1/vmauth_types.go
Expand Up @@ -174,6 +174,8 @@ type VMAuthSpec struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// EmbeddedIngress describes ingress configuration options.
Expand Down
6 changes: 6 additions & 0 deletions api/victoriametrics/v1beta1/vmcluster_types.go
Expand Up @@ -278,6 +278,8 @@ type VMSelect struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

func (s VMSelect) GetNameWithPrefix(clusterName string) string {
Expand Down Expand Up @@ -456,6 +458,8 @@ type VMInsert struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

func (cr *VMInsert) Probe() *EmbeddedProbes {
Expand Down Expand Up @@ -646,6 +650,8 @@ type VMStorage struct {
// Can be changed for RollingUpdate
// +optional
RollingUpdateStrategy appsv1.StatefulSetUpdateStrategyType `json:"rollingUpdateStrategy,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

type VMBackup struct {
Expand Down
2 changes: 2 additions & 0 deletions api/victoriametrics/v1beta1/vmsingle_types.go
Expand Up @@ -182,6 +182,8 @@ type VMSingleSpec struct {
// TerminationGracePeriodSeconds period for container graceful termination
// +optional
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
// ReadinessGates defines pod readiness gates
ReadinessGates []v1.PodReadinessGate `json:"readinessGates,omitempty"`
}

// VMSingleStatus defines the observed state of VMSingle
Expand Down
40 changes: 40 additions & 0 deletions api/victoriametrics/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions config/crd/bases/operator.victoriametrics.com_vmagents.yaml
Expand Up @@ -1128,6 +1128,19 @@ spec:
are ANDed.
type: object
type: object
readinessGates:
description: ReadinessGates defines pod readiness gates
items:
description: PodReadinessGate contains the reference to a pod condition
properties:
conditionType:
description: ConditionType refers to a condition in the pod's
condition list with matching type.
type: string
required:
- conditionType
type: object
type: array
readinessProbe:
description: ReadinessProbe that will be added CRD pod
type: object
Expand Down
13 changes: 13 additions & 0 deletions config/crd/bases/operator.victoriametrics.com_vmalertmanagers.yaml
Expand Up @@ -414,6 +414,19 @@ spec:
priorityClassName:
description: PriorityClassName class assigned to the Pods
type: string
readinessGates:
description: ReadinessGates defines pod readiness gates
items:
description: PodReadinessGate contains the reference to a pod condition
properties:
conditionType:
description: ConditionType refers to a condition in the pod's
condition list with matching type.
type: string
required:
- conditionType
type: object
type: array
readinessProbe:
description: ReadinessProbe that will be added CRD pod
type: object
Expand Down
13 changes: 13 additions & 0 deletions config/crd/bases/operator.victoriametrics.com_vmalerts.yaml
Expand Up @@ -1002,6 +1002,19 @@ spec:
priorityClassName:
description: Priority class assigned to the Pods
type: string
readinessGates:
description: ReadinessGates defines pod readiness gates
items:
description: PodReadinessGate contains the reference to a pod condition
properties:
conditionType:
description: ConditionType refers to a condition in the pod's
condition list with matching type.
type: string
required:
- conditionType
type: object
type: array
readinessProbe:
description: ReadinessProbe that will be added CRD pod
type: object
Expand Down

0 comments on commit 29807e6

Please sign in to comment.