#!/bin/bash -ex cluster_name='local' k3s_registry_config="$HOME/.config/k3d/registries.yaml" # generate manifest to be deployed on boot make auto-deploy auto_deploy_manifest="$(dirname "$(readlink -f "$0")")/build/dev/auto-deploy.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 \ --k3s-server-arg '--no-deploy=traefik' \ --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/auto-deploy.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" \ --volume local_registry:/var/lib/registry \ --restart always \ -p 5000:5000 \ registry:2 fi # local mariadb database if ! docker ps -a | grep mariadb-localhost &>/dev/null; then docker volume create local_mariadb docker run -d \ --name mariadb-localhost \ --net "k3d-$cluster_name" \ --volume local_mariadb:/var/lib/mysql \ --restart always \ --env MYSQL_ROOT_PASSWORD=changeme \ -p 3306:3306 \ mariadb:10.5 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" \ --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 docker exec mariadb-localhost mysql -vv -uroot -pchangeme -e " CREATE DATABASE IF NOT EXISTS gitea; CREATE USER IF NOT EXISTS 'gitea'@'%' IDENTIFIED BY 'changeme'; GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'%'; CREATE DATABASE IF NOT EXISTS grafana; CREATE USER IF NOT EXISTS 'grafana'@'%' IDENTIFIED BY 'changeme'; GRANT ALL PRIVILEGES ON grafana.* TO 'grafana'@'%'; CREATE DATABASE IF NOT EXISTS nextcloud; CREATE USER IF NOT EXISTS 'nextcloud'@'%' IDENTIFIED BY 'changeme'; GRANT ALL PRIVILEGES ON grafana.* TO 'nextcloud'@'%'; FLUSH PRIVILEGES; " k3d kubeconfig merge "$cluster_name" --switch-context >/dev/null kubectl apply -f "$auto_deploy_manifest" kubectl get nodes