I am new to using kubernetes and helm, though I have developed a few helms already. In one of the requirement, I am creating a helm of helms. Basically, the installable helm has some dependent helms. And, to install this, I have the install script something of the below form:
${HELM_BIN} install final_helm helms/final-helm \
--set old-service.fullnameOverride=old-service \
--set old-service.image.registry=${DOCKER_REGISTRY} \
--set old-service.ingress.enabled=true \
--set old-service.ingress.hosts[0].host=${LOAD_BALANCER} \
--set old-service.ingress.hosts[0].paths[0]="/old-service-api-${NAMESPACE}(/|$)(.*)" \
--set old-service.ingress.tls[0].hosts[0]=${LOAD_BALANCER} \
--set old-service.ingress.tls[0].secretName=ssl-certificate \
--set old-service.jvm.options="-Xmx${OLD_HEAPSIZEMB}M -Xms${OLD_HEAPSIZEMB}M" \
--set old-service.metrics.serviceMonitor.enabled=true \
--set old-service.metrics.serviceMonitor.namespace=${NAMESPACE} \
--set old-service.replicaCount=${OLD_REPLICAS} \
--set old-service.resources.requests.cpu=100m \
--set old-service.resources.requests.memory=${OLD_HEAPSIZEMB}Mi \
--set new-service.fullnameOverride=new-service \
--set new-service.image.registry=${DOCKER_REGISTRY} \
--set new-service.ingress.enabled=true \
--set new-service.ingress.hosts[0].host=${LOAD_BALANCER} \
--set new-service.ingress.hosts[0].paths[0]="/new-service-api-${NAMESPACE}(/|$)(.*)" \
--set new-service.ingress.tls[0].hosts[0]=${LOAD_BALANCER} \
--set new-service.ingress.tls[0].secretName=ssl-certificate \
--set new-service.jvm.options="-Xmx${NEW_HEAPSIZEMB}M -Xms${NEW_HEAPSIZEMB}M" \
--set new-service.metrics.serviceMonitor.enabled=true \
--set new-service.metrics.serviceMonitor.namespace=${NAMESPACE} \
--set new-service.replicaCount=${OLD_REPLICAS} \
--set new-service.resources.requests.cpu=100m \
--set new-service.resources.requests.memory=${NEW_HEAPSIZEMB}Mi \
--namespace ${NAMESPACE} \
--version ${FINAL_HELM_VERSION}
I had a version of a Spring Boot service(old-service) which has been optimized by removing some adapter design pattern to new-service. However, considering the stage the project is in, integration tests could not be performed with the new-service supposed to replace the old-service.
So, I need to spin up one of the service only out of new-service and old-service based on some environment property set via env.sh script in which I have all the environment variables present.
env.sh
export USE_NEW_SERVICE=true
Chart.yaml for helms/final-helm
dependencies:
- name: old-service
repository: "file://../old-service"
- name: new-service
repository: "file://../new-service"
I do not know how I can use the environment property USE_NEW_SERVICE so that if it is true, I spin up new-service leaving behind old-service and if it is false, I spin up old-service leaving behind new-service. Simply, using if else in install script will not help as well as final-helm is dependent on new-service and old-service both and they will come up with default values specified if not from values obtained from install script.
Any help is appreciated. Thanks.