cloud-on-k8s
cloud-on-k8s copied to clipboard
Feature Request: Add UpdateStrategy for kibana.k8s.elastic.co/v1
Hello,
I would like to request the following feature:
I want to be able to customize the UpdateStrategy field in kibana.k8s.elastic.co/v1 as in elasticsearch.k8s.elastic.co/v1 (see elasticsearch.k8s.elastic.co/v1#UpdateStrategy).
Regards
Kibana is orchestrated slightly differently from Elasticsearch:
- it uses Deployments instead of StatefulSets
- during version upgrades we need to use the Recreate deployment strategy type because Kibana does not support rolling version upgrades yet.
What we could do is to expose the update strategy for all other updates (that is everything that is not a version upgrade):
// Spec to control the desired behavior of rolling update.
type RollingUpdateDeployment struct {
// The maximum number of pods that can be unavailable during the update.
// Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
// Absolute number is calculated from percentage by rounding down.
// This can not be 0 if MaxSurge is 0.
// Defaults to 25%.
// Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods
// immediately when the rolling update starts. Once new pods are ready, old ReplicaSet
// can be scaled down further, followed by scaling up the new ReplicaSet, ensuring
// that the total number of pods available at all times during the update is at
// least 70% of desired pods.
// +optional
MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"`
// The maximum number of pods that can be scheduled above the desired number of
// pods.
// Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
// This can not be 0 if MaxUnavailable is 0.
// Absolute number is calculated from percentage by rounding up.
// Defaults to 25%.
// Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when
// the rolling update starts, such that the total number of old and new pods do not exceed
// 130% of desired pods. Once old pods have been killed,
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
// at any time during the update is at most 130% of desired pods.
// +optional
MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
}
Hi @pebrc,
the Recreate strategy would be completely sufficient. I just stumbled upon the fact that our Kibana deployments have the strategy RollingUpdate by default.
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
Our cluster is running eck v3.1.0.
Regards