This article demonstrates how to deploy an IBM® Operational Decision Manager (ODM) on a standard kubernetes environment as quickly as possible.
To do this, we will use the images located on IBM entitled registry and all the ODM chart easiness allowing to get quickly an ODM running topology.
Prerequisites
First, install the following software on your machine:
Prepare your environment for the ODM installation (5 min)
Log in to MyIBM Container Software Library with the IBMid and password that are associated with the entitled software.
In the Container software library tile, verify your entitlement on the View library page, and then go to Get entitlement key to retrieve the key.
Create a pull secret by running a kubectl create secret command.
$ kubectl create secret docker-registry icregistry-secret --docker-server=cp.icr.io --docker-username=cp \
--docker-password="<API_KEY_GENERATED>" --docker-email=<USER_EMAIL>
where:
- <API_KEY_GENERATED> is the entitlement key from the previous step. Make sure you enclose the key in double-quotes.
- <USER_EMAIL> is the email address associated with your IBMid.
Note: The cp.icr.io value for the docker-server parameter is the only registry domain name that contains the images. You must set the docker-username to cp to use an entitlement key as docker-password.
Make a note of the secret name so that you can set it for the image.pullSecrets parameter when you run a helm install of your containers. The image.repository parameter will later be set to cp.icr.io/cp/cp4a/odm.
Add the public IBM Helm charts repository:
helm repo add ibmcharts https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm
helm repo update
Check you can access ODM's chart
helm search repo ibm-odm-prod
NAME CHART VERSION APP VERSION DESCRIPTION
ibmcharts/ibm-odm-prod 22.2.0 8.11.1.0 IBM Operational Decision Manager
Install your ODM Helm release (5 min)
You can now install the product. We will use the postgresql internal database by disabling the persistence (internalDatabase.persistence.enabled=false) to avoid any platform complexity concerning persistent volume allocation.
helm install myodmrelease ibmcharts/ibm-odm-prod \
--set image.repository=cp.icr.io/cp/cp4a/odm --set image.pullSecrets=icregistry-secret \
--set internalDatabase.persistence.enabled=false --set license=true --set usersPassword=odmAdmin
Note: On OpenShift, you have to set the following parameters due to security context constraint : --set internalDatabase.runAsUser='' --set customization.runAsUser=''.
See https://www.ibm.com/support/knowledgecenter/SSQP76_8.10.x/com.ibm.odm.kube/topics/tsk_preparing_odmk8s.html
Check the topology
Run the following command to check the status of the pods that have been created:
kubectl get pods
NAME READY STATUS RESTARTS AGE
myodmrelease-dbserver-*** 1/1 Running 0 20m
myodmrelease-odm-decisioncenter-*** 1/1 Running 0 20m
myodmrelease-odm-decisionrunner-*** 1/1 Running 0 20m
myodmrelease-odm-decisionserverconsole-*** 1/1 Running 0 20m
myodmrelease-odm-decisionserverruntime-*** 1/1 Running 0 20m
Access ODM services
By default as service.type=NodePort
, the services are exposed with a public IP to be accessed with the following command:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19h
myodmrelease-dbserver ClusterIP 10.0.0.1 <none> 5432/TCP 10m
myodmrelease-odm-decisioncenter NodePort 10.0.141.125 <none> 9453:31130/TCP 10m
myodmrelease-odm-decisionrunner NodePort 10.0.157.225 <none> 9443:31325/TCP 10m
myodmrelease-odm-decisionserverconsole NodePort 10.0.215.192 <none> 9443:32448/TCP 10m
myodmrelease-odm-decisionserverconsole-notif ClusterIP 10.0.201.87 <none> 1883/TCP 10m
myodmrelease-odm-decisionserverruntime NodePort 10.0.177.153 <none> 9443:31921/TCP 10m
You can then open a browser on https://xxx.xxx.xxx.xxx:32448 to access Decision Server console, Decision Server Runtime, and Decision Runner, and on https://xxx.xxx.xxx.xxx:31130 to access Decision Center.
Note: Getting the xxx.xxx.xxx.xxx exposed IP address is different for every platform. For example, if you are using mikikube, you can get it with command line : "minikube ip"
Now that you have your first ODM deployment, you can go beyond and deal with more advance topics like load balancer and persistence management :
The Operational Decision Manager Documentation on Certified Kubernetes
How to deploy Operational Decision Manager (ODM) on Azure Kubernetes Service?
How to deploy Operational Decision Manager (ODM) on Amazon EKS container ?
How to deploy Operational Decision Manager (ODM) 8.11 on Google Kubernetes Engine (GKE) ?
#DecisionAutomation#OperationalDecisionManager(ODM)