@@ -232,7 +232,7 @@ func (r *WebhookController) CheckOrUpdateWebhookConfigurations(ctx context.Conte
232232 }
233233
234234 needUpdate := false
235- expectedRules := webhookRule ()
235+ expectedRules := validatingWebhookRules ()
236236 for i := range existingValidating .Webhooks {
237237 if validatingWebhookNeedsUpdate (& existingValidating .Webhooks [i ], caBundle , expectedRules ) {
238238 needUpdate = true
@@ -257,8 +257,9 @@ func (r *WebhookController) CheckOrUpdateWebhookConfigurations(ctx context.Conte
257257 }
258258
259259 needUpdate = false
260+ mutatingRules := mutatingWebhookRules ()
260261 for i := range existingMutating .Webhooks {
261- if mutatingWebhookNeedsUpdate (& existingMutating .Webhooks [i ], caBundle , expectedRules ) {
262+ if mutatingWebhookNeedsUpdate (& existingMutating .Webhooks [i ], caBundle , mutatingRules ) {
262263 needUpdate = true
263264 }
264265 }
@@ -284,7 +285,15 @@ func webhookValidatingWebhookConfiguration(namespace, serviceName string, secret
284285 Name : "validate-skyhook.nvidia.com" ,
285286 ClientConfig : webhookClient (serviceName , namespace , "/validate-skyhook-nvidia-com-v1alpha1-skyhook" , secret ),
286287 FailurePolicy : ptr (admissionregistrationv1 .Fail ),
287- Rules : webhookRule (),
288+ Rules : validatingWebhookRules (),
289+ SideEffects : ptr (admissionregistrationv1 .SideEffectClassNone ),
290+ AdmissionReviewVersions : []string {"v1" },
291+ },
292+ {
293+ Name : "validate-deploymentpolicy.nvidia.com" ,
294+ ClientConfig : webhookClient (serviceName , namespace , "/validate-skyhook-nvidia-com-v1alpha1-deploymentpolicy" , secret ),
295+ FailurePolicy : ptr (admissionregistrationv1 .Fail ),
296+ Rules : validatingWebhookRules (),
288297 SideEffects : ptr (admissionregistrationv1 .SideEffectClassNone ),
289298 AdmissionReviewVersions : []string {"v1" },
290299 },
@@ -305,15 +314,15 @@ func webhookMutatingWebhookConfiguration(namespace, serviceName string, secret *
305314 Name : "mutate-skyhook.nvidia.com" ,
306315 ClientConfig : webhookClient (serviceName , namespace , "/mutate-skyhook-nvidia-com-v1alpha1-skyhook" , secret ),
307316 FailurePolicy : ptr (admissionregistrationv1 .Fail ),
308- Rules : webhookRule (),
317+ Rules : mutatingWebhookRules (),
309318 SideEffects : ptr (admissionregistrationv1 .SideEffectClassNone ),
310319 AdmissionReviewVersions : []string {"v1" },
311320 },
312321 {
313322 Name : "mutate-deploymentpolicy.nvidia.com" ,
314323 ClientConfig : webhookClient (serviceName , namespace , "/mutate-skyhook-nvidia-com-v1alpha1-deploymentpolicy" , secret ),
315324 FailurePolicy : ptr (admissionregistrationv1 .Fail ),
316- Rules : webhookRule (),
325+ Rules : mutatingWebhookRules (),
317326 SideEffects : ptr (admissionregistrationv1 .SideEffectClassNone ),
318327 AdmissionReviewVersions : []string {"v1" },
319328 },
@@ -358,7 +367,7 @@ func webhookClient(serviceName, namespace, path string, secret *corev1.Secret) a
358367 }
359368}
360369
361- func webhookRule () []admissionregistrationv1.RuleWithOperations {
370+ func validatingWebhookRules () []admissionregistrationv1.RuleWithOperations {
362371 return []admissionregistrationv1.RuleWithOperations {
363372 {
364373 Operations : []admissionregistrationv1.OperationType {admissionregistrationv1 .Create , admissionregistrationv1 .Update },
@@ -379,6 +388,27 @@ func webhookRule() []admissionregistrationv1.RuleWithOperations {
379388 }
380389}
381390
391+ func mutatingWebhookRules () []admissionregistrationv1.RuleWithOperations {
392+ return []admissionregistrationv1.RuleWithOperations {
393+ {
394+ Operations : []admissionregistrationv1.OperationType {admissionregistrationv1 .Create , admissionregistrationv1 .Update },
395+ Rule : admissionregistrationv1.Rule {
396+ APIGroups : []string {v1alpha1 .GroupVersion .Group },
397+ APIVersions : []string {v1alpha1 .GroupVersion .Version },
398+ Resources : []string {"skyhooks" },
399+ },
400+ },
401+ {
402+ Operations : []admissionregistrationv1.OperationType {admissionregistrationv1 .Create , admissionregistrationv1 .Update },
403+ Rule : admissionregistrationv1.Rule {
404+ APIGroups : []string {v1alpha1 .GroupVersion .Group },
405+ APIVersions : []string {v1alpha1 .GroupVersion .Version },
406+ Resources : []string {"deploymentpolicies" },
407+ },
408+ },
409+ }
410+ }
411+
382412// validatingWebhookNeedsUpdate checks if a validating webhook needs to be updated with new CABundle or Rules
383413// Returns true if updates were made to the webhook
384414func validatingWebhookNeedsUpdate (webhook * admissionregistrationv1.ValidatingWebhook , caBundle []byte , expectedRules []admissionregistrationv1.RuleWithOperations ) bool {
0 commit comments