@@ -18,6 +18,14 @@ ifeq ($(INSECURE), $(filter $(INSECURE), true yes))
1818 INSECURE_FLAG = --insecure
1919endif
2020
21+ # ODS API Service configuration files
22+ env ?= dev
23+ ENV ?= $(env )
24+ env := $(ENV )
25+ ODS_CONFIGURATION_DIR := ../ods-configuration
26+ ODS_CONFIGURATION_FULL_PATH := $(abspath $(ODS_CONFIGURATION_DIR ) )
27+ ODS_API_SERVICE_DATABASE_REPO := $(ODS_API_SERVICE_DIR:-.../ods-api-service )
28+
2129# REPOSITORIES
2230# # Prepare Bitbucket repos (create project and repos).
2331prepare-bitbucket-repos :
@@ -195,8 +203,14 @@ start-ods-api-service-build:
195203
196204# # Apply OpenShift resources related to the Ods API Service.
197205apply-ods-api-service-chart :
198- cd ods-api-service/chart && envsubst < values.yaml.template > values.yaml && helm upgrade --install --namespace $(ODS_NAMESPACE ) \
199- -f values.yaml \
206+ cd ods-api-service/chart && \
207+ helm upgrade --install --namespace $(ODS_NAMESPACE ) \
208+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.values.yaml \
209+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.secrets.enc.yaml \
210+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.values.yaml \
211+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.secrets.enc.yaml \
212+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.values.$(env ) .yaml \
213+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.secrets.$(env ) .enc.yaml \
200214 --set projectId=$(ODS_NAMESPACE ) \
201215 --set appSelector=app=ods-api-service \
202216 --set registry=$(DOCKER_REGISTRY ) \
@@ -210,14 +224,137 @@ apply-ods-api-service-chart:
210224 --set global.imageNamespace=$(ODS_NAMESPACE ) \
211225 --set global.imageTag=$(ODS_IMAGE_TAG ) \
212226 --set ODS_OPENSHIFT_APP_DOMAIN=$(OPENSHIFT_APPS_BASEDOMAIN ) \
213- ods-api-service . && rm values.yaml
227+ ods-api-service .
214228.PHONY : apply-ods-api-service-chart
215229
216230# # Configure ODS API Service (sets up PostgreSQL superuser for backup operations).
217231configure-ods-api-service :
218232 cd ods-api-service && ./configure.sh --namespace $(ODS_NAMESPACE )
219233.PHONY : configure-ods-api-service
220234
235+ # #### HELM CHART MANAGEMENT
236+ .PHONY : helm-encrypt-secrets helm-decrypt-secrets helm-diff helm-render-ods-api-service helm-render-ods-api-service-application-yaml
237+ # # Render ODS API Service Helm chart with all configurations (values and secrets).
238+ helm-render-ods-api-service :
239+ @cd ods-api-service/chart && \
240+ helm secrets template ods-api-service . \
241+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.values.yaml \
242+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.secrets.enc.yaml \
243+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.values.yaml \
244+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.secrets.enc.yaml \
245+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.values.$(env ) .yaml \
246+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.secrets.$(env ) .enc.yaml \
247+ --set projectId=$(ODS_NAMESPACE ) \
248+ --set appSelector=app=ods-api-service \
249+ --set registry=$(DOCKER_REGISTRY ) \
250+ --set componentId=ods-api-service \
251+ --set global.projectId=$(ODS_NAMESPACE ) \
252+ --set global.appSelector=app=ods-api-service \
253+ --set global.registry=$(DOCKER_REGISTRY ) \
254+ --set global.componentId=ods-api-service \
255+ --set imageNamespace=$(ODS_NAMESPACE ) \
256+ --set imageTag=$(ODS_IMAGE_TAG ) \
257+ --set global.imageNamespace=$(ODS_NAMESPACE ) \
258+ --set global.imageTag=$(ODS_IMAGE_TAG ) \
259+ --set ODS_OPENSHIFT_APP_DOMAIN=$(OPENSHIFT_APPS_BASEDOMAIN )
260+
261+ # # Render the generated application.yaml from Helm templates to a local file.
262+ helm-render-ods-api-service-application-yaml :
263+ @cd ods-api-service/chart && \
264+ helm secrets template ods-api-service . \
265+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.values.yaml \
266+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.secrets.enc.yaml \
267+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.values.yaml \
268+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.secrets.enc.yaml \
269+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.values.$(env ) .yaml \
270+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.secrets.$(env ) .enc.yaml \
271+ --set projectId=$(ODS_NAMESPACE ) \
272+ --set appSelector=app=ods-api-service \
273+ --set registry=$(DOCKER_REGISTRY ) \
274+ --set componentId=ods-api-service \
275+ --set global.projectId=$(ODS_NAMESPACE ) \
276+ --set global.appSelector=app=ods-api-service \
277+ --set global.registry=$(DOCKER_REGISTRY ) \
278+ --set global.componentId=ods-api-service \
279+ --set imageNamespace=$(ODS_NAMESPACE ) \
280+ --set imageTag=$(ODS_IMAGE_TAG ) \
281+ --set global.imageNamespace=$(ODS_NAMESPACE ) \
282+ --set global.imageTag=$(ODS_IMAGE_TAG ) \
283+ --set ODS_OPENSHIFT_APP_DOMAIN=$(OPENSHIFT_APPS_BASEDOMAIN ) \
284+ 2> /dev/null | \
285+ yq -r ' select(.kind == "ConfigMap") | select(.metadata.name == "ods-api-service-config") | .data["application.yaml"]'
286+
287+
288+ # # Render the generated .env file from Helm templates to a local file.
289+ helm-render-ods-api-service-dot-env :
290+ @cd ods-api-service/chart && \
291+ helm secrets template ods-api-service . \
292+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.values.yaml \
293+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.secrets.enc.yaml \
294+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.values.yaml \
295+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.secrets.enc.yaml \
296+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.values.$(env ) .yaml \
297+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.secrets.$(env ) .enc.yaml \
298+ --set projectId=$(ODS_NAMESPACE ) \
299+ --set appSelector=app=ods-api-service \
300+ --set registry=$(DOCKER_REGISTRY ) \
301+ --set componentId=ods-api-service \
302+ --set global.projectId=$(ODS_NAMESPACE ) \
303+ --set global.appSelector=app=ods-api-service \
304+ --set global.registry=$(DOCKER_REGISTRY ) \
305+ --set global.componentId=ods-api-service \
306+ --set imageNamespace=$(ODS_NAMESPACE ) \
307+ --set imageTag=$(ODS_IMAGE_TAG ) \
308+ --set global.imageNamespace=$(ODS_NAMESPACE ) \
309+ --set global.imageTag=$(ODS_IMAGE_TAG ) \
310+ --set ODS_OPENSHIFT_APP_DOMAIN=$(OPENSHIFT_APPS_BASEDOMAIN ) 2> /dev/null | ../../scripts/extract-config-env-from-template.sh
311+
312+
313+
314+
315+ helm-encrypt-secrets :
316+ @echo " Usage: make helm-encrypt-secrets ENV=all|environment. It use ENV=dev by default if ENV is not set. It will encrypt secrets in the root of the configuration directory and in the environment-specific subdirectory (if it exists)."
317+ @echo " make helm-encrypt-secrets ODS_CONFIGURATION_DIR=path/to/config to specify a different configuration directory (default: ../ods-configuration)."
318+
319+ @echo "Encrypting secrets in $(ODS_CONFIGURATION_DIR)..."
320+ ./scripts/encrypt-helm-secrets.sh $(ODS_CONFIGURATION_DIR) $(ENV)
321+ @echo "✓ Secrets encrypted"
322+
323+ # # Decrypt secrets files (ENV=<name>|all, omit for root folder only)
324+ helm-decrypt-secrets :
325+ @echo " Usage: make helm-decrypt-secrets ENV=all|environment. It use ENV=dev by default if ENV is not set. It will decrypt secrets in the root of the configuration directory and in the environment-specific subdirectory (if it exists)."
326+ @echo " make helm-decrypt-secrets ODS_CONFIGURATION_DIR=path/to/config to specify a different configuration directory (default: ../ods-configuration)."
327+
328+ @echo "Decrypting secrets in $(ODS_CONFIGURATION_DIR)..."
329+ ./scripts/decrypt-helm-secrets.sh $(ODS_CONFIGURATION_DIR) $(ENV)
330+ @echo "✓ Secrets decrypted"
331+
332+ # # Diff Helm chart against cluster using helm secrets diff
333+ helm-diff :
334+ @echo " Running helm secrets diff (dry-run through Makefile)..."
335+ @export HELM_DIFF_IGNORE_UNKNOWN_FLAGS=true && helm -n devstack-dev secrets diff upgrade --install --atomic \
336+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.values.yaml \
337+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-core.secrets.enc.yaml \
338+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.values.yaml \
339+ -f $(ODS_CONFIGURATION_FULL_PATH ) /ods-api-service.secrets.enc.yaml \
340+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.values.$(env ) .yaml \
341+ -f $(ODS_CONFIGURATION_FULL_PATH ) /$(env ) /ods-api-service.secrets.$(env ) .enc.yaml \
342+ --set projectId=devstack \
343+ --set appSelector=app=devstack-api-service \
344+ --set registry=image-registry.openshift-image-registry.svc:5000 \
345+ --set componentId=api-service \
346+ --set global.projectId=devstack \
347+ --set global.appSelector=app=devstack-api-service \
348+ --set global.registry=image-registry.openshift-image-registry.svc:5000 \
349+ --set global.componentId=api-service \
350+ --set imageNamespace=devstack-dev \
351+ --set imageTag=b19c9164 \
352+ --set global.imageNamespace=devstack-dev \
353+ --set global.imageTag=b19c9164 \
354+ --set ODS_OPENSHIFT_APP_DOMAIN=apps.eu-dev.ocp.aws.boehringer.com \
355+ --no-color --three-way-merge --normalize-manifests \
356+ api-service ./chart
357+
221358
222359# BACKUP
223360# # Create a backup of the current state.
@@ -256,3 +393,4 @@ help:
256393 } \
257394 { lastLine = $$ 0 }' $(MAKEFILE_LIST)
258395.PHONY : help
396+
0 commit comments