Unable to connect Neosync to Temporal – context deadline exceeded on DescribeNamespace
# 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 条评论