Skip to main contentMerative SPM on Kubernetes

Deploying Helm Charts

Note: As of Release 20.7.0, the Helm version used to verify this runbook is 3.2. All the Helm commands that are used in this runbook are based on Helm v3.

In the following helm install command, we are using releasename as the value for the helm release name. A release name is an arbitrary name that you choose for your deployment. It must be all lowercase. All kubernetes objects in your deployment will be prefixed with whatever value you provide.

For now you could just use releasename and for more information see the helm documentation.

Note: Helm v3 (releasename is mandatory for Helm v3)

helm install releasename local-development/spm

The helm install command installs the Helm Charts in the order in which they were loaded in the repository, with all the values defined in the files. However, as described in Setting up the Docker® context, you can override the configuration value by running the following shell script:

helm install releasename local-development/spm -f override-values.yaml

Sample override-values.yaml files

The following three override files for Minikube, AKS, and CRC are intended to be used with the config options listed in the Configuration Reference topic. The minimum details that need to be filled out for a successful deployment are the registry, database, and ingress details.

Note on AKS overrides:

  • The full image name is based on the registry, imageLibrary, imagePrefix, and imageTag keys nested under global.images as follows:
    • {registry}/{imageLibrary}/{imagePrefix}curam:{imageTag}
    • With the given values, the resulting image name will look like this: example.azurecr.io/foo-library/test_curam:latest
  • IAM credentials for the IBM Container Registry (global.imagePullSecret) must be provided.
  • The Application Load Balancer IDs (ingress.annotations."ingress.bluemix.net/ALB-ID") must be provided for the Ingress resource to be created correctly.

Note: If storage has been initialized using a version of the runbook older than 20.9.0, you will need to update your override values to include a supplementary group:

global:
mq:
security:
context:
supplementalGroups: [888]

This is due to a update in IBM MQ, the details of which can be found here.

The license agreements for the IBM® WebSphere® Liberty and IBM WebSphere MQ images must be accepted in order to proceed with the deployment of these elements. This can be done by setting the global.license property to accept.

The respective license agreements can be reviewed by running the following commands:

# IBM WebSphere Liberty
docker run --rm -e LICENSE=view ibmcom/websphere-liberty:24.0.0.6-full-java8-ibmjava-ubi
# IBM WebSphere MQ
docker run --rm -e LICENSE=view ibmcom/mq:9.1.3.0

Status of the system

The helm install command shows all the Kubernetes objects and also runs the Merative Social Program Management (SPM) containers. You can track the status of the SPM containers on real time by running the following command:

kubectl get pods -w
NAME READY STATUS RESTARTS AGE
releasename-apps-curam-consumer-595c8bf95f-zn2l5 0/1 Init 3/4 0 5m
releasename-apps-curam-producer-6b5569c4ff-nvxtd 1/1 Running 0 5m
releasename-apps-rest-consumer-85b4865b9d-wr6hj 0/1 Init 3/4 0 5m
releasename-apps-rest-producer-cd8fdbbbf-j2mjj 0/1 Init 3/4 0 5m
releasename-uawebapp-7cdd64987-qx8l8 1/1 Running 0 5m
releasename-web-67697ffb8b-fdsk2 1/1 Running 0 5m

The command lists the pods and their status, where each status change is on a new line.

Some of the pods have initialization steps, so they are not shown until the steps are completed.

The output of the kubectl get pods command provides the names of the pods that you can use to substitute for podname in the following example commands. For example, the Liberty pod that contains SPM code is a name that uses a pattern of: releasename-apps-curam-.

You can also describe a pod by running the following command:

kubectl describe pod/pod name

You can also read the log when the status is running, by running the following command:

kubectl logs -f pod/podname

Accessing the application

To access the application, a URL is provided to access the pod within the cluster. This access is provided using Ingress resources on Kubernetes, and Routes resources on OpenShift.

Example URLs:

https://minikube.local/Curam