mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-06-10 10:36:16 +00:00
k8s - add label_selectors options SUMMARY k8s now support label_selectors options same as k8s_info Resolves #43 ISSUE TYPE Feature Pull Request COMPONENT NAME k8s Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: None <None>
658 lines
16 KiB
YAML
658 lines
16 KiB
YAML
---
|
|
- block:
|
|
- set_fact:
|
|
selector_namespace: "selector"
|
|
selector_pod_delete: "pod-selector-delete"
|
|
selector_pod_apply: "pod-selector-apply"
|
|
selector_pod_create:
|
|
- "pod-selector-apply-00"
|
|
- "pod-selector-apply-01"
|
|
- "pod-selector-apply-02"
|
|
- "pod-selector-apply-03"
|
|
|
|
- name: Ensure namespace selector
|
|
k8s:
|
|
kind: namespace
|
|
name: '{{ selector_namespace }}'
|
|
|
|
# Resource deletion using label selector (equality-based requirement)
|
|
- name: Create simple pod
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_delete }}-00'
|
|
labels:
|
|
ansible.dev/team: "cloud"
|
|
ansible.release/version: upstream
|
|
ansible.dev/test: "true"
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
|
|
- name: Delete all resource using selector
|
|
k8s:
|
|
state: absent
|
|
kind: Pod
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- ansible.dev/team=cloud
|
|
wait: yes
|
|
wait_timeout: 180
|
|
|
|
- name: Ensure resources have been deleted
|
|
k8s_info:
|
|
kind: Pod
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- ansible.dev/team=cloud
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result.resources == []
|
|
|
|
# Resource deletion using label selector (set-based requirement)
|
|
- name: Create simple pod
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_delete }}-01'
|
|
labels:
|
|
environment: production
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: alpine:3.14.0
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
|
|
- name: Delete all resource using selector
|
|
k8s:
|
|
state: absent
|
|
kind: Pod
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- environment in (test, qa)
|
|
wait: yes
|
|
wait_timeout: 180
|
|
register: result
|
|
|
|
- name: check that no resources were deleted
|
|
assert:
|
|
that:
|
|
- result is not changed
|
|
|
|
- name: Ensure resources have not been deleted
|
|
k8s_info:
|
|
kind: Pod
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- environment in (production)
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result.resources | list | length > 0
|
|
|
|
- name: Delete all resource using selector
|
|
k8s:
|
|
state: absent
|
|
kind: Pod
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- environment in (production)
|
|
wait: yes
|
|
wait_timeout: 180
|
|
register: result
|
|
|
|
- name: check result is changed
|
|
assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: Ensure resources have not been deleted
|
|
k8s_info:
|
|
kind: Pod
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- environment in (production)
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result.resources | list | length == 0
|
|
|
|
# Resource creation using label selector
|
|
- name: Create simple pod using label_selectors option (equality-based requirement)
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- container.image=fedora
|
|
definition: |
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[0] }}'
|
|
labels:
|
|
container.image: busybox
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[1] }}'
|
|
labels:
|
|
container.image: alpine
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[2] }}'
|
|
labels:
|
|
container.image: python
|
|
release: dev
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[3] }}'
|
|
labels:
|
|
container.image: python
|
|
release: dev
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is not changed
|
|
|
|
- name: Create simple pod using label_selectors option
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- container.image==alpine
|
|
definition: |
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[0] }}'
|
|
labels:
|
|
container.image: busybox
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[1] }}'
|
|
labels:
|
|
container.image: alpine
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[2] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[3] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: production
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: list pod created
|
|
k8s_info:
|
|
namespace: '{{ selector_namespace }}'
|
|
kind: Pod
|
|
label_selectors:
|
|
- container.image
|
|
register: pod_created
|
|
|
|
- name: Validate that pod with matching label was created
|
|
assert:
|
|
that:
|
|
- pods_created | length == 1
|
|
- selector_pod_create[1] in pods_created
|
|
vars:
|
|
pods_created: '{{ pod_created.resources | map(attribute="metadata.name") | list }}'
|
|
|
|
- name: Create simple pod using label_selectors option (set-based requirement)
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- "!environment"
|
|
definition: |
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[0] }}'
|
|
labels:
|
|
container.image: busybox
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[1] }}'
|
|
labels:
|
|
container.image: alpine
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[2] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[3] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: production
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: list pod created
|
|
k8s_info:
|
|
namespace: '{{ selector_namespace }}'
|
|
kind: Pod
|
|
label_selectors:
|
|
- container.image
|
|
register: pod_created
|
|
|
|
- name: Validate that pod with matching label was created
|
|
assert:
|
|
that:
|
|
- pods_created | length == 2
|
|
- selector_pod_create[0] in pods_created
|
|
vars:
|
|
pods_created: '{{ pod_created.resources | map(attribute="metadata.name") | list }}'
|
|
|
|
- name: Create simple pod using label_selectors option (set-based requirement)
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- environment in (test)
|
|
definition: |
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[0] }}'
|
|
labels:
|
|
container.image: busybox
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[1] }}'
|
|
labels:
|
|
container.image: alpine
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[2] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[3] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: production
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: list pod created
|
|
k8s_info:
|
|
namespace: '{{ selector_namespace }}'
|
|
kind: Pod
|
|
label_selectors:
|
|
- container.image
|
|
register: pod_created
|
|
|
|
- name: Validate that pod with matching label was created
|
|
assert:
|
|
that:
|
|
- pods_created | length == 3
|
|
- selector_pod_create[2] in pods_created
|
|
vars:
|
|
pods_created: '{{ pod_created.resources | map(attribute="metadata.name") | list }}'
|
|
|
|
- name: Create simple pod using label_selectors option (set-based requirement)
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
label_selectors:
|
|
- environment notin (test)
|
|
definition: |
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[0] }}'
|
|
labels:
|
|
container.image: busybox
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[1] }}'
|
|
labels:
|
|
container.image: alpine
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: alpine
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[2] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
---
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_create[3] }}'
|
|
labels:
|
|
container.image: python
|
|
environment: production
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: python
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: list pod created
|
|
k8s_info:
|
|
namespace: '{{ selector_namespace }}'
|
|
kind: Pod
|
|
label_selectors:
|
|
- container.image
|
|
register: pod_created
|
|
|
|
- name: Validate that pod with matching label was created
|
|
assert:
|
|
that:
|
|
- pods_created | length == 4
|
|
- selector_pod_create[3] in pods_created
|
|
vars:
|
|
pods_created: '{{ pod_created.resources | map(attribute="metadata.name") | list }}'
|
|
|
|
# Resource update using apply
|
|
- name: Create simple pod using apply
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
apply: yes
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_apply }}'
|
|
labels:
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox:1.31.0
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
|
|
- name: Apply new pod definition using label_selectors (no match)
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
apply: yes
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_apply }}'
|
|
labels:
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox:1.33.0
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
label_selectors:
|
|
- environment=qa
|
|
register: result
|
|
|
|
- name: check task output
|
|
assert:
|
|
that:
|
|
- result is not changed
|
|
- '"filtered by label_selectors" in result.msg'
|
|
|
|
- name: Apply new pod definition using label_selectors
|
|
k8s:
|
|
namespace: '{{ selector_namespace }}'
|
|
apply: yes
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: '{{ selector_pod_apply }}'
|
|
labels:
|
|
environment: test
|
|
spec:
|
|
containers:
|
|
- name: c0
|
|
image: busybox:1.33.0
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- while true;do date;sleep 5; done
|
|
label_selectors:
|
|
- environment!=qa
|
|
register: result
|
|
|
|
- name: check task output
|
|
assert:
|
|
that:
|
|
- result is changed
|
|
|
|
always:
|
|
- name: Ensure namespace is deleted
|
|
k8s:
|
|
kind: Namespace
|
|
name: '{{ selector_namespace }}'
|
|
state: absent
|
|
ignore_errors: true
|