in images/controller/pkg/broker.go [184:217]
func GetEgressNetworkPolicyData(podBrokerNamespace string) (NetworkPolicyTemplateData, error) {
resp := NetworkPolicyTemplateData{
TURNIPs: make([]string, 0),
}
// Lookup external TURN IPs. Fetch all service host and ports using SRV record of headless discovery service.
// NOTE: The SRV lookup returns resolvable aliases to the endpoints, so do another lookup should return the IP.
srv := fmt.Sprintf("turn-discovery.%s.svc.cluster.local", podBrokerNamespace)
_, srvs, err := net.LookupSRV("turn", "tcp", srv)
if err != nil {
return resp, fmt.Errorf("ERROR: failed to lookup TURN discovery SRV '%s', are you running in-cluster?", srv)
}
for _, srv := range srvs {
addrs, err := net.LookupHost(srv.Target)
if err != nil {
return resp, fmt.Errorf("ERROR: failed to query TURN A record")
}
resp.TURNIPs = append(resp.TURNIPs, addrs[0])
}
// Get kube-dns service ClusterIP
services, err := GetServiceClusterIP("kube-system", "k8s-app=kube-dns")
if err != nil {
return resp, err
}
for _, svc := range services.Services {
if svc.ServiceName == "kube-dns" {
resp.KubeDNSClusterIP = svc.ClusterIP
}
}
return resp, nil
}