-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
100 lines (78 loc) · 2.54 KB
/
Makefile
File metadata and controls
100 lines (78 loc) · 2.54 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Makefile#
# Envs
#
TAG := latest
UI_APP_NAME := ui-server
UI_DEV_TARGET := dev
UI_TEST_TARGET := test
IMAGE_NAME := $(UI_APP_NAME)-$(UI_DEV_TARGET):$(TAG)
DOCKERFILE_DIR := .
DOCKERFILE_NAME := Dockerfile.dev
CONTEXT_DIR := .
NAMESPACE := ui
CLUSTER_NAME := cmkcluster
CHART_VALUES :=
CHART_DIR ?= ./charts
#
# Docker commands
#
.PHONY: docker-dev-build docker-dev-run
# Target to build Docker image
docker-dev-build:
docker build -f $(DOCKERFILE_DIR)/$(DOCKERFILE_NAME) -t $(IMAGE_NAME) $(CONTEXT_DIR)
# Target to run Docker image
docker-dev-run:
docker run -it -p 8080:8080 $(IMAGE_NAME)
#
# Helm commands
#
.PHONY: build-helm apply-helm-chart apply-ui-helm-chart
# Target to build helm chart
build-helm:
helm dependency build $(CHAR_DIR)
# Target to apply helm chart
apply-helm-chart:
@echo "Applying Helm chart."
helm upgrade --install $(CHART_NAME) $(CHART_DIR) --values $(CHART_VALUES) --namespace $(NAMESPACE) --create-namespace
# Target to apply UI helm chart
apply-ui-helm-chart:
@echo "Applying UI Helm chart."
@$(MAKE) apply-helm-chart CHART_NAME=ui NAMESPACE=ui
# Target to port forward UI app from cluster port 8080 to local port 80
port-forward: wait-for-svc-cmk
kubectl port-forward --namespace $(NAMESPACE) svc/ui-ui-app 8086:8080
wait-for-pod:
@echo "Waiting for pod with label $(LABEL) in namespace $(NAMESPACE) to be Running..."
@while [ -z "$$(kubectl get pod -n $(NAMESPACE) -l $(LABEL) -o jsonpath='{.items[*].metadata.name}')" ]; do \
echo "No pods found, waiting for pod creation..."; \
sleep 2; \
done
@while [ "$$(kubectl get pod -n $(NAMESPACE) -l $(LABEL) -o jsonpath='{.items[0].status.phase}' 2>/dev/null)" != "Running" ]; do \
echo "Pod not ready, waiting..."; \
sleep 2; \
done
@echo "Pod is Running!"
wait-for-svc-cmk:
@$(MAKE) wait-for-pod LABEL=app.kubernetes.io/instance=ui
#
# k3d commands
#
.PHONY: k3d-import-image k3d-build-helm k3d-import-ui-image k3d-start-ui
# Target to build helm chart for k3d
k3d-build-helm: build-helm
# Target to build Docker image within k3d
k3d-import-image:
@echo "Importing Docker image into k3d."
k3d image import $(APPLY_IMAGE_NAME) -c $(CLUSTER_NAME)
# Target to import a UI image within k3d
k3d-import-ui-image:
@echo "Importing UI image within k3d."
@$(MAKE) k3d-import-image APPLY_IMAGE_NAME=$(IMAGE_NAME)
# Target to start UI locally on k3d
k3d-start-ui: docker-dev-build k3d-import-ui-image apply-ui-helm-chart port-forward
#
# Gardener commands
#
.PHONY: gardener-build-helm gardener-apply-ui-helm-chart
# Target to build helm chart for Gardener
gardener-build-helm: build-helm