// iam injects info into the environment about a host's self. // // Sets the following environment variables. (Values represent the data format. // Instances will get its own values.) // // MY_NODEIP=10.245.1.3 // MY_SERVICE_IP=10.22.1.4 // MY_PORT_PEER=2380 // MY_PORT_CLIENT=2379 // MY_NAMESPACE=default // MY_SELFLINK=/api/v1/namespaces/default/pods/deis-etcd-1-336jp // MY_UID=62a3b54a-6956-11e5-b8ab-0800279dd272 // MY_APISERVER=https://10.247.0.1:443 // MY_NAME=deis-etcd-1-336jp // MY_IP=10.246.44.7 // MY_LABEL_NAME=deis-etcd-1 # One entry per label in the JSON // MY_ANNOTATION_NAME=deis-etcd-1 # One entry per annitation in the JSON // MY_PORT_CLIENT=4100 // MY_PORT_PEER=2380 func iam(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) { me, err := aboutme.FromEnv() if err != nil { log.Errf(c, "Failed aboutme.FromEnv: %s", err) } else { if strings.TrimSpace(me.IP) == "" { log.Warn(c, "No IP found by API query.") ip, err := aboutme.MyIP() if err != nil || ip == "" { // Force pod death. log.Errf(c, "Failed to get an IP address: %s", err) os.Exit(5) } } me.ShuntEnv() os.Setenv("ETCD_NAME", me.Name) c.Put("ETCD_NAME", me.Name) } passEnv("MY_PORT_CLIENT", "$DEIS_ETCD_1_SERVICE_PORT_CLIENT") passEnv("MY_PORT_PEER", "$DEIS_ETCD_1_SERVICE_PORT_PEER") return nil, nil }
func main() { pod, err := aboutme.FromEnv() checkError(err) key, access := readSecrets() secrets := []Secret{ { Host: pod.IP, KeyID: key, AccessKey: access, }, } t := template.New("MinioTpl") t, err = t.Parse(templv2) checkError(err) err = os.MkdirAll(configdir, 0755) checkError(err) output, err := os.Create(configdir + "config.json") err = t.Execute(output, secrets) checkError(err) os.Args[0] = "minio" mc := strings.Join(os.Args, " ") run(mc) }
// iam injects info into the environment about a host's self. // // Sets the following environment variables. (Values represent the data format. // Instances will get its own values.) // // MY_NODEIP=10.245.1.3 // MY_SERVICE_IP=10.22.1.4 // MY_PORT_PEER=2380 // MY_PORT_CLIENT=2379 // MY_NAMESPACE=default // MY_SELFLINK=/api/v1/namespaces/default/pods/deis-etcd-1-336jp // MY_UID=62a3b54a-6956-11e5-b8ab-0800279dd272 // MY_APISERVER=https://10.247.0.1:443 // MY_NAME=deis-etcd-1-336jp // MY_IP=10.246.44.7 // MY_LABEL_NAME=deis-etcd-1 # One entry per label in the JSON // MY_ANNOTATION_NAME=deis-etcd-1 # One entry per annitation in the JSON // MY_PORT_CLIENT=4100 // MY_PORT_PEER=2380 func iam(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) { me, err := aboutme.FromEnv() if err != nil { log.Errf(c, "Failed aboutme.FromEnv: %s", err) } else { me.ShuntEnv() os.Setenv("ETCD_NAME", me.Name) c.Put("ETCD_NAME", me.Name) } passEnv("MY_PORT_CLIENT", "$DEIS_ETCD_1_SERVICE_PORT_CLIENT") passEnv("MY_PORT_PEER", "$DEIS_ETCD_1_SERVICE_PORT_PEER") return nil, nil }
// iam injects info into the environment about a host's self. // // Sets the following environment variables. (Values represent the data format. // Instances will get its own values.) // // MY_NODEIP=10.245.1.3 // MY_SERVICE_IP=10.22.1.4 // MY_PORT_PEER=2380 // MY_PORT_CLIENT=2379 // MY_NAMESPACE=default // MY_SELFLINK=/api/v1/namespaces/default/pods/deis-etcd-1-336jp // MY_UID=62a3b54a-6956-11e5-b8ab-0800279dd272 // MY_APISERVER=https://10.247.0.1:443 // MY_NAME=deis-etcd-1-336jp // MY_IP=10.246.44.7 // MY_LABEL_NAME=deis-etcd-1 # One entry per label in the JSON // MY_ANNOTATION_NAME=deis-etcd-1 # One entry per annitation in the JSON // MY_PORT_CLIENT=4100 // MY_PORT_PEER=2380 func iam(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) { me, err := aboutme.FromEnv() if err != nil { log.Errf(c, "Failed aboutme.FromEnv: %s", err) log.Warn(c, "Attempting to recover.") } // This will try to recover whenever IP is not set. Only some fields // can be recovered. But all we really need is IP and Name. if strings.TrimSpace(me.IP) == "" { log.Warn(c, "No IP found by API query.") ip, err := aboutme.MyIP() if err != nil || ip == "" { // Force pod death. log.Errf(c, "Failed to get an IP address: %s", err) os.Exit(5) } me.IP = ip } if strings.TrimSpace(me.Name) == "" { // Try to set name from DAPI. me.Name = os.Getenv("POD_NAME") log.Warnf(c, "Setting name to %q", me.Name) } if strings.TrimSpace(me.Namespace) == "" { // Try to set namespace from DAPI. me.Namespace = os.Getenv("POD_NAMESPACE") log.Warnf(c, "Setting name to %q", me.Namespace) } me.ShuntEnv() os.Setenv("ETCD_NAME", me.Name) c.Put("ETCD_NAME", me.Name) passEnv("MY_PORT_CLIENT", "$DEIS_ETCD_1_SERVICE_PORT_CLIENT") passEnv("MY_PORT_PEER", "$DEIS_ETCD_1_SERVICE_PORT_PEER") return nil, nil }
func main() { pod, err := aboutme.FromEnv() checkError(err) key, access := readSecrets() minioClient, err := newMinioClient(localMinioHost, localMinioPort, key, access, localMinioInsecure) if err != nil { log.Printf("Error creating minio client (%s)", err) os.Exit(1) } secrets := []Secret{ { Host: pod.IP, KeyID: key, AccessKey: access, }, } t := template.New("MinioTpl") t, err = t.Parse(templv2) checkError(err) err = os.MkdirAll(configdir, 0755) checkError(err) output, err := os.Create(configdir + "config.json") err = t.Execute(output, secrets) checkError(err) os.Args[0] = "minio" mc := strings.Join(os.Args, " ") runErrCh := make(chan error) log.Printf("starting Minio server") go func() { if err := run(mc); err != nil { runErrCh <- err } else { runErrCh <- errMinioExited } }() healthSrvHost := os.Getenv("HEALTH_SERVER_HOST") if healthSrvHost == "" { healthSrvHost = healthsrv.DefaultHost } healthSrvPort, err := strconv.Atoi(os.Getenv("HEALTH_SERVER_PORT")) if err != nil { healthSrvPort = healthsrv.DefaultPort } log.Printf("starting health check server on %s:%d", healthSrvHost, healthSrvPort) healthSrvErrCh := make(chan error) go func() { if err := healthsrv.Start(healthSrvHost, healthSrvPort, minioClient); err != nil { healthSrvErrCh <- err } else { healthSrvErrCh <- errHealthSrvExited } }() select { case err := <-runErrCh: log.Printf("Minio server error (%s)", err) os.Exit(1) case err := <-healthSrvErrCh: log.Printf("Healthcheck server error (%s)", err) os.Exit(1) } }