Supervisor -actually- proxies metrics
This commit is contained in:
parent
c916f91771
commit
c7c2611222
|
@ -60,10 +60,12 @@ type reloadJob struct {
|
||||||
type supervisor struct {
|
type supervisor struct {
|
||||||
config supervisorConfig
|
config supervisorConfig
|
||||||
|
|
||||||
blueProxyHandler http.Handler
|
blueProxyHandler http.Handler
|
||||||
greenProxyHandler http.Handler
|
greenProxyHandler http.Handler
|
||||||
isGreen bool // blue-green deployment
|
blueMetricsProxyHandler http.Handler
|
||||||
deployConfigHash string
|
greenMetricsProxyHandler http.Handler
|
||||||
|
isGreen bool // blue-green deployment
|
||||||
|
deployConfigHash string
|
||||||
|
|
||||||
awsAccountNumber string
|
awsAccountNumber string
|
||||||
awsRegion string
|
awsRegion string
|
||||||
|
@ -106,7 +108,15 @@ func (sv *supervisor) scheduleReload() string {
|
||||||
return uuid
|
return uuid
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sv *supervisor) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (sv *supervisor) serveHTTP(w http.ResponseWriter, r *http.Request, metricsPort bool) {
|
||||||
|
if metricsPort {
|
||||||
|
if sv.isGreen {
|
||||||
|
sv.greenMetricsProxyHandler.ServeHTTP(w, r)
|
||||||
|
} else {
|
||||||
|
sv.blueMetricsProxyHandler.ServeHTTP(w, r)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
if strings.HasPrefix(r.URL.Path, "/api/supervisor") {
|
if strings.HasPrefix(r.URL.Path, "/api/supervisor") {
|
||||||
authHeader := r.Header.Get("Authorization")
|
authHeader := r.Header.Get("Authorization")
|
||||||
if authHeader == "" {
|
if authHeader == "" {
|
||||||
|
@ -477,8 +487,8 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
rijuInitVolume := exec.Command("riju-init-volume")
|
rijuInitVolume := exec.Command("riju-init-volume")
|
||||||
rijuInitVolume.Stdout = rijuInitVolume.Stdout
|
rijuInitVolume.Stdout = os.Stdout
|
||||||
rijuInitVolume.Stderr = rijuInitVolume.Stderr
|
rijuInitVolume.Stderr = os.Stderr
|
||||||
if err := rijuInitVolume.Run(); err != nil {
|
if err := rijuInitVolume.Run(); err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
@ -492,6 +502,15 @@ func main() {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
blueMetricsUrl, err := url.Parse(fmt.Sprintf("http://localhost:%d", blueMetricsPort))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
greenMetricsUrl, err := url.Parse(fmt.Sprintf("http://localhost:%d", greenMetricsPort))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalln(err)
|
||||||
|
}
|
||||||
|
|
||||||
awsCfg, err := awsConfig.LoadDefaultConfig(context.Background())
|
awsCfg, err := awsConfig.LoadDefaultConfig(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
|
@ -609,18 +628,38 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
sv := &supervisor{
|
sv := &supervisor{
|
||||||
config: supervisorCfg,
|
config: supervisorCfg,
|
||||||
blueProxyHandler: httputil.NewSingleHostReverseProxy(blueUrl),
|
blueProxyHandler: httputil.NewSingleHostReverseProxy(blueUrl),
|
||||||
greenProxyHandler: httputil.NewSingleHostReverseProxy(greenUrl),
|
greenProxyHandler: httputil.NewSingleHostReverseProxy(greenUrl),
|
||||||
isGreen: isGreen,
|
blueMetricsProxyHandler: httputil.NewSingleHostReverseProxy(blueMetricsUrl),
|
||||||
deployConfigHash: deployCfgHash,
|
greenMetricsProxyHandler: httputil.NewSingleHostReverseProxy(greenMetricsUrl),
|
||||||
s3: s3.NewFromConfig(awsCfg),
|
isGreen: isGreen,
|
||||||
ecr: ecr.NewFromConfig(awsCfg),
|
deployConfigHash: deployCfgHash,
|
||||||
awsRegion: awsCfg.Region,
|
s3: s3.NewFromConfig(awsCfg),
|
||||||
awsAccountNumber: *ident.Account,
|
ecr: ecr.NewFromConfig(awsCfg),
|
||||||
reloadJobs: map[string]*reloadJob{},
|
awsRegion: awsCfg.Region,
|
||||||
|
awsAccountNumber: *ident.Account,
|
||||||
|
reloadJobs: map[string]*reloadJob{},
|
||||||
}
|
}
|
||||||
go sv.scheduleReload()
|
go sv.scheduleReload()
|
||||||
|
go func() {
|
||||||
|
log.Println("listening on http://127.0.0.1:6121/metrics")
|
||||||
|
log.Fatalln(http.ListenAndServe(
|
||||||
|
"127.0.0.1:6121",
|
||||||
|
http.HandlerFunc(
|
||||||
|
func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
sv.serveHTTP(w, r, true)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
))
|
||||||
|
}()
|
||||||
log.Println("listening on http://0.0.0.0:80")
|
log.Println("listening on http://0.0.0.0:80")
|
||||||
log.Fatalln(http.ListenAndServe("0.0.0.0:80", sv))
|
log.Fatalln(http.ListenAndServe(
|
||||||
|
"0.0.0.0:80",
|
||||||
|
http.HandlerFunc(
|
||||||
|
func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
sv.serveHTTP(w, r, false)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue