|
| 1 | +.DEFAULT_GOAL := all |
| 2 | +.PHONY: lint lint-yaml install-distributed install-single-binary uninstall update-chart update |
| 3 | + |
| 4 | +# Optional image override, example: make install-distributed IMAGE=grafana/loki:2.9.0 |
| 5 | +IMAGE ?= |
| 6 | + |
| 7 | +# Optional helm arguments, example: make install-distributed ARGS="--set loki.auth.enabled=true" |
| 8 | +ARGS ?= |
| 9 | + |
| 10 | +# Default arguments to disable affinity for testing |
| 11 | +DEFAULT_ARGS = --set gateway.affinity=null \ |
| 12 | + --set ingester.affinity=null \ |
| 13 | + --set distributor.affinity=null \ |
| 14 | + --set querier.affinity=null \ |
| 15 | + --set queryFrontend.affinity=null \ |
| 16 | + --set queryScheduler.affinity=null \ |
| 17 | + --set indexGateway.affinity=null \ |
| 18 | + --set compactor.affinity=null \ |
| 19 | + --set ruler.affinity=null \ |
| 20 | + --set backend.affinity=null \ |
| 21 | + --set read.affinity=null \ |
| 22 | + --set write.affinity=null \ |
| 23 | + --set singleBinary.affinity=null \ |
| 24 | + --set memcachedChunks.affinity=null \ |
| 25 | + --set memcachedFrontend.affinity=null \ |
| 26 | + --set memcachedIndexQueries.affinity=null \ |
| 27 | + --set memcachedMetadata.affinity=null \ |
| 28 | + --set memcachedResults.affinity=null \ |
| 29 | + --set global.podAntiAffinity=null \ |
| 30 | + --set global.podAntiAffinityTopologyKey=null |
| 31 | + |
| 32 | +# Generate image override flag if IMAGE is provided |
| 33 | +IMAGE_FLAG = $(if $(IMAGE),\ |
| 34 | + $(eval PARTS=$(subst :, ,$(IMAGE)))\ |
| 35 | + $(eval REPO_PARTS=$(subst /, ,$(word 1,$(PARTS))))\ |
| 36 | + $(eval TAG=$(word 2,$(PARTS)))\ |
| 37 | + $(eval REPO_COUNT=$(words $(REPO_PARTS)))\ |
| 38 | + $(if $(filter 3,$(REPO_COUNT)),\ |
| 39 | + --set loki.image.registry=$(word 1,$(REPO_PARTS))/$(word 2,$(REPO_PARTS)) --set loki.image.repository=$(word 3,$(REPO_PARTS)),\ |
| 40 | + --set loki.image.registry=$(word 1,$(REPO_PARTS)) --set loki.image.repository=$(word 2,$(REPO_PARTS))\ |
| 41 | + ) --set loki.image.tag=$(TAG),) |
| 42 | + |
| 43 | +lint: lint-yaml |
| 44 | + |
| 45 | +lint-yaml: |
| 46 | + yamllint -c $(CURDIR)/src/.yamllint.yaml $(CURDIR)/src |
| 47 | + |
| 48 | +# Helm chart installation targets |
| 49 | +install-distributed: |
| 50 | + helm upgrade --install loki . \ |
| 51 | + -f distributed-values.yaml \ |
| 52 | + --create-namespace \ |
| 53 | + --namespace loki \ |
| 54 | + $(DEFAULT_ARGS) \ |
| 55 | + $(IMAGE_FLAG) \ |
| 56 | + $(ARGS) |
| 57 | + |
| 58 | +install-single-binary: |
| 59 | + helm upgrade --install loki . \ |
| 60 | + -f single-binary-values.yaml \ |
| 61 | + --create-namespace \ |
| 62 | + --namespace loki \ |
| 63 | + $(DEFAULT_ARGS) \ |
| 64 | + $(IMAGE_FLAG) \ |
| 65 | + $(ARGS) |
| 66 | + |
| 67 | +# Uninstall Loki helm release and optionally delete the namespace |
| 68 | +uninstall: |
| 69 | + helm uninstall loki --namespace loki |
| 70 | + kubectl delete namespace loki --ignore-not-found |
| 71 | + |
| 72 | +# Update Helm chart dependencies |
| 73 | +update-chart: |
| 74 | + helm dependency update . |
| 75 | + |
| 76 | +# Update existing installation with latest changes |
| 77 | +update: |
| 78 | + @if [ "$$(helm get values loki -n loki -o yaml | grep "deploymentMode: Distributed")" ]; then \ |
| 79 | + echo "Updating distributed deployment..."; \ |
| 80 | + helm upgrade loki . -f distributed-values.yaml --namespace loki $(DEFAULT_ARGS) $(IMAGE_FLAG) $(ARGS); \ |
| 81 | + else \ |
| 82 | + echo "Updating single binary deployment..."; \ |
| 83 | + helm upgrade loki . -f single-binary-values.yaml --namespace loki $(DEFAULT_ARGS) $(IMAGE_FLAG) $(ARGS); \ |
| 84 | + fi |
0 commit comments