// create headless service for pod, so tat we can use service ip instead of pods volatile IP // @param selector - selector that will find corresponding pod, this should have label "replica" set // @return *api.Service - created service // @return error func (cluster *CouchdbCluster) CreatePodService(selector map[string]string) (*api.Service, error) { // service special label serviceLabels := make(map[string]string) for k, v := range selector { serviceLabels[k] = v } // add special label serviceLabels[LABEL_POD_SERVICE] = "true" // svc port svcPorts := api.ServicePort{Port: COUCHDB_PORT} // service specs serviceSpec := api.ServiceSpec{Selector: selector, Ports: []api.ServicePort{svcPorts} /* ClusterIP: "None"*/} // init service struct service := api.Service{Spec: serviceSpec} service.GenerateName = cluster.Tag + "-pod-" service.Labels = serviceLabels // get a new kube client c, err := KubeClient(KUBE_API) // check for errors if err != nil { ErrorLog("spawner_rc: CreatePodService: Cannot connect to Kubernetes api ") ErrorLog(err) return nil, err } else { // create service in namespace return c.Services(cluster.Namespace).Create(&service) } }