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® clusterThis 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 clusterCreate 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 clusterAdd 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 clusterShare the appdata-volume among cluster nodes by using the Network File System (NFS) service.
    • Amazon EKS cluster and Red Hat OpenShift clusterUse 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 clusterCreate 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 clusterAmazon 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 clusterAmazon 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 clusterAmazon 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. View all resources by using the following command.

    Self-managed Kubernetes clusterAmazon 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 clusterAmazon 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>
  10. 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 
  11. Check logs for a specific pod by using the following command.

    Self-managed Kubernetes clusterAmazon 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 clusterAmazon 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 clusterAmazon 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