@@ -17,14 +17,10 @@ limitations under the License.
17
17
package main
18
18
19
19
import (
20
- "errors"
21
20
"flag"
22
- "fmt"
23
21
"os"
24
- "strings"
25
22
26
23
"github.com/form3tech-oss/x-pdb/internal/disruptionprobe"
27
- "github.com/form3tech-oss/x-pdb/internal/lock"
28
24
"github.com/form3tech-oss/x-pdb/internal/pdb"
29
25
"github.com/form3tech-oss/x-pdb/internal/preactivities"
30
26
stateclient "github.com/form3tech-oss/x-pdb/internal/state/client"
@@ -68,7 +64,7 @@ func main() {
68
64
var webhookCertsDir string
69
65
var webhookPort int
70
66
var stateCertsDir string
71
- var remoteEndpoints string
67
+ var localStateEndpoint string
72
68
var leaseNamespace string
73
69
var podID string
74
70
var kubeContext string
@@ -79,7 +75,7 @@ func main() {
79
75
flag .StringVar (& webhookCertsDir , "webhook-certs-dir" , "" , "The directory that contains webhook certificates" )
80
76
flag .IntVar (& webhookPort , "webhook-port" , 9443 , "The webhook binding port" )
81
77
flag .StringVar (& stateCertsDir , "state-certs-dir" , "" , "The directory that contains state server certificates" )
82
- flag .StringVar (& remoteEndpoints , "remote-endpoints " , "" , "The list of endpoints of the remote pdb controllers " )
78
+ flag .StringVar (& localStateEndpoint , "local-state-endpoint " , "x-pdb " , "The address the probe endpoint binds to. " )
83
79
flag .StringVar (& leaseNamespace , "namespace" , "kube-system" , "the namespace in which the controller runs in" )
84
80
flag .StringVar (& podID , "pod-id" , os .Getenv ("HOSTNAME" ),
85
81
"The ID of the pod x-pdb pod. Used as prefix for the lease-holder-identity to obtain locks across clusters." ,
@@ -124,23 +120,13 @@ func main() {
124
120
os .Exit (1 )
125
121
}
126
122
127
- remoteEndpointsList , err := parseEndpoints (remoteEndpoints )
123
+ stateClientPool := stateclient .NewClientPool (signalHandler , & logger , stateCertsDir )
124
+ stateClient , err := stateClientPool .Get (localStateEndpoint )
128
125
if err != nil {
129
- setupLog .Error (err , "unable to parse remote endpoints " )
126
+ setupLog .Error (err , "unable to get a state client " )
130
127
os .Exit (1 )
131
128
}
132
129
133
- stateClientPool := stateclient .NewClientPool (signalHandler , & logger , stateCertsDir )
134
-
135
- lockService := lock .NewService (
136
- & logger ,
137
- mgr .GetClient (),
138
- mgr .GetAPIReader (),
139
- stateClientPool ,
140
- leaseNamespace ,
141
- remoteEndpointsList ,
142
- )
143
-
144
130
disruptionProbeClientPool := disruptionprobe .NewClientPool (signalHandler , & logger , stateCertsDir )
145
131
disruptionProbeService := disruptionprobe .NewService (& logger , disruptionProbeClientPool )
146
132
@@ -151,37 +137,35 @@ func main() {
151
137
scaleFinder ,
152
138
stateClientPool ,
153
139
leaseNamespace ,
154
- remoteEndpointsList )
140
+ [] string {} )
155
141
156
142
preactivitiesService := preactivities .NewService (logger , mgr .GetClient ())
157
143
158
- {
159
- hookServer := & webhook.DefaultServer {
160
- Options : webhook.Options {
161
- Port : webhookPort ,
162
- CertDir : webhookCertsDir ,
163
- },
164
- }
165
- if err := mgr .Add (hookServer ); err != nil {
166
- setupLog .Error (err , "unable to create pod mutator webhook server" )
167
- os .Exit (1 )
168
- }
169
- decoder := admission .NewDecoder (mgr .GetScheme ())
170
- podValidationWebhook := webhooks .NewPodValidationWebhook (
171
- mgr .GetClient (),
172
- logger ,
173
- decoder ,
174
- mgr .GetEventRecorderFor ("x-pdb" ),
175
- clusterID ,
176
- podID ,
177
- dryRun ,
178
- pdbService ,
179
- lockService ,
180
- disruptionProbeService ,
181
- preactivitiesService ,
182
- )
183
- hookServer .Register ("/validate" , & webhook.Admission {Handler : podValidationWebhook })
144
+ hookServer := & webhook.DefaultServer {
145
+ Options : webhook.Options {
146
+ Port : webhookPort ,
147
+ CertDir : webhookCertsDir ,
148
+ },
149
+ }
150
+ if err := mgr .Add (hookServer ); err != nil {
151
+ setupLog .Error (err , "unable to create pod mutator webhook server" )
152
+ os .Exit (1 )
184
153
}
154
+ decoder := admission .NewDecoder (mgr .GetScheme ())
155
+ podValidationWebhook := webhooks .NewPodValidationWebhook (
156
+ mgr .GetClient (),
157
+ logger ,
158
+ decoder ,
159
+ mgr .GetEventRecorderFor ("x-pdb" ),
160
+ clusterID ,
161
+ podID ,
162
+ dryRun ,
163
+ stateClient ,
164
+ pdbService ,
165
+ disruptionProbeService ,
166
+ preactivitiesService ,
167
+ )
168
+ hookServer .Register ("/validate" , & webhook.Admission {Handler : podValidationWebhook })
185
169
186
170
// +kubebuilder:scaffold:builder
187
171
if err := mgr .AddHealthzCheck ("healthz" , healthz .Ping ); err != nil {
@@ -199,26 +183,3 @@ func main() {
199
183
os .Exit (1 )
200
184
}
201
185
}
202
-
203
- func parseEndpoints (endpointString string ) ([]string , error ) {
204
- //nolint:prealloc
205
- var endpoints []string
206
- var errs []error
207
- splitEndpoints := strings .Split (endpointString , "," )
208
-
209
- if len (splitEndpoints ) == 1 && splitEndpoints [0 ] == "" {
210
- return endpoints , nil
211
- }
212
-
213
- for _ , ep := range splitEndpoints {
214
- sanitizedEndpoint := strings .TrimSpace (ep )
215
-
216
- if sanitizedEndpoint == "" {
217
- errs = append (errs , fmt .Errorf ("endpoint cannot be empty" ))
218
- continue
219
- }
220
-
221
- endpoints = append (endpoints , sanitizedEndpoint )
222
- }
223
- return endpoints , errors .Join (errs ... )
224
- }
0 commit comments