Best practices and troubleshooting

To get the most out your dedicated pods, use these best practices and troubleshooting solutions.

Best practices

Use the following information to make your dedicated runtime pods work optimally:

  • Path definition: Define path patterns carefully to ensure proper routing to the dedicated runtime pods:
    • The easiest way is to specify only the RuleApp (for example, /miniloan). All the rulesets in the RuleApp are then executed in the dedicated runtime pods.
    • Alternatively, you can target a specific ruleset (for example, /miniloan/production). When it is always the latest version, do not specify the version of the RuleApp (for example, /miniloan/production instead of /miniloan/2.0/production) to avoid updating the configuration for each new version.
  • Business-critical rules: Create dedicated runtime pods for mission-critical rulesets to ensure isolation and stability.

Troubleshooting

Follow these steps if you encounter problems with dedicated runtime pods:

  • Verify that the path patterns are correctly specified and match the deployed rulesets that should be executed on dedicated runtime pods.
  • Paths should not contain any wildcard such as *.
  • Check that the requested resources are available in your Kubernetes cluster.
  • Check that any referenced ConfigMaps (webConfigRef or xuConfigRef) exists and contains valid properties.
  • Examine the pod logs for any errors related to ruleset deployment or path routing.
  • Check for resource constraints (CPU or memory limits) that might be causing performance issues.
  • Ensure network policies allow communication between the main Operational Decision Manager pod and dedicated pods.

You can troubleshoot the dedicated runtime feature by using standard Kubernetes tools and commands.

Each dedicated runtime pod configuration generates the following resources in your Kubernetes cluster:
  • Deployment: Named following the convention {release-name}-odm-decisionserverruntime-{dedicated-name}.
  • Service: Named following the convention {release-name}-odm-decisionserverruntime-{dedicated-name}.
  • Ingress rules: Configured to route traffic based on the path patterns to the appropriate service.

You can monitor and manage these deployments by using the following Kubernetes commands:

# List all runtime deployments
kubectl get deployments -l app.kubernetes.io/component=decisionServerRuntime

# Get details about a specific dedicated deployment
kubectl describe deployment {release-name}-odm-decisionserverruntime-miniloan

# View logs for a dedicated pod
kubectl logs -l run={release-name}-odm-decisionserverruntime-loan-validation