Last active
March 16, 2022 21:13
-
-
Save pentago/785dbe6251fba12bd37505daad583a57 to your computer and use it in GitHub Desktop.
k3d-multi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SHELL := /bin/sh | |
help: ## Usage: 'make <target>' where target is: new, up, down, all, tf, destroy, clean. | |
@egrep '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' | |
new: clean ## Provisions k3s cluster | |
@k3d cluster create --config config.yaml | |
up: ## Starts k3s cluster | |
@k3d cluster start k3d --all | |
down: ## Stops k3s cluster | |
@k3d cluster stop k3d --all | |
all: clean ## Provisions k3s cluster and runs Terraform | |
@k3d cluster create --config config.yaml && sleep 30 && terraform init && terraform apply -auto-approve | |
tf: ## Runs Terraform manifest | |
@terraform init -upgrade && terraform apply -auto-approve -target=module.local | |
destroy: ## Destroys k3s clusters | |
@k3d cluster delete --all | |
clean: ## Destroys clusters and cleans Terraform leftovers | |
@k3d cluster delete --all && rm -rf .terraform* terraform.* && rm -rf ~/.kube/k3d-* | |
kubeconfig-single: | |
@export KUBECONFIG=$HOME/.kube/k3d.yaml | |
kubeconfig-multi: | |
@export KUBECONFIG=$HOME/.kube/k3d-gitops.yaml:$HOME/.kube/k3d-development.yaml:$HOME/.kube/k3d-production.yaml | |
kubeconfig-default: | |
@export KUBECONFIG=$HOME/.kube/config | |
.ONESHELL: | |
multi: clean kubeconfig-multi ## Create k3s multi-cluster setup | |
@k3d cluster create \ | |
--servers 1 \ | |
--agents 1 \ | |
--api-port 64432 \ | |
--network multicluster \ | |
--image rancher/k3s:v1.21.6-k3s1 \ | |
--token superSecretToken \ | |
--timeout 60s \ | |
--port 8082:80@loadbalancer:0 \ | |
--port 4432:443@loadbalancer:0 \ | |
--k3s-arg "--kube-apiserver-arg=feature-gates=EphemeralContainers=true@server:0" \ | |
--k3s-arg "--kube-scheduler-arg=feature-gates=EphemeralContainers=true@server:0" \ | |
--k3s-arg "--kubelet-arg=feature-gates=EphemeralContainers=true@agent:0" \ | |
--k3s-arg "--cluster-cidr=10.1.0.0/16@server:0" \ | |
--k3s-arg "--service-cidr=10.0.0.0/16@server:0" \ | |
--k3s-arg "--etcd-disable-snapshots@server:0" \ | |
--k3s-arg "--tls-san=k3d-development-serverlb@server:0" \ | |
--k3s-arg "--disable=traefik@server:0" \ | |
--k3s-arg "--disable=network-policy@server:0" \ | |
--k3s-arg "--disable=cloud-controller@server:0" \ | |
--k3s-node-label tier=server@server:0 \ | |
--k3s-node-label tier=worker@agent:0 \ | |
--k3s-node-label worker=a@agent:0 \ | |
--wait development; \ | |
\ | |
k3d kubeconfig get development > /Users/dzhi/.kube/k3d-development.yaml; \ | |
\ | |
k3d cluster create \ | |
--servers 1 \ | |
--agents 1 \ | |
--api-port 64433 \ | |
--network multicluster \ | |
--image rancher/k3s:v1.21.6-k3s1 \ | |
--token superSecretToken \ | |
--timeout 60s \ | |
--port 8083:80@loadbalancer:0 \ | |
--port 4433:443@loadbalancer:0 \ | |
--k3s-arg "--kube-apiserver-arg=feature-gates=EphemeralContainers=true@server:0" \ | |
--k3s-arg "--kube-scheduler-arg=feature-gates=EphemeralContainers=true@server:0" \ | |
--k3s-arg "--kubelet-arg=feature-gates=EphemeralContainers=true@agent:0" \ | |
--k3s-arg "--cluster-cidr=10.1.0.0/16@server:0" \ | |
--k3s-arg "--service-cidr=10.0.0.0/16@server:0" \ | |
--k3s-arg "--etcd-disable-snapshots@server:0" \ | |
--k3s-arg "--tls-san=k3d-production-serverlb@server:0" \ | |
--k3s-arg "--disable=traefik@server:0" \ | |
--k3s-arg "--disable=network-policy@server:0" \ | |
--k3s-arg "--disable=cloud-controller@server:0" \ | |
--k3s-node-label tier=server@server:0 \ | |
--k3s-node-label tier=worker@agent:0 \ | |
--k3s-node-label worker=a@agent:0 \ | |
--wait production; \ | |
\ | |
k3d kubeconfig get production > /Users/dzhi/.kube/k3d-production.yaml; \ | |
\ | |
k3d cluster create \ | |
--servers 1 \ | |
--agents 1 \ | |
--api-port 64431 \ | |
--network multicluster \ | |
--image rancher/k3s:v1.21.6-k3s1 \ | |
--token superSecretToken \ | |
--timeout 60s \ | |
--port 8081:80@loadbalancer:0 \ | |
--port 4431:443@loadbalancer:0 \ | |
--k3s-arg "--kube-apiserver-arg=feature-gates=EphemeralContainers=true@server:0" \ | |
--k3s-arg "--kube-scheduler-arg=feature-gates=EphemeralContainers=true@server:0" \ | |
--k3s-arg "--kubelet-arg=feature-gates=EphemeralContainers=true@agent:0" \ | |
--k3s-arg "--cluster-cidr=10.1.0.0/16@server:0" \ | |
--k3s-arg "--service-cidr=10.0.0.0/16@server:0" \ | |
--k3s-arg "--etcd-disable-snapshots@server:0" \ | |
--k3s-arg "--tls-san=k3d-gitops-serverlb@server:0" \ | |
--k3s-arg "--disable=traefik@server:0" \ | |
--k3s-arg "--disable=network-policy@server:0" \ | |
--k3s-arg "--disable=cloud-controller@server:0" \ | |
--k3s-node-label tier=server@server:0 \ | |
--k3s-node-label tier=worker@agent:0 \ | |
--k3s-node-label worker=a@agent:0 \ | |
--wait gitops; \ | |
\ | |
k3d kubeconfig get gitops > /Users/dzhi/.kube/k3d-gitops.yaml \ | |
dev-cluster-development: ## Applies module 'dev-cluster-development' | |
@terraform init -upgrade \ | |
&& terraform apply -auto-approve -target=module.dev-cluster-development \ | |
&& sed -i '' 's/0\.0\.0\.0/k3d-development-serverlb/g' /Users/dzhi/.kube/k3d-development.yaml | |
dev-cluster-production: ## Applies module 'dev-cluster-production' | |
@terraform init -upgrade \ | |
&& terraform apply -auto-approve -target=module.dev-cluster-production \ | |
&& sed -i '' 's/0\.0\.0\.0/k3d-production-serverlb/g' /Users/dzhi/.kube/k3d-production.yaml | |
dev-cluster-gitops: ## Applies module 'dev-cluster-gitops' | |
@terraform init -upgrade \ | |
&& terraform apply -auto-approve -target=module.dev-cluster-gitops \ | |
&& sed -i '' 's/0\.0\.0\.0/k3d-gitops-serverlb/g' /Users/dzhi/.kube/k3d-gitops.yaml \ | |
&& argocd login argocd.glorify.lan:4431 --grpc-web --username admin --password 'midnajt blu' | |
dev-clusters: dev-cluster-development dev-cluster-production dev-cluster-gitops ## Applies all dev cluster modules | |
multi-all: clean multi kubeconfig-multi dev-cluster-development dev-cluster-production dev-cluster-gitops ## Create k3s multi-cluster setup and applies Terarform |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment