# Troubleshooting Kubernetes resource mounting in Dynamic Engine environments

Use this diagnostic section to identify and resolve common issues when mounting Kubernetes resources (ConfigMap, Secret, volumes, PersistentVolumeClaim, and securityContext) in your Dynamic Engine environments. This section helps you recognize error patterns and directs you to the appropriate solution topic.

## Common error patterns and solutions

The following table maps error types, actions to take for diagnosis, and links to the corresponding Dynamic Engine customization topics:

| Error Type | Action | Relevant Topic |
| --- | --- | --- |
| CreateContainerConfigError | Verify keys consistency in the additionalSpec with the mounted<br>Secret or ConfigMap | [Mounting Kubernetes Secret as volumes in Dynamic Engine containers](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/mounting-kubernetes-secrets-as-volumes "Instead of using Secret as environment variables, you can mount them as files in the container filesystem, enabling your data integration tasks (including big data), Data Services, and Route tasks to access credentials in configuration files.") or [Injecting environment variables from Kubernetes Secret](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/injecting-sensitive-data-from-kubernetes-secrets "Inject sensitive data (passwords, API keys, tokens) from Kubernetes Secret as environment variables in your Job (Data Integration, Big Data, and Data Services) and Routes tasks so they can easily and securely access credentials.") or [Injecting environment variables from ConfigMap](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/injecting-environment-variables-from-configmaps "Use Kubernetes ConfigMap to provide non-sensitive configuration (such as API endpoints, feature flags, or application settings) as environment variables to your data integration tasks (including big data), Data Services, and Routes tasks.") |
| Job not created | Verify keys consistency in the additionalSpec with the<br>declared volumes or PVCs | [Mounting Kubernetes PersistentVolumeClaims for persistent storage in Dynamic Engine](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/mounting-kubernetes-persistentvolumeclaims "Use PersistentVolumeClaims to mount persistent storage volumes into your containers so that your data integration tasks (including big data), Data Services, and Routes tasks have stateful data access, multi-pod data sharing, and persistent storage across pod restarts.") |
| securityContext error | <ul> <li>Verify the UID/GID values are valid for your container image.</li> <li>Check pod events for <span>securityContext</span> errors.</li> <li>Ensure <span>runAsNonRoot: true</span> is compatible with your container                    image</li> </ul> | [Configuring securityContext for task containers running in Dynamic Engine environments](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/configuring-security-context-in-dynamic-engine "Override default container securityContext to run tasks with specific user IDs and group IDs. This enables fine-grained permission control, improving security posture, and meeting compliance requirements without rebuilding container images for different user IDs or group IDs.") |
| Environment variables not appearing | <ul> <li>Verify the ConfigMap/Secret exists: <span>kubectl get configmap/secret -n                      qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID</span>.</li> <li>Check the pod's environment: <span>kubectl exec &lt;pod-name&gt; -n                      qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID -- env</span>.</li> <li>Review the Helm values</li> </ul> | [Injecting environment variables from Kubernetes Secret](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/injecting-sensitive-data-from-kubernetes-secrets "Inject sensitive data (passwords, API keys, tokens) from Kubernetes Secret as environment variables in your Job (Data Integration, Big Data, and Data Services) and Routes tasks so they can easily and securely access credentials.") or [Injecting environment variables from ConfigMap](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/injecting-environment-variables-from-configmaps "Use Kubernetes ConfigMap to provide non-sensitive configuration (such as API endpoints, feature flags, or application settings) as environment variables to your data integration tasks (including big data), Data Services, and Routes tasks.") |
| volumes not mounting | <ul> <li>Verify the Secret exists: <span>kubectl get secret -n                      qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID</span>.</li> <li>Check PVC status: <span>kubectl get pvc -n                      qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID</span>.</li> <li>Inspect pod events: <span>kubectl describe pod &lt;pod-name&gt; -n                      qlik-processing-env-$DYNAMIC_ENGINE_ENVIRONMENT_ID</span></li> </ul> | [Mounting Kubernetes Secret as volumes in Dynamic Engine containers](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/mounting-kubernetes-secrets-as-volumes "Instead of using Secret as environment variables, you can mount them as files in the container filesystem, enabling your data integration tasks (including big data), Data Services, and Route tasks to access credentials in configuration files.") or [Mounting Kubernetes PersistentVolumeClaims for persistent storage in Dynamic Engine](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/mounting-kubernetes-persistentvolumeclaims "Use PersistentVolumeClaims to mount persistent storage volumes into your containers so that your data integration tasks (including big data), Data Services, and Routes tasks have stateful data access, multi-pod data sharing, and persistent storage across pod restarts.") |

## Next steps

After identifying your issue using this section:

* Review the [Mounting custom Kubernetes resources in Dynamic Engine environments](https://help.qlik.com/talend/en-US/dynamic-engine-configuration-guide/Cloud/custom-kubernetes-resource-mounting "Customizing Dynamic Engine environments through Kubernetes resource mounting: ConfigMap for non-sensitive configuration, Secret for credentials, volumes for files and certificates, PersistentVolumeClaim for persistent storage, and securityContext for user permissions.") section for prerequisites.
* Consult the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/) for details on ConfigMap, Secret, volumes, and securityContext.
* For general Kubernetes troubleshooting patterns and kubectl command reference, see the [Kubernetes debugging guide](https://kubernetes.io/docs/tasks/debug-application-cluster/debug-application/).