Installing (containerized)

Plan the containerized deployment of the IBM® Product Master.

Before you begin

  1. If the Volumes or Persistent Volumes are auto-provisioned, skip to the Step 3.
  2. Amazon EKS cluster

  3. You can use ephemeral volumes for the StatefulSets. For more information, see Using ephemeral volumes for the StatefulSets.
  4. 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

Proceed as follows.
  1. 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-connector
  2. Self-managed Kubernetes cluster

    Add user by using the following command.
    adduser default --uid 10001 --gid 0
    chown -R 10001.0 /mnt/ipm14/ 
    chmod -R +777 /mnt/ipm14/
    If you get an error while adding another user, remove the existing user that has 10001 ownership.
    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 be Block storage type of StorageClass. You can also specify all the volumes as File storage StorageClass.
  3. Self-managed Kubernetes cluster

    Create volumes by using the following command.
    kubectl apply -f volumes.yaml
    You can view the created volumes by using the following command.
    kubectl get pv
  4. 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>
  5. 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
  6. 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.yaml

    Red 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
  7. 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 to1.
    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.
  8. Deploy the Product Master by using the following command.

    Self-managed Kubernetes cluster

    Amazon EKS cluster

    kubectl apply -f ipm_14.0.x_cr.yaml

    Red Hat OpenShift cluster

    oc apply -f ipm_14.0.x_cr.yaml
  9. 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

    oc get productmaster productmaster \
    -o jsonpath="{'Status: '}{.status.productmasterStatus}{'\nProgress: '}{.status.progress}{'\nMessage: '}{.status.progressMessage}{'\n'}"
    The Product Master custom resource (CR) deployment displays following once complete.
    Status: Completed
    Progress: 100%
    Message: Deployment is completed.
  10. View all resources by using the following command.

    Self-managed Kubernetes cluster

    Amazon EKS cluster

    kubectl get all -n <namespace>

    Red Hat OpenShift cluster

    oc get all -n <namespace>
    You can also view specific resources by using the following command.

    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>
  11. 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 
  12. 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

    oc logs -f <pod name> -n <namespace>
    Access a specific pod by using the following command.

    Self-managed Kubernetes cluster

    Amazon EKS cluster

    kubectl exec -it <pod name> /bin/bash

    Red 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

  1. Use the following command to fetch the NGINX Ingress HTTPS port.

    Self-managed Kubernetes cluster

    kubectl get svc -A | grep nginx
  2. 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>
  3. 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