From 25100e7f5e8185414846135547dd0c697a026e42 Mon Sep 17 00:00:00 2001 From: abikouo <79859644+abikouo@users.noreply.github.com> Date: Wed, 7 Jul 2021 13:23:45 +0200 Subject: [PATCH] adding a prepare step to validate that node is ready for schedule (#160) --- .github/workflows/ci.yml | 7 +++++-- .gitignore | 3 +++ molecule/default/molecule.yml | 1 + molecule/default/prepare.yml | 37 +++++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 molecule/default/prepare.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c316c36b..625442b6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,8 +82,11 @@ jobs: with: path: ansible_collections/kubernetes/core - - name: Set up KinD cluster - uses: engineerd/setup-kind@v0.5.0 + # We are facing some issue with the github action used to spawn k8s cluster + # This will be done into a dedicated prepare step for molecule, with the added benefit that + # it is no more github dependant + # - name: Set up KinD cluster + # uses: engineerd/setup-kind@v0.5.0 - name: Set up Python ${{ matrix.python_version }} uses: actions/setup-python@v1 diff --git a/.gitignore b/.gitignore index 01b4466a..079e9742 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ changelogs/.plugin-cache.yaml tests/output tests/integration/cloud-config-* .cache + +# Helm charts +molecule/default/*-chart-*.tgz diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index e6b1cddc..2c89b108 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -35,6 +35,7 @@ scenario: - dependency - lint - syntax + - prepare - converge - verify dependency: diff --git a/molecule/default/prepare.yml b/molecule/default/prepare.yml new file mode 100644 index 00000000..91a1afdd --- /dev/null +++ b/molecule/default/prepare.yml @@ -0,0 +1,37 @@ +--- +- name: Prepare + hosts: localhost + connection: local + + collections: + - kubernetes.core + + vars: + node_taints: + - "node.kubernetes.io/not-ready" + - "node.kubernetes.io/unreachable" + - "node.kubernetes.io/unschedulable" + + tasks: + # We are spawning k8s cluster using kind executable and we ensure that the cluster is up + # and node is ready, if this is not validated we may face issue later on when running tests + - name: Download kind + get_url: + url: https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64 + dest: /tmp/kind + + - name: make kind executable + file: + path: /tmp/kind + mode: '0755' + + - name: Create cluster + command: "kind create cluster" + + - name: Assert that nodes are ready + k8s_info: + kind: Node + retries: 10 + delay: 30 + register: nodes + until: nodes.resources | selectattr("spec.taints", "defined") | map(attribute="spec.taints") | list | length == 0