mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-04-10 19:01:03 +00:00
This address the following warning:
```
[WARNING]: conditional statements should not include jinja2 templating
delimiters such as {{ }} or {% %}. Found: {{ scale_down_no_wait_pods.resources
| length == 1 }
```
211 lines
5.4 KiB
YAML
211 lines
5.4 KiB
YAML
---
|
|
- block:
|
|
- set_fact:
|
|
scale_namespace: scale
|
|
|
|
- name: Ensure namespace exists
|
|
k8s:
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: "{{ scale_namespace }}"
|
|
|
|
- name: Add a deployment
|
|
k8s:
|
|
definition:
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: "{{ k8s_pod_name }}"
|
|
template: "{{ k8s_pod_template }}"
|
|
wait: yes
|
|
wait_timeout: 60
|
|
apply: yes
|
|
vars:
|
|
k8s_pod_name: scale-deploy
|
|
k8s_pod_image: gcr.io/kuar-demo/kuard-amd64:v0.10.0-green
|
|
k8s_pod_ports:
|
|
- containerPort: 8080
|
|
name: http
|
|
protocol: TCP
|
|
|
|
- name: Get pods in scale-deploy
|
|
k8s_info:
|
|
kind: Pod
|
|
label_selectors:
|
|
- app=scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
field_selectors:
|
|
- status.phase=Running
|
|
|
|
- name: Scale the deployment
|
|
k8s_scale:
|
|
api_version: apps/v1
|
|
kind: Deployment
|
|
name: scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
replicas: 0
|
|
wait: yes
|
|
register: scale_down
|
|
|
|
- name: Get pods in scale-deploy
|
|
k8s_info:
|
|
kind: Pod
|
|
label_selectors:
|
|
- app=scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
field_selectors:
|
|
- status.phase=Running
|
|
register: scale_down_deploy_pods
|
|
until: scale_down_deploy_pods.resources | length == 0
|
|
retries: 6
|
|
delay: 5
|
|
|
|
- name: Ensure that scale down took effect
|
|
assert:
|
|
that:
|
|
- scale_down is changed
|
|
- '"duration" in scale_down'
|
|
- scale_down.diff
|
|
|
|
- name: Reapply the earlier deployment
|
|
k8s:
|
|
definition:
|
|
api_version: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: "{{ k8s_pod_name }}"
|
|
template: "{{ k8s_pod_template }}"
|
|
wait: yes
|
|
wait_timeout: 60
|
|
apply: yes
|
|
vars:
|
|
k8s_pod_name: scale-deploy
|
|
k8s_pod_image: gcr.io/kuar-demo/kuard-amd64:v0.10.0-green
|
|
k8s_pod_ports:
|
|
- containerPort: 8080
|
|
name: http
|
|
protocol: TCP
|
|
register: reapply_after_scale
|
|
|
|
- name: Get pods in scale-deploy
|
|
k8s_info:
|
|
kind: Pod
|
|
label_selectors:
|
|
- app=scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
field_selectors:
|
|
- status.phase=Running
|
|
register: scale_up_deploy_pods
|
|
|
|
- name: Ensure that reapply after scale worked
|
|
assert:
|
|
that:
|
|
- reapply_after_scale is changed
|
|
- scale_up_deploy_pods.resources | length == 1
|
|
|
|
- name: Scale the deployment up
|
|
k8s_scale:
|
|
api_version: apps/v1
|
|
kind: Deployment
|
|
name: scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
replicas: 2
|
|
wait: yes
|
|
wait_timeout: 60
|
|
register: scale_up
|
|
|
|
- name: Get pods in scale-deploy
|
|
k8s_info:
|
|
kind: Pod
|
|
label_selectors:
|
|
- app=scale-deploy
|
|
field_selectors:
|
|
- status.phase=Running
|
|
namespace: "{{ scale_namespace }}"
|
|
register: scale_up_further_deploy_pods
|
|
|
|
- name: Ensure that scale up worked
|
|
assert:
|
|
that:
|
|
- scale_up is changed
|
|
- '"duration" in scale_up'
|
|
- scale_up.diff
|
|
- scale_up_further_deploy_pods.resources | length == 2
|
|
|
|
- name: Don't scale the deployment up
|
|
k8s_scale:
|
|
api_version: apps/v1
|
|
kind: Deployment
|
|
name: scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
replicas: 2
|
|
wait: yes
|
|
register: scale_up_noop
|
|
|
|
- name: Get pods in scale-deploy
|
|
k8s_info:
|
|
kind: Pod
|
|
label_selectors:
|
|
- app=scale-deploy
|
|
field_selectors:
|
|
- status.phase=Running
|
|
namespace: "{{ scale_namespace }}"
|
|
register: scale_up_noop_pods
|
|
|
|
- name: Ensure that no-op scale up worked
|
|
assert:
|
|
that:
|
|
- scale_up_noop is not changed
|
|
- not scale_up_noop.diff
|
|
- scale_up_noop_pods.resources | length == 2
|
|
- '"duration" in scale_up_noop'
|
|
|
|
- name: Scale deployment down without wait
|
|
k8s_scale:
|
|
api_version: apps/v1
|
|
kind: Deployment
|
|
name: scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
replicas: 1
|
|
wait: no
|
|
register: scale_down_no_wait
|
|
|
|
- name: Ensure that scale down succeeds
|
|
k8s_info:
|
|
kind: Pod
|
|
label_selectors:
|
|
- app=scale-deploy
|
|
namespace: "{{ scale_namespace }}"
|
|
register: scale_down_no_wait_pods
|
|
retries: 6
|
|
delay: 5
|
|
until: scale_down_no_wait_pods.resources | length == 1
|
|
|
|
- name: Ensure that scale down without wait worked
|
|
assert:
|
|
that:
|
|
- scale_down_no_wait is changed
|
|
- scale_down_no_wait.diff
|
|
- scale_down_no_wait_pods.resources | length == 1
|
|
|
|
always:
|
|
- name: Remove namespace
|
|
k8s:
|
|
kind: Namespace
|
|
name: "{{ scale_namespace }}"
|
|
state: absent
|