ITADN

Unable to connect Neosync to Temporal – context deadline exceeded on DescribeNamespace

#3560Openalairock 创建于 2025-07-31
A
alairockcommented
# Unable to connect Neosync to Temporal – `context deadline exceeded` on DescribeNamespace ## Describe the Issue I am trying to connect a Neosync deployment in Kubernetes to a Temporal cluster, but Neosync fails with: ``` unable to verify account's temporal workspace. error: failed to describe namespace: context deadline exceeded ``` Even though: - Temporal is running and healthy in the `temporal` namespace. - The `default` namespace exists and responds via `grpcurl`. - I can successfully `DescribeNamespace` with `grpcurl` from a pod in the Neosync namespace. - Port and DNS resolution are correct, and I can reach the Temporal gRPC service from the cluster. --- ## Environment Details - **Neosync Version:** [add version or Helm chart version here] - **Kubernetes Version:** [e.g., 1.28] - **Temporal Deployment:** Official Temporal Helm Chart (`temporaltest` release) - **Namespace Setup:** - Temporal namespace: `temporal` - Neosync namespace: `neosync` --- ## Steps Taken 1. Verified Temporal frontend service: ```bash kubectl get svc temporaltest-frontend -n temporal # Shows port 7233 (ClusterIP) ``` 2. Verified gRPC connectivity and namespace via `grpcurl`: ```bash grpcurl -plaintext \ -d '{"namespace": "default"}' \ temporaltest-frontend.temporal.svc.cluster.local:7233 \ temporal.api.workflowservice.v1.WorkflowService.DescribeNamespace ``` ✅ Returns namespace info successfully. 3. Verified that the `default` namespace exists: ```bash tctl --address temporaltest-frontend.temporal.svc.cluster.local:7233 namespace describe default ``` ✅ Shows namespace info. 4. Configured Helm values for Neosync (excerpt): ```yaml api: temporal: url: temporaltest-frontend.temporal.svc.cluster.local:7233 defaultNamespace: default worker: temporal: url: temporaltest-frontend.temporal.svc.cluster.local:7233 namespace: default ``` 5. Confirmed that Neosync pods can resolve and reach the service. --- ## Expected Behavior - Neosync API should successfully validate the Temporal namespace and create jobs without timing out. - Workers should be able to poll the default queue once jobs are created. --- ## Actual Behavior - API logs show: ``` unable to verify account's temporal workspace. error: failed to describe namespace: context deadline exceeded ``` - This happens consistently when trying to create a job. --- ## Minimal Helm Values to Reproduce ```yaml api: temporal: url: temporaltest-frontend.temporal.svc.cluster.local:7233 defaultNamespace: default extraEnvVars: - name: KUBERNETES_ENABLED value: "true" - name: KUBERNETES_NAMESPACE value: "neosync" - name: KUBERNETES_WORKER_APP_NAME value: "neosync-worker" worker: temporal: url: temporaltest-frontend.temporal.svc.cluster.local:7233 namespace: default extraEnvVars: - name: KUBERNETES_ENABLED value: "true" - name: KUBERNETES_NAMESPACE value: "neosync" - name: KUBERNETES_WORKER_APP_NAME value: "neosync-worker" app: extraEnvVars: - name: KUBERNETES_ENABLED value: "true" - name: KUBERNETES_NAMESPACE value: "neosync" - name: KUBERNETES_WORKER_APP_NAME value: "neosync-worker" ``` --- ## Verification Snippet for Maintainers To confirm connectivity and namespace health from inside the cluster: ```bash # 1. Run a debug pod in the same namespace as Neosync kubectl run -it --rm debug --image=alpine:3.18 -n neosync -- sh # 2. Install curl and grpcurl apk add --no-cache curl curl -L https://github.com/fullstorydev/grpcurl/releases/latest/download/grpcurl_linux_arm64 -o /usr/local/bin/grpcurl chmod +x /usr/local/bin/grpcurl # 3. Test Temporal DescribeNamespace grpcurl -plaintext \ -d '{"namespace": "default"}' \ temporaltest-frontend.temporal.svc.cluster.local:7233 \ temporal.api.workflowservice.v1.WorkflowService.DescribeNamespace ``` ✅ If this succeeds, the problem is isolated to Neosync’s Temporal client logic. --- ## Questions 1. Is there any additional configuration needed for Neosync to properly connect to a non-TLS Temporal cluster? 2. Does Neosync require any special environment variables for Temporal that aren’t documented? 3. Could there be an issue where the namespace isn’t being passed correctly to Temporal despite Helm values? 4. Is there something else that I could be missing? A temporal config? A neosync config? Anything? Stumped here.
0 条评论