Skip to content

Instantly share code, notes, and snippets.

@spacelatte
Created August 29, 2020 18:52
Show Gist options
  • Save spacelatte/86f451d213c5e3ba887e67fa65079b7d to your computer and use it in GitHub Desktop.
Save spacelatte/86f451d213c5e3ba887e67fa65079b7d to your computer and use it in GitHub Desktop.
kubernetes k8s makefile download tools utilities
#!/usr/bin/env make -f
TOOLS := \
kn \
k3d \
rke \
kind \
kops \
krew \
kubens \
kubectx \
kubectl \
kompose \
minikube \
skaffold \
stern \
helm
#coredns
OS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH := amd64
REL_kn = https://api.github.com/repos/knative/client/releases/tags/v0.16.0
URL_kn = https://github.com/knative/client/releases/download/${VER}/kn-$(OS)-$(ARCH)
REL_k3s = https://api.github.com/repos/rancher/k3s/releases/latest
URL_k3s = https://github.com/rancher/k3s/releases/download/${VER}/k3s-$(ARCH)
REL_k3d = https://api.github.com/repos/rancher/k3d/releases/latest
URL_k3d = https://github.com/rancher/k3d/releases/download/${VER}/k3d-$(OS)-$(ARCH)
REL_rke = https://api.github.com/repos/rancher/rke/releases/latest
URL_rke = https://github.com/rancher/rke/releases/download/${VER}/rke_$(OS)-$(ARCH)
REL_helm = https://api.github.com/repos/helm/helm/releases/tags/v3.2.4
URL_helm = https://get.helm.sh/helm-${VER}-$(OS)-$(ARCH).tar.gz
EXT_helm = file -bzI "$@-$(OS)-${VER}" | grep -q 'application/x-tar' || exit 0; \
tar --strip=1 -xzvf "$@-$(OS)-${VER}" "$(OS)-$(ARCH)/$*" && mv -vf "$*" "$@-$(OS)-${VER}"
REL_kind = https://api.github.com/repos/kubernetes-sigs/kind/releases/latest
URL_kind = https://kind.sigs.k8s.io/dl/${VER}/kind-$(OS)-$(ARCH)
REL_kops = https://api.github.com/repos/kubernetes/kops/releases/latest
URL_kops = https://github.com/kubernetes/kops/releases/download/${VER}/kops-$(OS)-$(ARCH)
REL_krew = https://api.github.com/repos/kubernetes-sigs/krew/releases/latest
URL_krew = https://github.com/kubernetes-sigs/krew/releases/download/${VER}/krew.tar.gz
EXT_krew = file -bzI "$@-$(OS)-${VER}" | grep -q 'application/x-tar' || exit 0; \
tar xzvf "$@-$(OS)-${VER}" "$*-$(OS)_$(ARCH)" && mv -vf "$*-$(OS)_$(ARCH)" "$@-$(OS)-${VER}"
REL_kubens = https://api.github.com/repos/ahmetb/kubectx/releases/latest
URL_kubens = https://github.com/ahmetb/kubectx/releases/download/${VER}/kubens
REL_kubectx = https://api.github.com/repos/ahmetb/kubectx/releases/latest
URL_kubectx = https://github.com/ahmetb/kubectx/releases/download/${VER}/kubectx
REL_kubectl = https://storage.googleapis.com/kubernetes-release/release/stable.txt
REL_kubectl = https://api.github.com/repos/kubernetes/kubernetes/releases/latest
URL_kubectl = https://storage.googleapis.com/kubernetes-release/release/${VER}/bin/$(OS)/$(ARCH)/kubectl
REL_kompose = https://api.github.com/repos/kubernetes/kompose/releases/latest
URL_kompose = https://github.com/kubernetes/kompose/releases/download/${VER}/kompose-$(OS)-$(ARCH)
REL_minikube = https://api.github.com/repos/kubernetes/minikube/releases/latest
URL_minikube = https://storage.googleapis.com/minikube/releases/${VER}/minikube-$(OS)-$(ARCH)
URL_minikube = https://github.com/kubernetes/minikube/releases/download/${VER}/minikube-$(OS)-$(ARCH)
REL_skaffold = https://api.github.com/repos/GoogleContainerTools/skaffold/releases/latest
URL_skaffold = https://storage.googleapis.com/skaffold/releases/${VER}/skaffold-$(OS)-$(ARCH)
URL_skaffold = https://github.com/GoogleContainerTools/skaffold/releases/download/${VER}/skaffold-$(OS)-$(ARCH)
REL_stern = https://api.github.com/repos/wercker/stern/releases/latest
URL_stern = https://github.com/wercker/stern/releases/download/${VER}/stern_$(OS)_$(ARCH)
REL_coredns = https://api.github.com/repos/coredns/coredns/releases/latest
URL_coredns = https://github.com/coredns/coredns/releases/download/${VER}/coredns_$$(echo ${VER} | cut -b2-)_$(OS)_$(ARCH).tgz
EXT_coredns = file -bzI "$@-$(OS)-${VER}" | grep -q 'application/x-tar' || exit 0; \
tar xzvf "$@-$(OS)-${VER}" "$*-$(OS)_$(ARCH)" && mv -vf "$*-$(OS)_$(ARCH)" "$@-$(OS)-${VER}"
# https://github.com/kubernetes-sigs/kustomize/releases/download/api%2Fv0.5.1/api_v0.5.1_darwin_amd64.tar.gz
# https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv3.8.1/kustomize_v3.8.1_darwin_amd64.tar.gz
# https://github.com/kubernetes-sigs/kubefed/releases/download/v0.3.1/kubefedctl-0.3.1-darwin-amd64.tgz
all: $(addprefix bin/, $(TOOLS) )
@echo '********************************************************************'
@echo '==> ADD $(PWD)/bin or $(CURDIR)/bin to $$PATH !!! <=='
@echo '********************************************************************'
.PRECIOUS: %.json
%.json:
@echo "CURL -o '$@' '$(REL_$*)' #"
@curl --compressed -#4Lfm5 -o "$@" -z "$@" "$(REL_$*)"
bin/%: export VER = $$(grep 'tag_name' "$<" | cut -d\" -f4 || head -1 "$<")
bin/%: %.json bin
@echo "CURL -o '$@-$(OS)-${VER}' '$(URL_$*)' #"
@curl --compressed -#4Lf -o "$@-$(OS)-${VER}" -z "$@-$(OS)-${VER}" "$(URL_$*)"
@echo "IF '$(EXT_$*)' -> '$(EXT_$*)' #"
@test -z "$(EXT_$*)" || $(SHELL) -xc '$(EXT_$*) && touch "$@-$(OS)-${VER}";'
@echo "LN '$@-$(OS)-${VER}' -> '$@' #"
@ln -vsfF "$*-$(OS)-${VER}" "$@"
@echo "CHMOD '$@-$(OS)-${VER}' '$@' '$(ARCH)' #"
@chmod a+rx "$@-$(OS)-${VER}"
bin:
mkdir -p "$@"
clean:
rm -rf $(addprefix bin/, $(TOOLS) ) $(addsuffix .json $(TOOLS) )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment