-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathdeploy.mk
More file actions
155 lines (141 loc) · 6.24 KB
/
deploy.mk
File metadata and controls
155 lines (141 loc) · 6.24 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
##@ Deploying
ifneq ($(CODESPACE_NAME),)
HELM_DESCRIPTION_FLAG = --set-string description="codespace: $(CODESPACE_NAME)"
endif
.PHONY: run
run: manifests generate fmt vet ## Run a controller from your host.
go run ./cmd/api/main.go
.PHONY: deploy
deploy: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy controller to the K8s cluster specified in ~/.kube/config.
helm upgrade $(HELM_RELEASE_NAME) $(HELM_CHART_DIR) --install \
--namespace $(KUBE_NAMESPACE) \
--create-namespace \
--set image.repository=$(IMG) \
--set image.tag="latest" \
--set-string podAnnotations."redeployTimestamp"="$(DEPLOY_ROLLOUT_TIMESTAMP)" \
--set podAnnotations."k8s\.ngrok\.com/test"="\{\"env\": \"local\"\}" \
--set credentials.apiKey=$(NGROK_API_KEY) \
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
--set log.format=console \
--set-string log.level="8" \
--set log.stacktraceLevel=panic \
--set metaData.env=local,metaData.from=makefile \
--set drainPolicy="Delete" \
$(HELM_DESCRIPTION_FLAG)
.PHONY: deploy_gateway
deploy_gateway: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy controller to the K8s cluster specified in ~/.kube/config.
helm upgrade $(HELM_RELEASE_NAME) $(HELM_CHART_DIR) --install \
--namespace $(KUBE_NAMESPACE) \
--create-namespace \
--set image.repository=$(IMG) \
--set image.tag="latest" \
--set-string podAnnotations."redeployTimestamp"="$(DEPLOY_ROLLOUT_TIMESTAMP)" \
--set podAnnotations."k8s\.ngrok\.com/test"="\{\"env\": \"local\"\}" \
--set credentials.apiKey=$(NGROK_API_KEY) \
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
--set log.format=console \
--set-string log.level="8" \
--set log.stacktraceLevel=panic \
--set metaData.env=local,metaData.from=makefile \
--set gateway.enabled=true \
--set drainPolicy="Delete" \
$(HELM_DESCRIPTION_FLAG)
.PHONY: deploy_with_bindings
deploy_with_bindings: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy controller to the K8s cluster specified in ~/.kube/config.
helm upgrade $(HELM_RELEASE_NAME) $(HELM_CHART_DIR) --install \
--namespace $(KUBE_NAMESPACE) \
--create-namespace \
--set image.repository=$(IMG) \
--set image.tag="latest" \
--set-string podAnnotations."redeployTimestamp"="$(DEPLOY_ROLLOUT_TIMESTAMP)" \
--set podAnnotations."k8s\.ngrok\.com/test"="\{\"env\": \"local\"\}" \
--set credentials.apiKey=$(NGROK_API_KEY) \
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
--set log.format=console \
--set log.level=debug \
--set log.stacktraceLevel=panic \
--set metaData.env=local,metaData.from=makefile \
--set bindings.enabled=true \
--set drainPolicy="Delete" \
$(HELM_DESCRIPTION_FLAG)
.PHONY: deploy_for_e2e
deploy_for_e2e: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy controller to the K8s cluster specified in ~/.kube/config.
helm upgrade $(HELM_RELEASE_NAME) $(HELM_CHART_DIR) --install \
--namespace $(KUBE_NAMESPACE) \
--create-namespace \
--set oneClickDemoMode=$(DEPLOY_ONE_CLICK_DEMO_MODE) \
--set image.repository=$(IMG) \
--set image.tag="latest" \
--set image.pullPolicy="Never" \
--set-string podAnnotations."redeployTimestamp"="$(DEPLOY_ROLLOUT_TIMESTAMP)" \
--set podAnnotations."k8s\.ngrok\.com/test"="\{\"env\": \"e2e\"\}" \
--set credentials.apiKey=$(NGROK_API_KEY) \
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
--set log.format=console \
--set log.level=debug \
--set log.stacktraceLevel=panic \
--set metaData.env=local,metaData.from=makefile \
--set bindings.enabled=true \
--set bindings.serviceAnnotations.annotation1="val1" \
--set bindings.serviceAnnotations.annotation2="val2" \
--set bindings.serviceLabels.label1="val1" \
--set drainPolicy="Delete"
.PHONY: deploy_multi_namespace
## 1. We want to install the CRDs only once at the beginning
## 2. We want to make a namespace-a and namespace-b
## 3. We want to install the helm chart twice, watching only the namespace belonging to each one
deploy_multi_namespace: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy multiple copies of the controller to the K8s cluster specified in ~/.kube/config.
helm upgrade ngrok-operator-crds $(CRD_CHART_DIR) --install \
--kube-context=kind-$(KIND_CLUSTER_NAME) \
--namespace kube-system \
--create-namespace
helm upgrade ngrok-operator-a $(HELM_CHART_DIR) --install \
--kube-context=kind-$(KIND_CLUSTER_NAME) \
--namespace namespace-a \
--create-namespace \
--set installCRDs=false \
--set image.repository=$(IMG) \
--set image.tag="latest" \
--set ingress.controllerName="k8s.ngrok.com/ingress-controller-a" \
--set ingress.ingressClass.name="ngrok-a" \
--set ingress.watchNamespace="namespace-a" \
--set watchNamespace=namespace-a \
--set credentials.apiKey=$(NGROK_API_KEY) \
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
--set log.format=console \
--set-string log.level="8" \
--set log.stacktraceLevel=panic \
--set metaData.env=local,metaData.from=makefile \
$(HELM_DESCRIPTION_FLAG)
helm upgrade ngrok-operator-b $(HELM_CHART_DIR) --install \
--kube-context=kind-$(KIND_CLUSTER_NAME) \
--namespace namespace-b \
--create-namespace \
--set installCRDs=false \
--set ingress.controllerName="k8s.ngrok.com/ingress-controller-b" \
--set ingress.ingressClass.name="ngrok-b" \
--set ingress.watchNamespace="namespace-b" \
--set image.repository=$(IMG) \
--set image.tag="latest" \
--set watchNamespace=namespace-b \
--set credentials.apiKey=$(NGROK_API_KEY) \
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
--set log.format=console \
--set-string log.level="8" \
--set log.stacktraceLevel=panic \
--set metaData.env=local,metaData.from=makefile \
$(HELM_DESCRIPTION_FLAG)
.PHONY: kind-load-image
kind-load-image: ## Load the locally built image into the kind cluster.
kind load docker-image $(IMG) --name $(KIND_CLUSTER_NAME)
.PHONY: _deploy-check-env-vars
_deploy-check-env-vars:
ifndef NGROK_API_KEY
$(error An NGROK_API_KEY must be set)
endif
ifndef NGROK_AUTHTOKEN
$(error An NGROK_AUTHTOKEN must be set)
endif
.PHONY: undeploy
undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
helm uninstall ngrok-operator --namespace $(KUBE_NAMESPACE)