- Overview
- Requirements
- Pre-installation
- Preparing the installation
- Downloading the installation packages
- Configuring the OCI-compliant registry
- Granting installation permissions
- Installing and configuring the service mesh
- Installing and configuring the GitOps tool
- Installing the External Secrets Operator in Kubernetes
- Applying miscellaneous configurations
- Running uipathctl
- Installation
- Post-installation
- Migration and upgrade
- Monitoring and alerting
- Cluster administration
- Product-specific configuration
- Orchestrator advanced configuration
- Configuring Orchestrator parameters
- Configuring appSettings
- Configuring the maximum request size
- Overriding cluster-level storage configuration
- Configuring NLog
- Saving robot logs to Elasticsearch
- Configuring credential stores
- Configuring encryption key per tenant
- Cleaning up the Orchestrator database
- Skipping host library installation
- AI Trust Layer
- Troubleshooting
- The backup setup does not work due to a failure to connect to Azure Government
- Pods in the uipath namespace stuck when enabling custom node taints
- Unable to launch Automation Hub and Apps with proxy setup
- Velero backup fails with FailedValidation error
- External Secrets troubleshooting
- Temporal as a Service troubleshooting
- AI Center and Document Understanding pods fail to start with TLS certificate verification enabled
- TLS certificate validation errors
- Fluentd does not export logs in IPv6 environments
- Studio Desktop cannot load Integration Service connectors and activities
- Manual ArgoCD NetworkPolicy mitigation (GHSA-47m3-95c7-g2g8)
- Configuring resource requests and limits for uipathctl-created workloads
Temporal as a Service troubleshooting
Solutions for Temporal as a Service issues in Automation Suite on EKS/AKS.
Maestro workflows are stuck or not starting
Symptom: Maestro process instances remain in a pending or running state without progressing.
Cause: TaaS pods are unavailable or unhealthy, preventing workflow tasks from being dispatched or picked up by workers.
Resolution
- Check the status of all TaaS pods:
kubectl get pods -n uipath | grep taaskubectl get pods -n uipath | grep taas - Identify any pods that are not in
Runningstate and review their logs:kubectl logs -n uipath <pod-name> --tail=100kubectl logs -n uipath <pod-name> --tail=100 - Look for
warnanderrorlevel entries. Common causes include database connectivity failures and resource exhaustion. - If the
taas-temporal-historypod is restarting, check memory usage. The history service is memory-intensive and its autoscaler is configured on memory utilization.
TaaS pods are crash-looping
Symptom: One or more taas-temporal-* pods are in CrashLoopBackOff state.
Cause: The most common cause is a failure to connect to the PostgreSQL database on startup.
Resolution
- Review the logs of the affected pod:
kubectl logs -n uipath <pod-name> --previouskubectl logs -n uipath <pod-name> --previous - Check for connection errors referencing the persistence or visibility store.
- Verify the PostgreSQL server is reachable from the cluster and that credentials in the
taas-temporal-app-secretssecret are correct. - Confirm that the PostgreSQL
max_connectionsvalue meets the minimum requirement for your TaaS profile. The default PostgreSQL value of 100 is insufficient. For the required values per profile, refer to SQL database.
Workflow execution is slow
Symptom: Maestro workflows start but tasks take longer than expected to be picked up or completed.
Cause: TaaS is under-resourced, the PostgreSQL connection pool is exhausted, or the number of worker pollers is insufficient for the current load.
Resolution
- Check Prometheus metrics for
temporal_activity_schedule_to_start_latency_bucketandtemporal_workflow_task_schedule_to_start_latency_bucket. High values indicate tasks are waiting in the queue longer than expected. - Check that the PostgreSQL instance has sufficient available connections. Connection pool exhaustion causes persistence timeouts under load.
- Review pod resource usage for
taas-temporal-historyandtaas-temporal-matching. If pods are CPU- or memory-constrained, consider adjusting resource limits or scaling the deployment.
Accessing the Temporal UI for diagnostics
The Temporal web UI (taas-temporal-web) is not exposed outside the cluster by default. To access it for diagnostic purposes, port-forward to the pod:
kubectl port-forward -n uipath deployment/taas-temporal-web 8008:8008
kubectl port-forward -n uipath deployment/taas-temporal-web 8008:8008
Open http://localhost:8008 in a browser. No login is required when accessing via port-forward.
The Temporal UI lets you inspect individual workflow executions, view execution history, and identify failed or timed-out activities.
Lock contention errors in TaaS logs
Symptom: TaaS logs contain errors referencing lock contention or conflicting database writes.
Cause: Two Kubernetes clusters are connected to the same PostgreSQL persistence store simultaneously. Only one cluster can actively run TaaS at a time.
Resolution
In an active/passive deployment, scale all TaaS deployments on the passive cluster to zero replicas. For details on active/passive requirements for TaaS, refer to Overview.
TaaS init job fails in a proxy environment
Description
When Maestro or Temporal as a Service (TaaS) is enabled in a proxy environment, the TaaS init job fails with the following error:
Unable to get namespace default info ... context deadline exceeded
Unable to get namespace default info ... context deadline exceeded
The taas-temporal-frontend, taas-temporal-history, and taas-temporal-internal-frontend pod logs contain the following error:
failed to do connect handshake ... HTTP/1.1 503
failed to do connect handshake ... HTTP/1.1 503
TaaS services connect to each other by pod IP address. If the no_proxy list does not cover a pod IP address, the connection goes to the proxy, which cannot reach pod IP addresses and rejects the request. This happens when pod IP addresses fall outside the ranges in the no_proxy list, for example with EKS custom networking or AKS with Azure CNI Overlay.
Solution
To address the issue, take the following steps:
-
Add the pod CIDR ranges and the node subnet CIDR ranges to
proxy.no_proxyininput.json. For details, refer to Proxy. -
Apply the configuration:
uipathctl manifest apply input.json --versions versions.jsonuipathctl manifest apply input.json --versions versions.json