Use this guide to diagnose and resolve errors that occur when you register a data plane cluster in Astro Private Cloud (APC) 1.x.Documentation Index
Fetch the complete documentation index at: https://astronomer-preview.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
”Commander Metadata service unavailable”
/metadata HTTP endpoint on the data plane during the registration handshake. Registration cannot complete until Houston successfully fetches and validates this metadata.
How registration works
When you register a data plane, Houston makes an outbound HTTPSGET request to Commander’s metadata endpoint and validates the JSON response before creating the cluster record. The failure can occur at any point along that path: DNS resolution, network connectivity, TLS trust, or ingress routing.
Correct metadata URL format
In APC 1.x, the chart creates two separate ingresses for Commander on the data plane:| Ingress | Hostname | Port | Protocol | Purpose |
|---|---|---|---|---|
commander-api-ingress | commander.<domainPrefix>.<baseDomain> | 443 | gRPC | Houston-Commander control channel |
commander-metadata-ingress | <domainPrefix>.<baseDomain> | 443 | HTTPS | Registration metadata endpoint |
/metadata to this URL internally when it makes the fetch call, so don’t include the path in the registration form:
apc.example.com and your data plane domainPrefix is dp-01:
- Correct:
https://dp-01.apc.example.com - Incorrect:
https://commander.dp-01.apc.example.com(this is the gRPC API ingress and returns a 404)
Diagnose the error
Work through the following steps in order to isolate the cause.Step 1: Verify Commander is running
On the data plane cluster, confirm Commander is healthy:1/1 Running. If Commander is crashlooping, check its logs:
Step 2: Verify DNS resolves to the correct IP
The data plane has its own NGINX ingress controller with its own load balancer IP, separate from the control plane’s load balancer. Confirm that the DNS for the data plane domain resolves to the data plane’s load balancer, not the control plane’s. Find the data plane’s load balancer IP:EXTERNAL-IP on the LoadBalancer-type service. In a co-located setup (control plane and data plane on the same cluster), the service name typically includes -dp-nginx and has a different IP from the control plane’s NGINX service.
Then verify DNS:
EXTERNAL-IP. A mismatch (for example, the data plane subdomain pointing to the control plane load balancer IP) causes all requests to return 404 because the control plane’s NGINX has no ingress rules for the data plane’s hostnames.
Co-located deploymentsWhen the control plane and data plane share a single cluster, they use separate namespaces and separate NGINX load balancers. DNS for
*.<domainPrefix>.<baseDomain> must be a distinct wildcard record pointing to the data plane’s load balancer IP. Verify this record exists and doesn’t share the control plane’s IP.Step 3: Test the metadata endpoint directly
After DNS resolves correctly, confirm the endpoint returns a valid 200 response:The
cloudProvider field may return "local" on Kubernetes clusters and certain co-located environments. This is expected and doesn’t affect registration.Step 4: Verify the metadata ingress exists and is configured correctly
Check that the metadata ingress exists in the data plane namespace:- Host matches
<domainPrefix>.<baseDomain>exactly. - Path is
/metadata. - Backend points to the Commander service on port
8880(the HTTP port, not the gRPC port50051). - Ingress class annotation (
kubernetes.io/ingress.class) matches the data plane’s NGINX class name.
helm upgrade on the data plane release with the correct global.plane.domainPrefix and global.baseDomain values.
Step 5: Verify network connectivity from the control plane
Even if the endpoint works from your workstation, Houston on the control plane must also reach it. Test from inside the Houston Pod:Step 6: Verify TLS certificate trust
If the data plane uses a private certificate authority (CA) or a certificate chain that Houston doesn’t trust, the HTTPS request fails with a TLS error. Test with certificate verification disabled:global.privateCaCerts Helm values and re-deploy.
Summary checklist
Before retrying registration, verify all of the following:- Commander Pod is
1/1 Runningin the data plane namespace. dig <domainPrefix>.<baseDomain>returns the data plane’s NGINX load balancer IP (not the control plane’s).curl https://<domainPrefix>.<baseDomain>/metadatareturns HTTP 200 with valid JSON.- The metadata URL entered in the registration form is
https://<domainPrefix>.<baseDomain>(no/metadatasuffix, Houston appends that internally). - The metadata ingress exists and its backend targets Commander’s HTTP port (
8880). - Houston on the control plane can reach the data plane’s load balancer over HTTPS.