85 lines
2.8 KiB
Makefile
85 lines
2.8 KiB
Makefile
.DEFAULT_GOAL := all
|
|
.PHONY: lint lint-yaml install-distributed install-single-binary uninstall update-chart update
|
|
|
|
# Optional image override, example: make install-distributed IMAGE=grafana/loki:2.9.0
|
|
IMAGE ?=
|
|
|
|
# Optional helm arguments, example: make install-distributed ARGS="--set loki.auth.enabled=true"
|
|
ARGS ?=
|
|
|
|
# Default arguments to disable affinity for testing
|
|
DEFAULT_ARGS = --set gateway.affinity=null \
|
|
--set ingester.affinity=null \
|
|
--set distributor.affinity=null \
|
|
--set querier.affinity=null \
|
|
--set queryFrontend.affinity=null \
|
|
--set queryScheduler.affinity=null \
|
|
--set indexGateway.affinity=null \
|
|
--set compactor.affinity=null \
|
|
--set ruler.affinity=null \
|
|
--set backend.affinity=null \
|
|
--set read.affinity=null \
|
|
--set write.affinity=null \
|
|
--set singleBinary.affinity=null \
|
|
--set memcachedChunks.affinity=null \
|
|
--set memcachedFrontend.affinity=null \
|
|
--set memcachedIndexQueries.affinity=null \
|
|
--set memcachedMetadata.affinity=null \
|
|
--set memcachedResults.affinity=null \
|
|
--set global.podAntiAffinity=null \
|
|
--set global.podAntiAffinityTopologyKey=null
|
|
|
|
# Generate image override flag if IMAGE is provided
|
|
IMAGE_FLAG = $(if $(IMAGE),\
|
|
$(eval PARTS=$(subst :, ,$(IMAGE)))\
|
|
$(eval REPO_PARTS=$(subst /, ,$(word 1,$(PARTS))))\
|
|
$(eval TAG=$(word 2,$(PARTS)))\
|
|
$(eval REPO_COUNT=$(words $(REPO_PARTS)))\
|
|
$(if $(filter 3,$(REPO_COUNT)),\
|
|
--set loki.image.registry=$(word 1,$(REPO_PARTS))/$(word 2,$(REPO_PARTS)) --set loki.image.repository=$(word 3,$(REPO_PARTS)),\
|
|
--set loki.image.registry=$(word 1,$(REPO_PARTS)) --set loki.image.repository=$(word 2,$(REPO_PARTS))\
|
|
) --set loki.image.tag=$(TAG),)
|
|
|
|
lint: lint-yaml
|
|
|
|
lint-yaml:
|
|
yamllint -c $(CURDIR)/src/.yamllint.yaml $(CURDIR)/src
|
|
|
|
# Helm chart installation targets
|
|
install-distributed:
|
|
helm upgrade --install loki . \
|
|
-f distributed-values.yaml \
|
|
--create-namespace \
|
|
--namespace loki \
|
|
$(DEFAULT_ARGS) \
|
|
$(IMAGE_FLAG) \
|
|
$(ARGS)
|
|
|
|
install-single-binary:
|
|
helm upgrade --install loki . \
|
|
-f single-binary-values.yaml \
|
|
--create-namespace \
|
|
--namespace loki \
|
|
$(DEFAULT_ARGS) \
|
|
$(IMAGE_FLAG) \
|
|
$(ARGS)
|
|
|
|
# Uninstall Loki helm release and optionally delete the namespace
|
|
uninstall:
|
|
helm uninstall loki --namespace loki
|
|
kubectl delete namespace loki --ignore-not-found
|
|
|
|
# Update Helm chart dependencies
|
|
update-chart:
|
|
helm dependency update .
|
|
|
|
# Update existing installation with latest changes
|
|
update:
|
|
@if [ "$$(helm get values loki -n loki -o yaml | grep "deploymentMode: Distributed")" ]; then \
|
|
echo "Updating distributed deployment..."; \
|
|
helm upgrade loki . -f distributed-values.yaml --namespace loki $(DEFAULT_ARGS) $(IMAGE_FLAG) $(ARGS); \
|
|
else \
|
|
echo "Updating single binary deployment..."; \
|
|
helm upgrade loki . -f single-binary-values.yaml --namespace loki $(DEFAULT_ARGS) $(IMAGE_FLAG) $(ARGS); \
|
|
fi
|