Create kind kubernetes cluster for local development environment

By | March 1, 2024

Local kubernetes ortamı kurulumu developerlar için biraz zahmetli olabiliyor. Bu sebeple developerlar için oluşturduğum ve kullanımı oldukça kolay olan kind kubernetes cluster kurulumu yapan shell scripti sizler ile paylaşmak istiyorum.

#!/bin/bash

function check_system() {
  if ! command -v docker > /dev/null; then
    echo "docker not installed, please install:"
    echo "https://docs.docker.com/get-docker/"
    exit 1
  fi
  if ! command -v kind > /dev/null; then
    echo "kind not installed, please install"
    echo "https://kind.sigs.k8s.io/docs/user/quick-start/#installation"
    exit 1
  fi
}

function create_kind_cluster() {
  kind create cluster \
    --name "ldev" \
    --config "${SCRIPT_DIR}/../cluster.yaml" \
    --image kindest/node:v1.26.6 || exit 1
  kubectl config use-context kind-ldev
}

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

check_system
create_kind_cluster

Scripti çalıştırmanızın ardından tüm requirementlar ile birlikte kind kurulumu gerçekleşecek ve local ortamınızda uygulamanızı çalıştıracağınız bir cluster’a sahip olacaksınız.

Aynı şekilde işinizi tamamlamanızın ardından bu cluster’ı ortadan kaldırmak için aşağıdaki scripti kullanabilirsiniz 😉

#!/bin/bash

function printUsage() {
  echo "You can use script by following structure:"
  echo "./kind-delete.sh [-argument VALUE]"
  echo "e.g."
  echo "./kind-delete.sh -n ldev"
  echo ""
  echo "Following arguments could be used:"
  echo " -n [value] | OPTIONAL | default=ldev | cluster name to use"
  exit 1
}

function check_system() {
  if ! command -v docker > /dev/null; then
    echo "docker not installed, please install:"
    echo "https://docs.docker.com/get-docker/"
    exit 1
  fi
  if [[ $(kind --version | grep -c 'kind version') -ne 1 ]]; then
    echo "kind not installed, please install"
    echo "https://kind.sigs.k8s.io/docs/user/quick-start/#installation"
    exit 1
  fi
}

function prepare_environment() {
  if [[ -z ${KIND_CLUSTER_NAME} ]]; then
    KIND_CLUSTER_NAME=ldev
  fi
}

function kind_delete() {
  kind delete cluster \
    --name "${KIND_CLUSTER_NAME}"
}

while getopts "n:" arg; do
  case "${arg}" in
  n)
    KIND_CLUSTER_NAME=${OPTARG} ;;
  *)
    printUsage
    ;;
  esac
done
shift $((OPTIND - 1))

check_system
prepare_environment
kind_delete

Developer’ların ve belirli testleri geçrkleştirmek isteyen DevOps engineer’ların işine yarayacağından şüphem yok.

Cheers.

Leave a Reply

Your email address will not be published. Required fields are marked *