-
Notifications
You must be signed in to change notification settings - Fork 0
/
http.go
41 lines (33 loc) · 949 Bytes
/
http.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import (
"net/http"
"github.com/prometheus/client_golang/prometheus/promhttp"
kwhhttp "github.com/slok/kubewebhook/v2/pkg/http"
"github.com/slok/kubewebhook/v2/pkg/log"
"github.com/slok/kubewebhook/v2/pkg/webhook/validating"
v1 "k8s.io/api/core/v1"
)
func httpServer(log log.Logger, validators ...validating.Validator) (http.Handler, error) {
chain := validating.NewChain(log, validators...)
hook, err := validating.NewWebhook(validating.WebhookConfig{
ID: "image_check",
Obj: &v1.Pod{},
Validator: chain,
Logger: log,
})
if err != nil {
return nil, err
}
handler, err := kwhhttp.HandlerFor(kwhhttp.HandlerConfig{
Webhook: hook,
Logger: log,
})
if err != nil {
return nil, err
}
mux := http.NewServeMux()
mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {})
mux.Handle("/metrics", promhttp.Handler())
mux.Handle("/validate", handler)
return mux, nil
}