koding / kite

Micro-service framework in Go
https://godoc.org/github.com/koding/kite
MIT License
3.26k stars 300 forks source link

examples: state explicitly what is required to use Kontrol API #197

Open HolaYang opened 7 years ago

HolaYang commented 7 years ago

I do every process in tutorial.

But it raises "No kontrol URL given in config"

What should I do to figure it out?

rjeczalik commented 7 years ago

@Takeoffyoung In order to use Kontrol API you need to configure its endpoint first, e.g.

k := kite.New("name", "1.0.0")
k.Config.KontrolURL = "http://example.com/kontrol/kite"

Next problem you may encounter is that you'd need to provide also (*Config).KiteKey in order to authenticate to Kontrol.

Looking at the examples I agree it is not clear, they assume (*config.Config).KontrolURL is either read from ~/.kite/kite.key or from environment. In case both places do not have it set, you can get an error as the one you're getting.

This needs to be improved.

HolaYang commented 7 years ago

Year, I've configure the environment variables like KONTROL_USERNAME, KONTROL_URL...

And do kontrol -initial, get right result of kitectl showkey.

But in server endpoint, k.Config.KontrolURL is empty

Could you tell me why?

Which step makes it wrong?

rjeczalik commented 7 years ago

@Takeoffyoung Can you show me your code just to confirm?

HolaYang commented 7 years ago
package main
import (
    "github.com/koding/kite"
    "net/url"
    "fmt"
)

func main() {
    k := kite.New("first", "1.0.0")
    k.Config.Port = 6000
    fmt.Println(k.Config.KontrolURL)

    k.HandleFunc("square", func(r *kite.Request) (interface{}, error) {
        a := r.Args.One().MustFloat64()
        return a * a, nil
    })

    k.Register(&url.URL{Scheme: "http", Host: "localhost:6000/kite"})
    k.Run()
}

It does not read configuration from neither environment variables nor ~/kite/kite.key .

Above all.

rjeczalik commented 7 years ago

@Takeoffyoung kite.New() uses default configuration, it does not read kite.key nor environment.

Your code needs config.Get() or config.MustGet() for that, like this:

https://github.com/koding/kite/blob/master/examples/math-register/math-register.go#L29

HolaYang commented 7 years ago

Oh.... Thx very much.

huh... Maybe I've figured it out, but I am trapped in another trouble.

I am trying it solve it by myself. Thank you.