@@ -80,7 +80,10 @@ type WebhookInstallOptions struct {
8080// ModifyWebhookDefinitions modifies webhook definitions by:
8181// - applying CABundle based on the provided tinyca
8282// - if webhook client config uses service spec, it's removed and replaced with direct url
83- func (o * WebhookInstallOptions ) ModifyWebhookDefinitions (caData []byte ) error {
83+ func (o * WebhookInstallOptions ) ModifyWebhookDefinitions () error {
84+ caData := o .LocalServingCAData
85+
86+ // generate host port.
8487 hostPort , err := o .generateHostPort ()
8588 if err != nil {
8689 return err
@@ -161,16 +164,14 @@ func (o *WebhookInstallOptions) generateHostPort() (string, error) {
161164// controller-runtime, where we need a random host-port & caData for webhook
162165// tests, but may be useful in similar scenarios.
163166func (o * WebhookInstallOptions ) PrepWithoutInstalling () error {
164- hookCA , err := o .setupCA ()
165- if err != nil {
167+ if err := o .setupCA (); err != nil {
166168 return err
167169 }
168170 if err := parseWebhook (o ); err != nil {
169171 return err
170172 }
171173
172- err = o .ModifyWebhookDefinitions (hookCA )
173- if err != nil {
174+ if err := o .ModifyWebhookDefinitions (); err != nil {
174175 return err
175176 }
176177
@@ -179,8 +180,10 @@ func (o *WebhookInstallOptions) PrepWithoutInstalling() error {
179180
180181// Install installs specified webhooks to the API server
181182func (o * WebhookInstallOptions ) Install (config * rest.Config ) error {
182- if err := o .PrepWithoutInstalling (); err != nil {
183- return err
183+ if len (o .LocalServingCAData ) == 0 {
184+ if err := o .PrepWithoutInstalling (); err != nil {
185+ return err
186+ }
184187 }
185188
186189 if err := createWebhooks (config , o .MutatingWebhooks , o .ValidatingWebhooks ); err != nil {
@@ -269,38 +272,38 @@ func (p *webhookPoller) poll() (done bool, err error) {
269272}
270273
271274// setupCA creates CA for testing and writes them to disk
272- func (o * WebhookInstallOptions ) setupCA () ([] byte , error ) {
275+ func (o * WebhookInstallOptions ) setupCA () error {
273276 hookCA , err := integration .NewTinyCA ()
274277 if err != nil {
275- return nil , fmt .Errorf ("unable to set up webhook CA: %v" , err )
278+ return fmt .Errorf ("unable to set up webhook CA: %v" , err )
276279 }
277280
278281 names := []string {"localhost" , o .LocalServingHost , o .LocalServingHostExternalName }
279282 hookCert , err := hookCA .NewServingCert (names ... )
280283 if err != nil {
281- return nil , fmt .Errorf ("unable to set up webhook serving certs: %v" , err )
284+ return fmt .Errorf ("unable to set up webhook serving certs: %v" , err )
282285 }
283286
284287 localServingCertsDir , err := ioutil .TempDir ("" , "envtest-serving-certs-" )
285288 o .LocalServingCertDir = localServingCertsDir
286289 if err != nil {
287- return nil , fmt .Errorf ("unable to create directory for webhook serving certs: %v" , err )
290+ return fmt .Errorf ("unable to create directory for webhook serving certs: %v" , err )
288291 }
289292
290293 certData , keyData , err := hookCert .AsBytes ()
291294 if err != nil {
292- return nil , fmt .Errorf ("unable to marshal webhook serving certs: %v" , err )
295+ return fmt .Errorf ("unable to marshal webhook serving certs: %v" , err )
293296 }
294297
295298 if err := ioutil .WriteFile (filepath .Join (localServingCertsDir , "tls.crt" ), certData , 0640 ); err != nil {
296- return nil , fmt .Errorf ("unable to write webhook serving cert to disk: %v" , err )
299+ return fmt .Errorf ("unable to write webhook serving cert to disk: %v" , err )
297300 }
298301 if err := ioutil .WriteFile (filepath .Join (localServingCertsDir , "tls.key" ), keyData , 0640 ); err != nil {
299- return nil , fmt .Errorf ("unable to write webhook serving key to disk: %v" , err )
302+ return fmt .Errorf ("unable to write webhook serving key to disk: %v" , err )
300303 }
301304
302305 o .LocalServingCAData = certData
303- return certData , nil
306+ return err
304307}
305308
306309func createWebhooks (config * rest.Config , mutHooks []client.Object , valHooks []client.Object ) error {
0 commit comments