mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-08 05:52:37 +00:00
k8s_scale - handle scaling StatefulSets with 'updateStrategy=OnDelete' (#579)
k8s_scale - handle scaling StatefulSets with 'updateStrategy=OnDelete' SUMMARY Likely Fixes #503 Handle scaling StatefulSets with 'updateStrategy=OnDelete' ISSUE TYPE Bugfix Pull Request COMPONENT NAME k8s_scale ADDITIONAL INFORMATION Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: Bikouo Aubin <None>
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- k8s_scale - fix issue when scaling StatefulSets with updateStrategy=OnDelete (https://github.com/ansible-collections/kubernetes.core/issues/579).
|
||||||
@@ -61,6 +61,13 @@ def daemonset_ready(daemonset: ResourceInstance) -> bool:
|
|||||||
|
|
||||||
|
|
||||||
def statefulset_ready(statefulset: ResourceInstance) -> bool:
|
def statefulset_ready(statefulset: ResourceInstance) -> bool:
|
||||||
|
if statefulset.spec.updateStrategy.type == "OnDelete":
|
||||||
|
return bool(
|
||||||
|
statefulset.status
|
||||||
|
and statefulset.status.observedGeneration
|
||||||
|
== (statefulset.metadata.generation or 0)
|
||||||
|
and statefulset.status.replicas == statefulset.spec.replicas
|
||||||
|
)
|
||||||
# These may be None
|
# These may be None
|
||||||
updated_replicas = statefulset.status.updatedReplicas or 0
|
updated_replicas = statefulset.status.updatedReplicas or 0
|
||||||
ready_replicas = statefulset.status.readyReplicas or 0
|
ready_replicas = statefulset.status.readyReplicas or 0
|
||||||
|
|||||||
@@ -389,6 +389,71 @@
|
|||||||
that:
|
that:
|
||||||
- output.result.status.replicas == 0
|
- output.result.status.replicas == 0
|
||||||
|
|
||||||
|
- name: Create a StatefulSet with updateStrategy=OnDelete
|
||||||
|
kubernetes.core.k8s:
|
||||||
|
wait: yes
|
||||||
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
|
definition:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
namespace: "{{ scale_namespace }}"
|
||||||
|
name: scale-set-ondelete
|
||||||
|
spec:
|
||||||
|
replicas: 2
|
||||||
|
updateStrategy:
|
||||||
|
type: OnDelete
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: foo
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: foo
|
||||||
|
spec:
|
||||||
|
terminationGracePeriodSeconds: 10
|
||||||
|
containers:
|
||||||
|
- image: busybox
|
||||||
|
name: busybox
|
||||||
|
command:
|
||||||
|
- sleep
|
||||||
|
- "600"
|
||||||
|
register: output
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- output.result.status.replicas == 2
|
||||||
|
|
||||||
|
- name: Wait for StatefulSet to scale down to 0
|
||||||
|
kubernetes.core.k8s_scale:
|
||||||
|
kind: StatefulSet
|
||||||
|
api_version: apps/v1
|
||||||
|
name: scale-set-ondelete
|
||||||
|
namespace: "{{ scale_namespace }}"
|
||||||
|
replicas: 0
|
||||||
|
wait: yes
|
||||||
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
|
register: output
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- output.result.status.replicas == 0
|
||||||
|
|
||||||
|
- name: Wait for StatefulSet to scale up to 2
|
||||||
|
kubernetes.core.k8s_scale:
|
||||||
|
kind: StatefulSet
|
||||||
|
api_version: apps/v1
|
||||||
|
name: scale-set-ondelete
|
||||||
|
namespace: "{{ scale_namespace }}"
|
||||||
|
replicas: 2
|
||||||
|
wait: yes
|
||||||
|
wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
|
||||||
|
register: output
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- output.result.status.replicas == 2
|
||||||
|
|
||||||
always:
|
always:
|
||||||
- name: Remove namespace
|
- name: Remove namespace
|
||||||
k8s:
|
k8s:
|
||||||
|
|||||||
Reference in New Issue
Block a user