...
1
16
17 package webhook_test
18
19 import (
20 "context"
21 "net/http"
22
23 ctrl "sigs.k8s.io/controller-runtime"
24 logf "sigs.k8s.io/controller-runtime/pkg/internal/log"
25 "sigs.k8s.io/controller-runtime/pkg/manager/signals"
26 . "sigs.k8s.io/controller-runtime/pkg/webhook"
27 "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
28 )
29
30 var (
31
32
33
34
35
36
37 mutatingHook = &Admission{
38 Handler: admission.HandlerFunc(func(ctx context.Context, req AdmissionRequest) AdmissionResponse {
39 return Patched("some changes",
40 JSONPatchOp{Operation: "add", Path: "/metadata/annotations/access", Value: "granted"},
41 JSONPatchOp{Operation: "add", Path: "/metadata/annotations/reason", Value: "not so secret"},
42 )
43 }),
44 }
45
46 validatingHook = &Admission{
47 Handler: admission.HandlerFunc(func(ctx context.Context, req AdmissionRequest) AdmissionResponse {
48 return Denied("none shall pass!")
49 }),
50 }
51 )
52
53
54
55 func Example() {
56
57
58 mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{})
59 if err != nil {
60 panic(err)
61 }
62
63
64 hookServer := NewServer(Options{
65 Port: 8443,
66 })
67 if err := mgr.Add(hookServer); err != nil {
68 panic(err)
69 }
70
71
72 hookServer.Register("/mutating", mutatingHook)
73 hookServer.Register("/validating", validatingHook)
74
75
76 err = mgr.Start(ctrl.SetupSignalHandler())
77 if err != nil {
78
79 panic(err)
80 }
81 }
82
83
84
85
86
87
88
89 func ExampleServer_Start() {
90
91 hookServer := NewServer(Options{
92 Port: 8443,
93 })
94
95
96 hookServer.Register("/mutating", mutatingHook)
97 hookServer.Register("/validating", validatingHook)
98
99
100 err := hookServer.Start(signals.SetupSignalHandler())
101 if err != nil {
102
103 panic(err)
104 }
105 }
106
107
108
109
110
111 func ExampleStandaloneWebhook() {
112
113
114
115 mux := http.NewServeMux()
116 port := ":8000"
117
118
119 mutatingHookHandler, err := admission.StandaloneWebhook(mutatingHook, admission.StandaloneOptions{
120
121
122 Logger: logf.RuntimeLog.WithName("mutating-webhook"),
123
124
125
126
127 MetricsPath: "/mutating",
128 })
129 if err != nil {
130
131 panic(err)
132 }
133
134 validatingHookHandler, err := admission.StandaloneWebhook(validatingHook, admission.StandaloneOptions{
135 Logger: logf.RuntimeLog.WithName("validating-webhook"),
136 MetricsPath: "/validating",
137 })
138 if err != nil {
139
140 panic(err)
141 }
142
143
144 mux.Handle("/mutating", mutatingHookHandler)
145 mux.Handle("/validating", validatingHookHandler)
146
147
148 if err := http.ListenAndServe(port, mux); err != nil {
149 panic(err)
150 }
151 }
152
View as plain text