...
1
16
17 package certwatcher_test
18
19 import (
20 "context"
21 "crypto/tls"
22 "net/http"
23 "time"
24
25 ctrl "sigs.k8s.io/controller-runtime"
26 "sigs.k8s.io/controller-runtime/pkg/certwatcher"
27 )
28
29 type sampleServer struct {
30 }
31
32 func Example() {
33
34 ctx := ctrl.SetupSignalHandler()
35
36
37 watcher, err := certwatcher.New("ssl/tls.crt", "ssl/tls.key")
38 if err != nil {
39 panic(err)
40 }
41
42
43 go func() {
44 if err := watcher.Start(ctx); err != nil {
45 panic(err)
46 }
47 }()
48
49
50 listener, err := tls.Listen("tcp", "localhost:9443", &tls.Config{
51 GetCertificate: watcher.GetCertificate,
52 MinVersion: tls.VersionTLS12,
53 })
54 if err != nil {
55 panic(err)
56 }
57
58
59 srv := &http.Server{
60 Handler: &sampleServer{},
61 ReadHeaderTimeout: 5 * time.Second,
62 }
63
64
65 go func() {
66 <-ctx.Done()
67 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
68 defer cancel()
69 if err := srv.Shutdown(ctx); err != nil {
70 panic(err)
71 }
72 }()
73
74
75 if err := srv.Serve(listener); err != nil && err != http.ErrServerClosed {
76 panic(err)
77 }
78 }
79
80 func (s *sampleServer) ServeHTTP(http.ResponseWriter, *http.Request) {
81 }
82
View as plain text