@@ -20,7 +20,8 @@ ILAB_KUBE_CONTEXT?=kind-instructlab-ui
20
20
ILAB_KUBE_NAMESPACE? =instructlab
21
21
ILAB_KUBE_CLUSTER_NAME? =instructlab-ui
22
22
CONTAINER_ENGINE? =docker
23
- DEVCONTAINER_BINARY_EXISTS ?= $(shell command -v devcontainer)
23
+ DEVCONTAINER_BINARY_EXISTS? =$(shell command -v devcontainer)
24
+ DEVCONTAINER_DEFAULT_SHELL? =zsh
24
25
TAG =$(shell git rev-parse HEAD)
25
26
# #@ Development - Helper commands for development
26
27
.PHONY : md-lint
@@ -111,9 +112,20 @@ check-kubectl:
111
112
exit 1 ; \
112
113
fi
113
114
115
+ .PHONY : check-kubeseal
116
+ check-kubeseal :
117
+ $(CMD_PREFIX ) if [ -z " $( shell which kubeseal) " ]; then \
118
+ echo " Please install kubeseal" ; \
119
+ echo " https://github.com/bitnami-labs/sealed-secrets?tab=readme-ov-file#kubeseal" ; \
120
+ exit 1 ; \
121
+ fi
122
+
114
123
.PHONY : load-images
115
124
load-images : # # Load images onto Kind cluster
125
+ $(CMD_PREFIX ) docker pull ghcr.io/instructlab/ui/ui:main
116
126
$(CMD_PREFIX ) kind load --name $(ILAB_KUBE_CLUSTER_NAME ) docker-image ghcr.io/instructlab/ui/ui:main
127
+ $(CMD_PREFIX ) docker pull registry.redhat.io/rhel9/postgresql-15:9.5-1733127512
128
+ $(CMD_PREFIX ) kind load --name $(ILAB_KUBE_CLUSTER_NAME ) docker-image registry.redhat.io/rhel9/postgresql-15:9.5-1733127512
117
129
118
130
.PHONY : stop-dev-kind
119
131
stop-dev-kind : check-kind # # Stop the Kind cluster to destroy the development environment
@@ -130,8 +142,8 @@ wait-for-readiness: # Wait for operators to be ready
130
142
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n ingress-nginx rollout restart deployment ingress-nginx-controller
131
143
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n ingress-nginx rollout status deployment ingress-nginx-controller --timeout=10m
132
144
133
- .PHONY : deploy
134
- deploy : wait-for-readiness # # Deploy a InstructLab UI development stack onto a kubernetes cluster
145
+ .PHONY : deploy-kind
146
+ deploy-kind : wait-for-readiness # # Deploy a InstructLab UI development stack onto a kubernetes cluster
135
147
$(CMD_PREFIX ) if [ ! -f .env ]; then \
136
148
echo " Please create a .env file in the root of the project." ; \
137
149
exit 1 ; \
@@ -140,20 +152,42 @@ deploy: wait-for-readiness ## Deploy a InstructLab UI development stack onto a k
140
152
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) apply -k ./deploy/k8s/overlays/kind
141
153
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) wait --for=condition=Ready pods -n $(ILAB_KUBE_NAMESPACE ) --all -l app.kubernetes.io/part-of=ui --timeout=15m
142
154
143
- .PHONY : redeploy
144
- redeploy : ui-image load-images # # Redeploy the InstructLab UI stack onto a kubernetes cluster
155
+ .PHONY : redeploy-kind
156
+ redeploy-kind : ui-image load-images # # Redeploy the InstructLab UI stack onto a kubernetes cluster
145
157
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n $(ILAB_KUBE_NAMESPACE ) rollout restart deploy/ui
146
158
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) -n $(ILAB_KUBE_NAMESPACE ) rollout restart deploy/pathservice
147
159
148
- .PHONY : undeploy
149
- undeploy : # # Undeploy the InstructLab UI stack from a kubernetes cluster
160
+ .PHONY : undeploy-kind
161
+ undeploy-kind : # # Undeploy the InstructLab UI stack from a kubernetes cluster
150
162
$(CMD_PREFIX ) if [ -f ./deploy/k8s/overlays/kind/.env ]; then \
151
163
rm ./deploy/k8s/overlays/kind/.env ; \
152
164
fi
153
165
$(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) delete namespace $(ILAB_KUBE_NAMESPACE )
154
166
167
+ .PHONY : deploy-umami-kind
168
+ deploy-umami-kind : wait-for-readiness load-images
169
+ $(CMD_PREFIX ) if [ ! -f .env ]; then \
170
+ echo " Please create a .env file in the root of the project." ; \
171
+ exit 1 ; \
172
+ fi
173
+ $(CMD_PREFIX ) bash -c " source .env && \
174
+ deploy/k8s/base/umami/deploy-umami-openshift-env-secret-conversion.sh KIND $(UMAMI_KUBE_NAMESPACE ) "
175
+
176
+ $(CMD_PREFIX) kubectl --context=$(ILAB_KUBE_CONTEXT) create namespace $(UMAMI_KUBE_NAMESPACE) --dry-run=client -o yaml | kubectl apply -f -
177
+ $(CMD_PREFIX) kubectl create -f ./deploy/k8s/overlays/kind/umami/umami-secret.yaml
178
+ $(CMD_PREFIX) kubectl --context=$(ILAB_KUBE_CONTEXT) apply -k ./deploy/k8s/overlays/kind/umami
179
+
180
+ $(CMD_PREFIX) kubectl --context=$(ILAB_KUBE_CONTEXT) wait --for=condition=Ready pods -n $(UMAMI_KUBE_NAMESPACE) --all -l app.kubernetes.io/part-of=umami --timeout=15m
181
+ $(CMD_PREFIX) kubectl --context=$(ILAB_KUBE_CONTEXT) port-forward -n $(UMAMI_KUBE_NAMESPACE) service/umami 3001:3001
182
+
183
+ .PHONY : undeploy-umami-kind
184
+ undeploy-umami-kind :
185
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) scale --replicas=0 deployment/umami -n $(UMAMI_KUBE_NAMESPACE )
186
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) delete -f ./deploy/k8s/overlays/kind/umami/umami-secret.yaml
187
+ $(CMD_PREFIX ) kubectl --context=$(ILAB_KUBE_CONTEXT ) delete -k ./deploy/k8s/overlays/kind/umami
188
+
155
189
.PHONY : start-dev-kind # # Run the development environment on Kind cluster
156
- start-dev-kind : setup-kind deploy # # Setup a Kind cluster and deploy InstructLab UI on it
190
+ start-dev-kind : setup-kind load-images deploy-kind # # Setup a Kind cluster and deploy InstructLab UI on it
157
191
158
192
# #@ OpenShift - UI prod and qa deployment on OpenShift
159
193
.PHONY : deploy-qa-openshift
@@ -162,7 +196,6 @@ deploy-qa-openshift: ## Deploy QA stack of the InstructLab UI on OpenShift
162
196
echo " Please create a .env file in the root of the project." ; \
163
197
exit 1 ; \
164
198
fi
165
-
166
199
$(CMD_PREFIX ) yes | cp -rf .env ./deploy/k8s/overlays/openshift/qa/.env
167
200
$(CMD_PREFIX ) oc apply -k ./deploy/k8s/overlays/openshift/qa
168
201
$(CMD_PREFIX ) oc wait --for=condition=Ready pods -n $(ILAB_KUBE_NAMESPACE ) --all -l app.kubernetes.io/part-of=ui --timeout=15m
@@ -172,14 +205,33 @@ redeploy-qa-openshift: ## Redeploy QA stack of the InstructLab UI on OpenShift
172
205
$(CMD_PREFIX ) oc -n $(ILAB_KUBE_NAMESPACE ) rollout restart deploy/ui
173
206
$(CMD_PREFIX ) oc -n $(ILAB_KUBE_NAMESPACE ) rollout restart deploy/pathservice
174
207
175
-
176
208
.PHONY : undeploy-qa-openshift
177
209
undeploy-qa-openshift : # # Undeploy QA stack of the InstructLab UI on OpenShift
178
210
$(CMD_PREFIX ) oc delete -k ./deploy/k8s/overlays/openshift/qa
179
211
$(CMD_PREFIX ) if [ -f ./deploy/k8s/overlays/openshift/qa/.env ]; then \
180
212
rm ./deploy/k8s/overlays/openshift/qa/.env ; \
181
213
fi
182
214
215
+ .PHONY : deploy-umami-qa-openshift
216
+ deploy-umami-qa-openshift :
217
+ $(CMD_PREFIX ) if [ ! -f .env ]; then \
218
+ echo " Please create a .env file in the root of the project." ; \
219
+ exit 1 ; \
220
+ fi
221
+ $(CMD_PREFIX ) source .env && \
222
+ deploy/k8s/base/umami/deploy-umami-openshift-env-secret-conversion.sh OPENSHIFT $(UMAMI_KUBE_NAMESPACE )
223
+ $(CMD_PREFIX ) oc create namespace $(UMAMI_KUBE_NAMESPACE ) --dry-run=client -o yaml | oc apply -f -
224
+ $(CMD_PREFIX ) oc apply -f ./deploy/k8s/overlays/openshift/umami/umami-secret.yaml
225
+
226
+ $(CMD_PREFIX) oc apply -k ./deploy/k8s/overlays/openshift/umami
227
+ $(CMD_PREFIX) oc wait --for=condition=Ready pods -n $(UMAMI_KUBE_NAMESPACE) --all -l app.kubernetes.io/part-of=umami --timeout=15m
228
+
229
+ .PHONY : undeploy-umami-qa-openshift
230
+ undeploy-umami-qa-openshift :
231
+ $(CMD_PREFIX ) oc scale --replicas=0 deployment/umami -n $(UMAMI_KUBE_NAMESPACE )
232
+ $(CMD_PREFIX ) oc delete -f ./deploy/k8s/overlays/openshift/umami/umami-secret.yaml
233
+ $(CMD_PREFIX ) oc delete -k ./deploy/k8s/overlays/openshift/umami
234
+
183
235
.PHONY : deploy-prod-openshift
184
236
deploy-prod-openshift : # # Deploy production stack of the InstructLab UI on OpenShift
185
237
$(CMD_PREFIX ) if [ ! -f .env ]; then \
@@ -204,6 +256,28 @@ undeploy-prod-openshift: ## Undeploy production stack of the InstructLab UI on O
204
256
rm ./deploy/k8s/overlays/openshift/prod/.env ; \
205
257
fi
206
258
259
+ .PHONY : deploy-umami-prod-openshift
260
+ deploy-umami-prod-openshift : check-kubeseal
261
+ $(CMD_PREFIX ) if [ ! -f .env ]; then \
262
+ echo " Please create a .env file in the root of the project." ; \
263
+ exit 1 ; \
264
+ fi
265
+ $(CMD_PREFIX ) source .env && \
266
+ deploy/k8s/base/umami/deploy-umami-openshift-env-secret-conversion.sh " OPENSHIFT" $(UMAMI_KUBE_NAMESPACE )
267
+ $(CMD_PREFIX ) cat deploy/k8s/overlays/openshift/umami/umami-secret.yaml | kubeseal \
268
+ --controller-name=sealed-secrets-controller \
269
+ --controller-namespace=kube-system \
270
+ --format yaml > ./deploy/k8s/overlays/openshift/umami/umami-secret.sealedsecret.yaml
271
+ $(CMD_PREFIX ) oc create namespace $(UMAMI_KUBE_NAMESPACE ) --dry-run=client -o yaml | oc apply -f -
272
+ $(CMD_PREFIX ) oc apply -f deploy/k8s/overlays/openshift/umami/umami-secret.sealedsecret.yaml
273
+ $(CMD_PREFIX ) oc apply -k deploy/k8s/overlays/openshift/umami
274
+
275
+ .PHONY : undeploy-umami-prod-openshift
276
+ undeploy-umami-prod-openshift :
277
+ $(CMD_PREFIX ) oc scale --replicas=0 deployment/umami -n $(UMAMI_KUBE_NAMESPACE )
278
+ $(CMD_PREFIX ) oc delete -f ./deploy/k8s/overlays/openshift/umami/umami-secret.sealedsecret.yaml
279
+ $(CMD_PREFIX ) oc delete -k ./deploy/k8s/overlays/openshift/umami
280
+
207
281
.PHONY : check-dev-container-installed
208
282
check-dev-container-installed :
209
283
@if [ -z " ${DEVCONTAINER_BINARY_EXISTS} " ]; then \
@@ -224,7 +298,7 @@ start-dev-container:
224
298
.PHONY : enter-dev-container
225
299
enter-dev-container :
226
300
$(MAKE ) check-dev-container-installed
227
- devcontainer exec --workspace-folder=./ --docker-path=${CONTAINER_ENGINE} bash
301
+ devcontainer exec --workspace-folder=./ --docker-path=${CONTAINER_ENGINE} ${DEVCONTAINER_DEFAULT_SHELL}
228
302
229
303
.PHONY : cycle-dev-container
230
304
cycle-dev-container :
0 commit comments