From 169698e4e3d6fa0374d52ea3064398b8ee30aefe Mon Sep 17 00:00:00 2001 From: Xtigyro Date: Thu, 17 Sep 2020 13:46:26 +0300 Subject: [PATCH 1/2] idempotent kind config - wave i --- local-cluster/create-cluster.sh | 33 ++++++++++--------- .../{kind-cfg.yaml => kind-base-config.yaml} | 0 2 files changed, 18 insertions(+), 15 deletions(-) rename local-cluster/{kind-cfg.yaml => kind-base-config.yaml} (100%) diff --git a/local-cluster/create-cluster.sh b/local-cluster/create-cluster.sh index 729511f..1be9797 100644 --- a/local-cluster/create-cluster.sh +++ b/local-cluster/create-cluster.sh @@ -4,7 +4,8 @@ set -e LIGHT_GREEN='\033[1;32m' LIGHT_RED='\033[1;31m' NC='\033[0m' # No Color -KIND_CFG="./kind-cfg.yaml" # base config file +KIND_CFG="$(<./kind-base-config.yaml)" # base config file +KIND_IN_USE_CFG="./kind-in-use-config.yaml" K8S_CLUSTERS="$(kind get clusters 2>/dev/null | tr '\n' ' ' | sed 's/[[:blank:]]*$//')" if [[ -z "$1" ]]; then @@ -81,8 +82,8 @@ while [ $# -gt 0 ]; do ;; --purge|-p) purge_clusters - if [[ -f "${KIND_CFG}.backup" ]]; then - yes | mv "${KIND_CFG}.backup" "${KIND_CFG}" + if [[ -f "${KIND_IN_USE_CFG}" ]]; then + rm -rf "${KIND_IN_USE_CFG}" printf "\n${LIGHT_GREEN}Old temporary configuration - cleaned.${NC}.\n" else printf "\n${LIGHT_GREEN}No old temporary configuration${NC}.\n" @@ -108,31 +109,33 @@ while [ $# -gt 0 ]; do done if [[ -z "$K8S_VER" ]]; then - KIND_CTRL_CFG=$'\n - role: control-plane\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' - KIND_WRKR_CFG=$'\n - role: worker\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' + KIND_CTRL_CFG=$'\n - role: control-plane\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' + KIND_WRKR_CFG=$'\n - role: worker\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' else - KIND_CTRL_CFG=$'\n - role: control-plane\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' - KIND_WRKR_CFG=$'\n - role: worker\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' + KIND_CTRL_CFG=$'\n - role: control-plane\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' + KIND_WRKR_CFG=$'\n - role: worker\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' fi -# Adjust the kINd config -cp "${KIND_CFG}"{,.backup} +# Adjust KinD config +## Calculate no. of nodes if [ "${NO_NODES}" == 1 ]; then NO_NODES_CREATE="$((${NO_NODES} - 1))" else NO_NODES_CREATE="${NO_NODES}" fi -echo -e "${KIND_CTRL_CFG}" >> "${KIND_CFG}" +## Create new KinD config +"${KIND_CFG}"+="${KIND_CTRL_CFG}" for (( i=0; i<"${NO_NODES_CREATE}"; ++i)); do - echo -e "${KIND_WRKR_CFG}" >> "${KIND_CFG}" + "${KIND_CFG}"+="${KIND_WRKR_CFG}" done +echo -e "${KIND_CFG}" > "${KIND_IN_USE_CFG}" -# Create kINd cluster +# Create KinD cluster kind create cluster --config "${KIND_CFG}" --name kind-"${NO_NODES}" -# Revert the kINd config -yes | mv "${KIND_CFG}.backup" "${KIND_CFG}" +# Clean used KinD config +rm -rf "${KIND_IN_USE_CFG}" # Deploy desired svc-s helmfile -f ./helmfile.yaml apply > /dev/null @@ -150,7 +153,7 @@ if [[ ! -z "$COEFFICIENT_LABEL" ]]; then done fi -# Taint the nodes with "NoExecute" +# Taint nodes with "NoExecute" if [[ ! -z "$COEFFICIENT_TAINT" ]]; then NO_NODES_TAINTED="$(bc -l <<<"${#CLUSTER_WRKS[@]} * $COEFFICIENT_TAINT" | awk '{printf("%d\n",$1 - 0.5)}')" for ((i=1;i<="$NO_NODES_TAINTED";i++)); diff --git a/local-cluster/kind-cfg.yaml b/local-cluster/kind-base-config.yaml similarity index 100% rename from local-cluster/kind-cfg.yaml rename to local-cluster/kind-base-config.yaml From f0342ed368a2b0caf8845f1baa64def808edea56 Mon Sep 17 00:00:00 2001 From: Xtigyro Date: Thu, 17 Sep 2020 14:14:09 +0300 Subject: [PATCH 2/2] fixes for idempotent kind config --- local-cluster/create-cluster.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/local-cluster/create-cluster.sh b/local-cluster/create-cluster.sh index 1be9797..8b503f3 100644 --- a/local-cluster/create-cluster.sh +++ b/local-cluster/create-cluster.sh @@ -109,11 +109,11 @@ while [ $# -gt 0 ]; do done if [[ -z "$K8S_VER" ]]; then - KIND_CTRL_CFG=$'\n - role: control-plane\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' - KIND_WRKR_CFG=$'\n - role: worker\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' + KIND_CTRL_CFG=$'\n - role: control-plane\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' + KIND_WRKR_CFG=$'\n - role: worker\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' else - KIND_CTRL_CFG=$'\n - role: control-plane\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' - KIND_WRKR_CFG=$'\n - role: worker\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock\n' + KIND_CTRL_CFG=$'\n - role: control-plane\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' + KIND_WRKR_CFG=$'\n - role: worker\n image: kindest/node:v'"${K8S_VER}"$'\n extraMounts:\n - hostPath: /var/run/docker.sock\n containerPath: /var/run/docker.sock' fi # Adjust KinD config @@ -124,15 +124,15 @@ else NO_NODES_CREATE="${NO_NODES}" fi ## Create new KinD config -"${KIND_CFG}"+="${KIND_CTRL_CFG}" +KIND_CFG="${KIND_CFG}${KIND_CTRL_CFG}" for (( i=0; i<"${NO_NODES_CREATE}"; ++i)); do - "${KIND_CFG}"+="${KIND_WRKR_CFG}" + KIND_CFG="${KIND_CFG}${KIND_WRKR_CFG}" done echo -e "${KIND_CFG}" > "${KIND_IN_USE_CFG}" # Create KinD cluster -kind create cluster --config "${KIND_CFG}" --name kind-"${NO_NODES}" +kind create cluster --config "${KIND_IN_USE_CFG}" --name kind-"${NO_NODES}" # Clean used KinD config rm -rf "${KIND_IN_USE_CFG}"