domino_admin_toolkit.checks.test_service_dns module
- domino_admin_toolkit.checks.test_service_dns.build_platform_dns_targets(platform_namespace, cluster_dns_suffix=None)
Build cluster-internal FQDNs for hand-picked platform DNS targets.
- async domino_admin_toolkit.checks.test_service_dns.query_domain(resolver, domain_name, pod_name)
- async domino_admin_toolkit.checks.test_service_dns.test_external_domain(k8s_client)
- Description:
Resolves a small set of external domain names through in-cluster DNS (CoreDNS/kube-dns). Per-resolver fan-out mirrors data-plane variance for external connectivity.
- Failure Conditions:
Some external domains resolve and others do not (partial egress/DNS forwarding issue)
In-cluster DNS endpoints cannot be discovered
- Troubleshooting Steps:
Exec into a platform pod and run nslookup/dig against the failing external hostnames
Verify CoreDNS forward/upstream configuration and network policies for egress DNS
Check corporate proxy or firewall rules blocking outbound DNS/HTTPS
Compare with test_egress HTTP connectivity for the same hosts
- Resolution Steps:
For internet-connected deployments: fix forwarders, egress, or proxy configuration
For air-gapped deployments: all-external failure is expected; use private mirrors instead
- Required Permissions:
Read Services/Endpoints in kube-system (DNS service discovery)
- See also:
test_egress.py — hand-picked external allowlist and air-gapped warning pattern
test_coredns_clusterrole.py — CoreDNS RBAC prerequisites (different layer)
- async domino_admin_toolkit.checks.test_service_dns.test_service_domain(k8s_client, platform_namespace)
- Description:
Verifies cluster DNS resolves hand-picked Domino platform service FQDNs the way workloads do: a single lookup per target against the kube-dns ClusterIP VIP (not per-CoreDNS-pod fan-out).
- Failure Conditions:
One or more platform service FQDNs do not resolve to an A record
kube-dns Service is missing in kube-system (malformed cluster DNS setup)
- Troubleshooting Steps:
kubectl get svc kube-dns -n kube-system and confirm ClusterIP is assigned
kubectl exec into a nucleus-frontend pod and nslookup key platform services
Check CoreDNS/kube-dns pods and logs in kube-system
Review Grafana CoreDNS dashboards/alerts for per-pod health (separate from this check)
- Resolution Steps:
Restore kube-dns/CoreDNS service and backing pods in kube-system
Fix platform Service objects or Endpoints for failing targets
Validate cluster DNS suffix matches CLUSTER_DNS_SUFFIX if using a non-default domain
- Required Permissions:
Read Services in kube-system and platform namespace
- See also:
test_coredns_clusterrole.py — CoreDNS RBAC sibling (permissions, not resolution)
test_egress.py — shape mirror for hand-picked allowlist pattern