Collecting MustGather data for initial Commerce+ Kubernetes deployment issues

Prepare the following MustGather information before you call HCL Support to help with initial Commerce+ deployment issues. This information will significantly speed up the troubleshooting process.

Procedure

  1. Deployment Information:
    • Helm Chart Versions: Specify the exact versions of the Helm charts used for deploying Commerce+.
    • Values Files: Provide the values.yaml files used for each Helm chart, including any customizations.
    • Kubernetes Version: Specify the version of Kubernetes running on your cluster.
    • Deployment Commands: Provide the exact Helm commands used for deployment. For example:
      helm install -f myvalues.yaml commerce commerce-x.y.z
      • Deploy Vault (To deploy Vault first and then Commerce)
        • Navigate to the vault folder.
        • Run the deploy.sh file. Inside this file, the command to deploy Vault is already added:
          kubectl apply -f vault-ca.yaml helm upgrade --install vault-consul ../..hcl-commerce-vaultconsul/ -f vault_values.yaml -n vault
      • Deploy Commerce
        • Navigate to the commerce folder.
        • Run the deploy.sh file. Inside this file, the command to deploy Vault is already added:
          helm upgrade {}install ${TENANT}{-}${ENVIRONMENT} \ ../../../../hcl-commerce- helmchart/stable/hcl-commerce/ -f $VALUES_FILE -n $NAMESPACE \$HELM_ARGS
  2. Pod Status and Logs:
    • Pod Status: Run kubectl get pods to get the status of all pods in the Commerce namespace.
      Note: Check any pods that are in a Pending and Error state.
      • Command Example
        kubectl get pods -n esdb2
    • Pod Logs: For any pods with issues, collect the logs using kubectl logs <pod-name>. If there are previous instances of the pod, use kubectl logs <pod-name> --previous to get logs from those instances.
      • Command Example
        • kubectl logs podname -n esdb2
        • kubectl describe pod podname -n esdb2
  3. Service and Ingress Information:
    • Service Status: Run kubectl get services to check the status of the Commerce services. Make sure they are running and accessible.
      • Command Example
        • kubectl get svc -n esdb2
        • kubectl get services -n esdb2
    • Ingress Configuration: If you're using an Ingress controller, provide the Ingress configuration YAML file. Check the Ingress status with kubectl get ingress.
      • Command Example
        • kubectl get ingress -n esdb2
        • kubectl describe ingress my-ingress -n esdb2
  4. Database Type and Version:
    • Specify the type and version of the database you're using (Postgres, Db2, Oracle).
    • If the db is Pod base, please provide that details.
      • Command Example
        • kubectl get events -n <namespace> > k8s_events.txt
        • kubectl get events -n esdb2 > k8s_events.txt
  5. Capture Kubernetes events from the namespace. This can highlight deployment issues, resource constraints, or other cluster-level problems.
    • kubectl get events -n <namespace> > k8s_events.txt
  6. Specific pod logs: Capture logs from the following pods, which are critical for Commerce+. Collect logs from all instances of these pods.
    • ts-app: The transaction server pod
      kubectl logs <tsapp> -n <namespace> > transaction.log
      • Command Example
        • kubectl logs <tsapp> -n <namespace> > transaction.log
        • kubectl logs ivtesdb2authts-app-f48879fff-6b8gp -n esdb2 > transaction.log
    • redis:
      kubectl logs <redis-pod> -n <namespace> > redis.log
      • Command Example
        • kubectl logs hcl-commerce-redis-master-0 -n esdb2 > redis.log
  7. Collect logs from the following Kubernetes resources. Replace <namespace> with the correct namespace, and <pod-name> with the actual pod name.
    • Get all the pods:
      kubectl get pods -n <namespace> o wide > all_pods.txt
      This gets all the pod's name, status, number of restarts, and node it runs on.
      • Command Example
        • kubectl get pods -n esdb2 -o wide > all_pods.txt
    • Get all the services:
      kubectl get services -n <namespace> > all_services.txt
      • Command Example
        • kubectl get services -n esdb2 -o wide > all_services.txt
  8. Ensure to get the previous logs of all pods : This retrieves the logs from the previous instance of the container, which is important for debugging crash loops or restart issues.
    • kubectl logs -p <pod-name> -n <namespace> > <pod-name>-previous.log
    • Command Example
      • kubectl logs -p <pod-name> -n <namespace> > <pod-name>-previous.log
      • kubectl logs -p ivtesdb2authdb-75995bb7ff-7k79c -n esdb2