From d3e770254de0bb301815ca87257c8b1a357d06c4 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 26 Apr 2026 21:02:47 +0800 Subject: hehe --- Makefile | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..15c0031 --- /dev/null +++ b/Makefile @@ -0,0 +1,78 @@ +REPO_ROOT := $(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) +CHART_PATH := $(REPO_ROOT)/charts/llm-app +AGENT_SRC := $(REPO_ROOT)/agent/agent.py +AGENT_IMG := localhost/agent:0.1.0 +CLUSTER := llm-local +CONTEXT := kind-$(CLUSTER) + +export KIND_EXPERIMENTAL_PROVIDER=podman + +.PHONY: help +help: + @echo "Targets:" + @echo " up-dev deploy dev LLM (Qwen2.5-0.5B, 2 replicas)" + @echo " up-prod deploy prod LLM (Qwen2.5-1.5B, 1 replica + HPA 1->3)" + @echo " up-agent up-prod + tool-using agent" + @echo " ask Q='...' POST a question to the agent" + @echo " down destroy everything + delete kind cluster" + @echo "" + @echo "URLs (after up-dev/up-prod):" + @echo " Grafana http://grafana.localtest.me:8080 (admin/admin)" + @echo " curl -f http://grafana.localtest.me:8080/api/health" + @echo " Prometheus http://prom.localtest.me:8080" + @echo " curl -f http://prom.localtest.me:8080/-/healthy" + @echo "" + +.PHONY: up-dev +up-dev: + @kind get clusters | grep -qx $(CLUSTER) || kind create cluster --config $(REPO_ROOT)/cluster/kind-config.yaml + cd $(REPO_ROOT)/terraform/envs/bootstrap && \ + tofu init -upgrade && \ + tofu apply -auto-approve \ + -var kube_context=$(CONTEXT) + cd $(REPO_ROOT)/terraform/envs/dev && \ + tofu init -upgrade && \ + tofu apply -auto-approve \ + -var kube_context=$(CONTEXT) \ + -var chart_path=$(CHART_PATH) + +.PHONY: up-prod +up-prod: + @kind get clusters | grep -qx $(CLUSTER) || kind create cluster --config $(REPO_ROOT)/cluster/kind-config.yaml + cd $(REPO_ROOT)/terraform/envs/bootstrap && \ + tofu init -upgrade && \ + tofu apply -auto-approve \ + -var kube_context=$(CONTEXT) + cd $(REPO_ROOT)/terraform/envs/prod && \ + tofu init -upgrade && \ + tofu apply -auto-approve \ + -var kube_context=$(CONTEXT) \ + -var chart_path=$(CHART_PATH) + +.PHONY: up-agent +up-agent: up-prod + podman build -t $(AGENT_IMG) $(REPO_ROOT)/agent/ + @tmp=$$(mktemp -t agent-XXXXXX.tar); \ + podman save $(AGENT_IMG) -o $$tmp && \ + kind load image-archive $$tmp --name $(CLUSTER) && \ + rm -f $$tmp + cd $(REPO_ROOT)/terraform/envs/agent && \ + tofu init -upgrade && \ + tofu apply -auto-approve \ + -var kube_context=$(CONTEXT) \ + -var agent_source_path=$(AGENT_SRC) + +.PHONY: ask +ask: + @if [ -z "$(Q)" ]; then echo "usage: make ask Q='what is 17*23?'"; exit 1; fi + curl -s http://agent.localtest.me:8080/ask \ + -H 'Content-Type: application/json' \ + -d "$(shell printf '{"question":"%s"}' "$(Q)")" | python3 -m json.tool + +.PHONY: down +down: + -cd $(REPO_ROOT)/terraform/envs/agent && tofu destroy -auto-approve -var kube_context=$(CONTEXT) -var agent_source_path=$(AGENT_SRC) || true + -cd $(REPO_ROOT)/terraform/envs/prod && tofu destroy -auto-approve -var kube_context=$(CONTEXT) -var chart_path=$(CHART_PATH) || true + -cd $(REPO_ROOT)/terraform/envs/dev && tofu destroy -auto-approve -var kube_context=$(CONTEXT) -var chart_path=$(CHART_PATH) || true + -cd $(REPO_ROOT)/terraform/envs/bootstrap && tofu destroy -auto-approve -var kube_context=$(CONTEXT) || true + KIND_EXPERIMENTAL_PROVIDER=podman kind delete cluster --name $(CLUSTER) -- cgit