forked from civo/kubernetes-marketplace
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
71 lines (61 loc) · 2.19 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
VERSION?="2.9.11"
CHART_URL?="https://grafana.github.io/helm-charts"
# For cli directly installed
CIVO_CMD?="civo"
# For Docker
#CIVO_CMD?=docker run -it --rm -v $$HOME/.civo.json:/.civo.json civo/cli:latest
CIVO_TEST_CLUSTER_NAME?=loki-test
CIVO_KUBECONFIG?=kubeconfig.$(CIVO_TEST_CLUSTER_NAME)
KUBECTL?=kubectl --kubeconfig=$(CIVO_KUBECONFIG)
# Depends on yq from https://github.com/mikefarah/yq for parsing
.PHONY: latest_version
latest_version:
@curl -s $(CHART_URL)/index.yaml | yq r - 'entries.loki-stack[*].version' | sort -t "." -k1,1n -k2,2n -k3,3n | tail -1
.PHONY: build
build: app.yaml
app.yaml:
# Whatever commands are needed to build the app.yaml. Kustomize example below
@sed "s/VERSION/$(VERSION)/g" app.yaml.tmpl > app.yaml
# Test final app.yaml for validity
@echo "Testing validity of app.yaml"
@$(KUBECTL) apply -f app.yaml --dry-run=client > /dev/null
@echo "Clean app.yaml generated"
.PHONY: clean
clean:
@rm app.yaml
.PHONY: test
test: $(CIVO_KUBECONFIG) test-noclean cluster-clean
.PHONY: test-keep
test-keep: $(CIVO_KUBECONFIG) test-noclean
.PHONY: test-noclean
# Took nearly two minutes for loki to come up...testing look to compensate
test-noclean:
@echo "Applying manifest and test run"
@$(KUBECTL) apply -f app.yaml
@sleep 30
@$(KUBECTL) create -f test-manifests/testjob.yaml
@sleep 10
@echo "Checking status of test run"
@for i in $$(seq 1 10); do \
echo Test $$i; \
if $(KUBECTL) get job testjob -n loki -ojson | jq -r .status.conditions[0].type | grep -q Complete; then \
break; \
else \
sleep 20; \
fi; \
if [ $$i -gt 9 ]; then \
exit 1; \
fi; \
done
@echo "Success!"
.PHONY: cluster-clean
cluster-clean:
@echo "Tearing down test cluster!"
@$(CIVO_CMD) k3s remove -y $(CIVO_TEST_CLUSTER_NAME) || true
@rm $(CIVO_KUBECONFIG)
$(CIVO_KUBECONFIG):
@echo "Creating $(CIVO_TEST_CLUSTER_NAME)"
@$(CIVO_CMD) k3s create $(CIVO_TEST_CLUSTER_NAME) -n 3 --size g4s.kube.small -a prometheus-operator --wait
@$(CIVO_CMD) k3s config $(CIVO_TEST_CLUSTER_NAME) > $(CIVO_KUBECONFIG)
@echo "Waiting for all 3 nodes to come up"
@for i in $$(seq 1 10); do echo Test $$i; if [ "$$($(KUBECTL) get nodes | grep Ready | wc -l)" = "3" ]; then break; else sleep 10; fi; done