mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Incorporating feedback on 119341
This commit is contained in:
		@@ -20,6 +20,7 @@ package mutating
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -168,13 +169,12 @@ func (a *mutatingDispatcher) Dispatch(ctx context.Context, attr admission.Attrib
 | 
				
			|||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			switch err := err.(type) {
 | 
								switch err := err.(type) {
 | 
				
			||||||
			case *webhookutil.ErrCallingWebhook:
 | 
								case *webhookutil.ErrCallingWebhook:
 | 
				
			||||||
				if ctx.Err() == context.Canceled {
 | 
					 | 
				
			||||||
					klog.Warningf("Context Canceled when calling webhook %v", hook.Name)
 | 
					 | 
				
			||||||
					return err
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				if !ignoreClientCallFailures {
 | 
									if !ignoreClientCallFailures {
 | 
				
			||||||
					rejected = true
 | 
										rejected = true
 | 
				
			||||||
					admissionmetrics.Metrics.ObserveWebhookRejection(ctx, hook.Name, "admit", string(versionedAttr.Attributes.GetOperation()), admissionmetrics.WebhookRejectionCallingWebhookError, int(err.Status.ErrStatus.Code))
 | 
										// Ignore context cancelled from webhook metrics
 | 
				
			||||||
 | 
										if !errors.Is(err.Reason, context.Canceled) {
 | 
				
			||||||
 | 
											admissionmetrics.Metrics.ObserveWebhookRejection(ctx, hook.Name, "admit", string(versionedAttr.Attributes.GetOperation()), admissionmetrics.WebhookRejectionCallingWebhookError, int(err.Status.ErrStatus.Code))
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				admissionmetrics.Metrics.ObserveWebhook(ctx, hook.Name, time.Since(t), rejected, versionedAttr.Attributes, "admit", int(err.Status.ErrStatus.Code))
 | 
									admissionmetrics.Metrics.ObserveWebhook(ctx, hook.Name, time.Since(t), rejected, versionedAttr.Attributes, "admit", int(err.Status.ErrStatus.Code))
 | 
				
			||||||
			case *webhookutil.ErrWebhookRejection:
 | 
								case *webhookutil.ErrWebhookRejection:
 | 
				
			||||||
@@ -203,10 +203,14 @@ func (a *mutatingDispatcher) Dispatch(ctx context.Context, attr admission.Attrib
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if callErr, ok := err.(*webhookutil.ErrCallingWebhook); ok {
 | 
							if callErr, ok := err.(*webhookutil.ErrCallingWebhook); ok {
 | 
				
			||||||
			if ignoreClientCallFailures {
 | 
								if ignoreClientCallFailures {
 | 
				
			||||||
				klog.Warningf("Failed calling webhook, failing open %v: %v", hook.Name, callErr)
 | 
									// Ignore context cancelled from webhook metrics
 | 
				
			||||||
				admissionmetrics.Metrics.ObserveWebhookFailOpen(ctx, hook.Name, "admit")
 | 
									if errors.Is(callErr.Reason, context.Canceled) {
 | 
				
			||||||
				annotator.addFailedOpenAnnotation()
 | 
										klog.Warningf("Context canceled when calling webhook %v", hook.Name)
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										klog.Warningf("Failed calling webhook, failing open %v: %v", hook.Name, callErr)
 | 
				
			||||||
 | 
										admissionmetrics.Metrics.ObserveWebhookFailOpen(ctx, hook.Name, "admit")
 | 
				
			||||||
 | 
										annotator.addFailedOpenAnnotation()
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
				utilruntime.HandleError(callErr)
 | 
									utilruntime.HandleError(callErr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				select {
 | 
									select {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package validating
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
@@ -173,13 +174,12 @@ func (d *validatingDispatcher) Dispatch(ctx context.Context, attr admission.Attr
 | 
				
			|||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				switch err := err.(type) {
 | 
									switch err := err.(type) {
 | 
				
			||||||
				case *webhookutil.ErrCallingWebhook:
 | 
									case *webhookutil.ErrCallingWebhook:
 | 
				
			||||||
					if ctx.Err() == context.Canceled {
 | 
					 | 
				
			||||||
						klog.Warningf("Context Canceled when calling webhook %v", hook.Name)
 | 
					 | 
				
			||||||
						return
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					if !ignoreClientCallFailures {
 | 
										if !ignoreClientCallFailures {
 | 
				
			||||||
						rejected = true
 | 
											rejected = true
 | 
				
			||||||
						admissionmetrics.Metrics.ObserveWebhookRejection(ctx, hook.Name, "validating", string(versionedAttr.Attributes.GetOperation()), admissionmetrics.WebhookRejectionCallingWebhookError, int(err.Status.ErrStatus.Code))
 | 
											// Ignore context cancelled from webhook metrics
 | 
				
			||||||
 | 
											if !errors.Is(err.Reason, context.Canceled) {
 | 
				
			||||||
 | 
												admissionmetrics.Metrics.ObserveWebhookRejection(ctx, hook.Name, "validating", string(versionedAttr.Attributes.GetOperation()), admissionmetrics.WebhookRejectionCallingWebhookError, int(err.Status.ErrStatus.Code))
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					admissionmetrics.Metrics.ObserveWebhook(ctx, hook.Name, time.Since(t), rejected, versionedAttr.Attributes, "validating", int(err.Status.ErrStatus.Code))
 | 
										admissionmetrics.Metrics.ObserveWebhook(ctx, hook.Name, time.Since(t), rejected, versionedAttr.Attributes, "validating", int(err.Status.ErrStatus.Code))
 | 
				
			||||||
				case *webhookutil.ErrWebhookRejection:
 | 
									case *webhookutil.ErrWebhookRejection:
 | 
				
			||||||
@@ -198,12 +198,17 @@ func (d *validatingDispatcher) Dispatch(ctx context.Context, attr admission.Attr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			if callErr, ok := err.(*webhookutil.ErrCallingWebhook); ok {
 | 
								if callErr, ok := err.(*webhookutil.ErrCallingWebhook); ok {
 | 
				
			||||||
				if ignoreClientCallFailures {
 | 
									if ignoreClientCallFailures {
 | 
				
			||||||
					klog.Warningf("Failed calling webhook, failing open %v: %v", hook.Name, callErr)
 | 
										// Ignore context cancelled from webhook metrics
 | 
				
			||||||
					admissionmetrics.Metrics.ObserveWebhookFailOpen(ctx, hook.Name, "validating")
 | 
										if errors.Is(callErr.Reason, context.Canceled) {
 | 
				
			||||||
					key := fmt.Sprintf("%sround_0_index_%d", ValidatingAuditAnnotationFailedOpenKeyPrefix, idx)
 | 
											klog.Warningf("Context canceled when calling webhook %v", hook.Name)
 | 
				
			||||||
					value := hook.Name
 | 
										} else {
 | 
				
			||||||
					if err := versionedAttr.Attributes.AddAnnotation(key, value); err != nil {
 | 
											klog.Warningf("Failed calling webhook, failing open %v: %v", hook.Name, callErr)
 | 
				
			||||||
						klog.Warningf("Failed to set admission audit annotation %s to %s for validating webhook %s: %v", key, value, hook.Name, err)
 | 
											admissionmetrics.Metrics.ObserveWebhookFailOpen(ctx, hook.Name, "validating")
 | 
				
			||||||
 | 
											key := fmt.Sprintf("%sround_0_index_%d", ValidatingAuditAnnotationFailedOpenKeyPrefix, idx)
 | 
				
			||||||
 | 
											value := hook.Name
 | 
				
			||||||
 | 
											if err := versionedAttr.Attributes.AddAnnotation(key, value); err != nil {
 | 
				
			||||||
 | 
												klog.Warningf("Failed to set admission audit annotation %s to %s for validating webhook %s: %v", key, value, hook.Name, err)
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					utilruntime.HandleError(callErr)
 | 
										utilruntime.HandleError(callErr)
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user