mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-06 21:12:37 +00:00
Support resource definition using manifest URL (#478)
Support resource definition using manifest URL SUMMARY Closes #451 ISSUE TYPE Feature Pull Request COMPONENT NAME k8s k8s_scale k8s_service Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: Abhijeet Kasurde <None> Reviewed-by: Bikouo Aubin <None>
This commit is contained in:
4
tests/integration/targets/k8s_manifest_url/aliases
Normal file
4
tests/integration/targets/k8s_manifest_url/aliases
Normal file
@@ -0,0 +1,4 @@
|
||||
k8s_service
|
||||
k8s
|
||||
k8s_scale
|
||||
time=40
|
||||
64
tests/integration/targets/k8s_manifest_url/defaults/main.yml
Normal file
64
tests/integration/targets/k8s_manifest_url/defaults/main.yml
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
test_namespace: "k8s-manifest-url"
|
||||
file_server_container_name: "nginx-server"
|
||||
file_server_published_port: 30001
|
||||
file_server_container_image: "docker.io/nginx"
|
||||
|
||||
pod_manifest:
|
||||
file_name: pod.yaml
|
||||
definition: |
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: yaml-pod
|
||||
spec:
|
||||
containers:
|
||||
- name: busy
|
||||
image: busybox
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- while true;do date;sleep 5; done
|
||||
|
||||
deployment_manifest:
|
||||
file_name: deployment.yaml
|
||||
definition: |
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: nginx-deployment
|
||||
labels:
|
||||
app: nginx
|
||||
spec:
|
||||
replicas: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nginx
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nginx
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx
|
||||
|
||||
service_manifest:
|
||||
file_name: service.yaml
|
||||
definition: |
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: nginx
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 80
|
||||
selector:
|
||||
app: nginx
|
||||
status:
|
||||
loadBalancer: {}
|
||||
3
tests/integration/targets/k8s_manifest_url/meta/main.yml
Normal file
3
tests/integration/targets/k8s_manifest_url/meta/main.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_namespace
|
||||
132
tests/integration/targets/k8s_manifest_url/tasks/main.yml
Normal file
132
tests/integration/targets/k8s_manifest_url/tasks/main.yml
Normal file
@@ -0,0 +1,132 @@
|
||||
- name: check if docker is installed
|
||||
shell: "command -v docker"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- block:
|
||||
- name: Check running server
|
||||
shell:
|
||||
cmd: >
|
||||
docker container ps -a
|
||||
-f name={{ file_server_container_name }}
|
||||
--format '{{ '{{' }} .Names {{ '}}' }}'
|
||||
register: server
|
||||
|
||||
- name: Create static file server using on docker
|
||||
block:
|
||||
- name: Create temporary directory for file to server
|
||||
tempfile:
|
||||
state: directory
|
||||
suffix: .manifests
|
||||
register: manifests_dir
|
||||
|
||||
- name: Update directory permissions
|
||||
file:
|
||||
path: "{{ manifests_dir.path }}"
|
||||
mode: 0755
|
||||
|
||||
- name: Create manifests files
|
||||
copy:
|
||||
content: "{{ item.definition }}"
|
||||
dest: "{{ manifests_dir.path }}/{{ item.file_name }}"
|
||||
with_items:
|
||||
- "{{ pod_manifest }}"
|
||||
- "{{ deployment_manifest }}"
|
||||
- "{{ service_manifest }}"
|
||||
|
||||
- name: Create static file server
|
||||
shell:
|
||||
cmd: >
|
||||
docker run
|
||||
--name {{ file_server_container_name }}
|
||||
-p {{ file_server_published_port }}:80
|
||||
-v {{ manifests_dir.path }}:/usr/share/nginx/html:ro
|
||||
-d {{ file_server_container_image }}
|
||||
|
||||
when: server.stdout == ""
|
||||
|
||||
- set_fact:
|
||||
file_server_host: "http://127.0.0.1:{{ file_server_published_port }}"
|
||||
|
||||
# k8s
|
||||
- name: Create Pod using manifest URL
|
||||
k8s:
|
||||
namespace: "{{ test_namespace }}"
|
||||
src: "{{ file_server_host }}/{{ pod_manifest.file_name }}"
|
||||
wait: true
|
||||
|
||||
- name: Read Pod created
|
||||
k8s_info:
|
||||
kind: Pod
|
||||
namespace: "{{ test_namespace }}"
|
||||
name: "yaml-pod"
|
||||
register: yaml_pod
|
||||
|
||||
- name: Ensure Pod exists
|
||||
assert:
|
||||
that:
|
||||
- yaml_pod.resources | length == 1
|
||||
|
||||
# k8s_scale
|
||||
- name: Create Deployment using manifest URL
|
||||
k8s:
|
||||
namespace: "{{ test_namespace }}"
|
||||
src: "{{ file_server_host }}/{{ deployment_manifest.file_name }}"
|
||||
wait: true
|
||||
|
||||
- name: Scale deployment using manifest URL
|
||||
k8s_scale:
|
||||
namespace: "{{ test_namespace }}"
|
||||
src: "{{ file_server_host }}/{{ deployment_manifest.file_name }}"
|
||||
replicas: 1
|
||||
current_replicas: 3
|
||||
wait: true
|
||||
register: scale
|
||||
|
||||
- name: Read deployment
|
||||
k8s_info:
|
||||
kind: Deployment
|
||||
version: apps/v1
|
||||
namespace: "{{ test_namespace }}"
|
||||
name: "nginx-deployment"
|
||||
register: deployment
|
||||
|
||||
- name: Ensure number of replicas has been set as requested
|
||||
assert:
|
||||
that:
|
||||
- scale is changed
|
||||
- deployment.resources | length == 1
|
||||
- deployment.resources.0.status.replicas == 1
|
||||
|
||||
# k8s_service
|
||||
- name: Create service from manifest URL
|
||||
k8s_service:
|
||||
name: "myservice"
|
||||
namespace: "{{ test_namespace }}"
|
||||
src: "{{ file_server_host }}/{{ service_manifest.file_name }}"
|
||||
register: svc
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- svc is changed
|
||||
|
||||
always:
|
||||
- name: Delete namespace
|
||||
k8s:
|
||||
kind: Namespace
|
||||
name: "{{ test_namespace }}"
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
|
||||
- name: Delete static file server
|
||||
shell: "docker container rm -f {{ file_server_container_name }}"
|
||||
ignore_errors: true
|
||||
|
||||
- name: Delete temporary directory
|
||||
file:
|
||||
state: absent
|
||||
path: "{{ manifests_dir.path }}"
|
||||
ignore_errors: true
|
||||
when: manifests_dir is defined
|
||||
|
||||
when: result.rc == 0
|
||||
Reference in New Issue
Block a user