kube/testapp/db/main.go
2019-08-03 22:31:25 +02:00

59 lines
1.2 KiB
Go

package main
import (
"fmt"
"io/ioutil"
"log"
"net"
"net/http"
"os"
"time"
)
var version string
func get(c *http.Client, url string) (body string, err error) {
resp, err := c.Get(url)
if err != nil {
return
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
return
}
body = string(b)
return
}
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s %s", r.RemoteAddr, r.Method, r.URL)
h, err := os.Hostname()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
c := &http.Client{Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: 5 * time.Second,
}).DialContext,
}}
body, err := get(c, "http://testapp-api:8080/healthz")
if err != nil {
body = err.Error()
}
fmt.Fprintf(w, "%s (%s) API Health: '%s'", h, version, body)
})
http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s %s", r.RemoteAddr, r.Method, r.URL)
fmt.Fprintf(w, "db: ok")
})
s := &http.Server{
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
IdleTimeout: 120 * time.Second,
Addr: ":8080",
}
log.Fatal(s.ListenAndServe())
}