Installing (containerized)
Plan the containerized deployment of the IBM® Product Master.
Before you begin
- If the Volumes or Persistent Volumes are auto-provisioned, skip to the Step 3.
-
Amazon EKS cluster
- You need to setup AWS Load Balancer Controller. For more information, see Install the AWS Load Balancer Controller using Helm.
- You need to upload the Domain-related certificate (certificate_arn ID) in the Amazon Certificate Manager (ACM).
- You can use ephemeral volumes for the StatefulSets. For more information, see Using ephemeral volumes for the StatefulSets.
Red Hat® OpenShift® cluster
This topic is not applicable to a Red Hat OpenShift cluster on the cloud environment as volumes are auto-provisioned.
Procedure
Self-managed Kubernetes cluster
Create directories for volumes by using the following command.The directories should have required structure and proper permissions on all the Master and Slave nodes of your cluster.
mkdir -p /mnt/ipm14/ cd /mnt/ipm14/ mkdir admin mkdir ftsindlog mkdir ftspimlog mkdir gds mkdir ml mkdir mongodb mkdir mongodblog mkdir mq-data mkdir personaui mkdir sch mkdir wfl mkdir appdata mkdir elasticsearch-data mkdir restapi mkdir magento-connectorSelf-managed Kubernetes cluster
Add user by using the following command.If you get an error while adding another user, remove the existing user that has 10001 ownership.adduser default --uid 10001 --gid 0 chown -R 10001.0 /mnt/ipm14/ chmod -R +777 /mnt/ipm14/Note:Self-managed Kubernetes cluster
Share the appdata-volume among cluster nodes by using the Network File System (NFS) service.Amazon EKS cluster and Red Hat OpenShift cluster
Use File storage as StorageClass for the appdata-volume-claim. The rest of volumes can beBlock
storage type of StorageClass. You can also specify all the volumes as File storage StorageClass.
Self-managed Kubernetes cluster
Create volumes by using the following command.
You can view the created volumes by using the following command.kubectl apply -f volumes.yamlkubectl get pv- Create a namespace by using the following command.Important: Update the value of <namespace>as applicable.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl create ns <namespace>Red Hat OpenShift cluster
oc create ns <namespace> - Add the <namespace> that you created in
the Step 4 to the following files.
- app_secrets.yaml
- catalog_source.yaml
- operator_group.yaml
- registry_secret.yaml
- subscription.yaml
- Deploy the operator by using the following command.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl config set-context --current --namespace=<namespace> kubectl apply -f registry_secret.yaml kubectl create serviceaccount serviceaccount -n <namespace> kubectl create serviceaccount ibm-productmaster-catalog -n <namespace> kubectl patch -n <namespace> serviceaccount default -p '{"imagePullSecrets": [{"name": "ipm-registry"}]}' kubectl patch -n <namespace> serviceaccount serviceaccount -p '{"imagePullSecrets": [{"name": "ipm-registry"}]}' kubectl patch -n <namespace> serviceaccount ibm-productmaster-catalog -p '{"imagePullSecrets": [{"name": "ipm-registry"}]}' kubectl apply -f catalog_source.yaml kubectl apply -f operator_group.yaml kubectl apply -f subscription.yaml kubectl apply -f app_secrets.yamlRed Hat OpenShift cluster
oc config set-context --current --namespace=<namespace> oc apply -f registry_secret.yaml oc create serviceaccount serviceaccount -n <namespace> oc create serviceaccount ibm-productmaster-catalog -n <namespace> oc patch -n <namespace> serviceaccount default -p '{"imagePullSecrets": [{"name": "ipm-registry"}]}' oc patch -n <namespace> serviceaccount serviceaccount -p '{"imagePullSecrets": [{"name": "ipm-registry"}]}' oc patch -n <namespace> serviceaccount ibm-productmaster-catalog -p '{"imagePullSecrets": [{"name": "ipm-registry"}]}' oc apply -f catalog_source.yaml oc apply -f operator_group.yaml oc apply -f subscription.yaml oc apply -f app_secrets.yaml - Modify the ipm_14.0.x_cr.yaml file.
In the deployment_platform section, update the following under the required subsection (aws_eks, self_managed_k8s, or openshift).
Property Description Red Hat OpenShift cluster (openshift) Self-managed Kubernetes cluster (self_managed_k8s) Amazon EKS cluster (aws_eks) enable Set the value to 1
.✓ ✓ ✓ certificate_arn Specify an Amazon Resource Name (ARN).
❌ ❌ ✓ domain_name Specify the domain name.
✓ ✓ ❌ block_storageclass Specify the Block
storage type of the storage class.✓ ✓ ✓ file_storageclass Specify the File
storage type of the storage class.✓ ✓ ✓ - Deploy the Product Master by using the
following command.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl apply -f ipm_14.0.x_cr.yamlRed Hat OpenShift cluster
oc apply -f ipm_14.0.x_cr.yaml - You can check the deployment progress by using the following commands.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl get productmaster productmaster \ -o jsonpath="{'Status: '}{.status.productmasterStatus}{'\nProgress: '}{.status.progress}{'\nMessage: '}{.status.progressMessage}{'\n'}"Red Hat OpenShift cluster
The Product Master custom resource (CR) deployment displays following once complete.oc get productmaster productmaster \ -o jsonpath="{'Status: '}{.status.productmasterStatus}{'\nProgress: '}{.status.progress}{'\nMessage: '}{.status.progressMessage}{'\n'}"Status: Completed Progress: 100% Message: Deployment is completed.
- View all resources by using the following command.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl get all -n <namespace>Red Hat OpenShift cluster
You can also view specific resources by using the following command.oc get all -n <namespace>Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl get <pods/deploy/svc/pvc/cm/pv> -n <namespace>Red Hat OpenShift cluster
oc get <pods/deploy/svc/pvc/cm/pv> -n <namespace> - View the NGINX Ingress resources by using the following command and note the port
mappings.
Self-managed Kubernetes cluster
kubectl get svc -n ingress-nginx - Check logs for a specific pod by using the following command.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl logs -f <pod name> -n <namespace>Red Hat OpenShift cluster
Access a specific pod by using the following command.oc logs -f <pod name> -n <namespace>Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl exec -it <pod name> /bin/bashRed Hat OpenShift cluster
oc rsh <pod name>Note: Before you proceed with any configuration changes on the pod, it is recommended that you stop the services by using /home/default/stop.sh file.
What to do next
- Use the following command to fetch the NGINX Ingress HTTPS port.
Self-managed Kubernetes cluster
kubectl get svc -A | grep nginx - Use the following command to fetch the hostname.
Self-managed Kubernetes cluster
Amazon EKS cluster
kubectl get ingress -n <namespace>Red Hat OpenShift cluster
oc get ingress -n <namespace> - Log in to the application by using the following URL and NGINX Ingress HTTPS port.
UI Self-managed Kubernetes cluster Amazon EKS cluster Red Hat OpenShift cluster Persona-based UI https://<hostname>:<nginx_ingress https port>/mdm_ui/#/login https://<hostname>/mdm_ui/#/login https://<hostname>/mdm_ui/#/login Admin UI https://<hostname>:<nginx_ingress https port>/ https://<hostname>/ https://<hostname>/utils/enterLogin.jsp