in cluster/addons/fluentd-elasticsearch/es-image/elasticsearch_logging_discovery.go [83:157]
func main() {
flag.Parse()
klog.Info("Kubernetes Elasticsearch logging discovery")
advertiseAddress, err := getAdvertiseAddress()
if err != nil {
klog.Fatalf("Failed to get valid advertise address: %v", err)
}
fmt.Printf("network.host: \"%s\"\n\n", advertiseAddress)
cc, err := buildConfigFromEnvs(os.Getenv("APISERVER_HOST"), os.Getenv("KUBE_CONFIG_FILE"))
if err != nil {
klog.Fatalf("Failed to make client: %v", err)
}
client, err := clientset.NewForConfig(cc)
if err != nil {
klog.Fatalf("Failed to make client: %v", err)
}
namespace := metav1.NamespaceSystem
envNamespace := os.Getenv("NAMESPACE")
if envNamespace != "" {
if _, err := client.CoreV1().Namespaces().Get(context.TODO(), envNamespace, metav1.GetOptions{}); err != nil {
klog.Fatalf("%s namespace doesn't exist: %v", envNamespace, err)
}
namespace = envNamespace
}
var elasticsearch *corev1.Service
serviceName := os.Getenv("ELASTICSEARCH_SERVICE_NAME")
if serviceName == "" {
serviceName = "elasticsearch-logging"
}
// Look for endpoints associated with the Elasticsearch logging service.
// First wait for the service to become available.
for t := time.Now(); time.Since(t) < 5*time.Minute; time.Sleep(10 * time.Second) {
elasticsearch, err = client.CoreV1().Services(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
if err == nil {
break
}
}
// If we did not find an elasticsearch logging service then log a warning
// and return without adding any unicast hosts.
if elasticsearch == nil {
klog.Warningf("Failed to find the elasticsearch-logging service: %v", err)
return
}
var endpoints *corev1.Endpoints
addrs := []string{}
// Wait for some endpoints.
count, _ := strconv.Atoi(os.Getenv("MINIMUM_MASTER_NODES"))
for t := time.Now(); time.Since(t) < 5*time.Minute; time.Sleep(10 * time.Second) {
endpoints, err = client.CoreV1().Endpoints(namespace).Get(context.TODO(), serviceName, metav1.GetOptions{})
if err != nil {
continue
}
addrs = flattenSubsets(endpoints.Subsets)
klog.Infof("Found %s", addrs)
if len(addrs) > 0 && len(addrs) >= count {
break
}
}
// If there was an error finding endpoints then log a warning and quit.
if err != nil {
klog.Warningf("Error finding endpoints: %v", err)
return
}
klog.Infof("Endpoints = %s", addrs)
fmt.Printf("discovery.seed_hosts: [%s]\n", strings.Join(addrs, ", "))
fmt.Printf("cluster.initial_master_nodes: [%s]\n", strings.Join(addrs, ", "))
}