#!/bin/bash -ex cluster_name='local' k3s_registry_config="$HOME/.config/k3d/registries.yaml" # generate manifest to be deployed on boot # make cluster # auto_deploy_manifest="$(dirname "$(readlink -f "$0")")/build/dev/cluster.yaml" # cluster registry configuration if [[ ! -f "$k3s_registry_cofing" ]]; then mkdir -p "$(dirname "$k3s_registry_config")" cat >"$k3s_registry_config" </dev/null; then k3d cluster create "$cluster_name" \ --servers 1 \ --agents 3 \ --volume "$k3s_registry_config:/etc/rancher/k3s/registries.yaml" \ -p 80:80@loadbalancer \ -p 443:443@loadbalancer sleep 10 fi # --volume ":/var/lib/rancher/k3s/server/manifests/cluster.yaml" \ # local docker registry if ! docker ps -a | grep registry-localhost &>/dev/null; then docker volume create local_registry docker run -d \ --name registry-localhost \ --net "k3d-$cluster_name" \ --ip 172.18.1.1 \ --volume local_registry:/var/lib/registry \ --restart always \ -p 5000:5000 \ registry:2 fi # local postgres database if ! docker ps -a | grep postgres-localhost &>/dev/null; then docker volume create local_postgres docker run -d \ --name postgres-localhost \ --net "k3d-$cluster_name" \ --ip 172.18.1.2 \ --volume local_postgres:/var/lib/postgresql/data \ --volume "$PWD/.postgres/initdb.sql:/docker-entrypoint-initdb.d/initdb.sql:ro" \ --restart always \ --env POSTGRES_PASSWORD=changeme \ -p 5432:5432 \ postgres:9.6 sleep 10 fi # local nfs server if ! docker ps -a | grep nfs-localhost &>/dev/null; then docker volume create local_nfs docker run -d \ --name nfs-localhost \ --net "k3d-$cluster_name" \ --ip 172.18.1.3 \ --volume nfs_local:/data \ --volume /lib/modules:/lib/modules:ro \ --restart always \ --cap-add SYS_ADMIN \ --cap-add SYS_MODULE \ --env NFS_EXPORT_0='/data *(rw,async,insecure,no_subtree_check,no_root_squash,fsid=0)' \ --env NFS_DISABLE_VERSION_3=YES \ --env NFS_LOG_LEVEL=DEBUG \ -p 2049:2049 \ erichough/nfs-server:2.2.1 sleep 10 fi # k3d kubeconfig merge "$cluster_name" --switch-context >/dev/null # kubectl apply -f "$auto_deploy_manifest" kubectl config use-context "k3d-$cluster_name" kubectl get nodes