Documentation ¶
Overview ¶
Package admission provides implementation for admission webhook and methods to implement admission webhook handlers.
See examples/mutatingwebhook.go and examples/validatingwebhook.go for examples of admission webhooks.
Index ¶
- func InjectDecoderInto(decoder *Decoder, i interface{}) (bool, error)
- type Decoder
- type DecoderInjector
- type Defaulter
- type Handler
- type HandlerFunc
- type Request
- type Response
- func Allowed(reason string) Response
- func Denied(reason string) Response
- func Errored(code int32, err error) Response
- func PatchResponseFromRaw(original, current []byte) Response
- func Patched(reason string, patches ...jsonpatch.JsonPatchOperation) Response
- func ValidationResponse(allowed bool, reason string) Response
- type Validator
- type Webhook
- func (w *Webhook) GetDecoder() *Decoder
- func (w *Webhook) Handle(ctx context.Context, req Request) Response
- func (w *Webhook) InjectFunc(f inject.Func) error
- func (w *Webhook) InjectLogger(l logr.Logger) error
- func (w *Webhook) InjectScheme(s *runtime.Scheme) error
- func (wh *Webhook) ServeHTTP(w http.ResponseWriter, r *http.Request)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InjectDecoderInto ¶ added in v0.2.0
InjectDecoderInto will set decoder on i and return the result if it implements Decoder. Returns false if i does not implement Decoder.
Types ¶
type Decoder ¶ added in v0.2.0
type Decoder struct {
// contains filtered or unexported fields
}
Decoder knows how to decode the contents of an admission request into a concrete object.
func NewDecoder ¶
NewDecoder creates a Decoder given the runtime.Scheme
type DecoderInjector ¶ added in v0.2.0
DecoderInjector is used by the ControllerManager to inject decoder into webhook handlers.
type Handler ¶
type Handler interface { // Handle yields a response to an AdmissionRequest. // // The supplied context is extracted from the received http.Request, allowing wrapping // http.Handlers to inject values into and control cancelation of downstream request processing. Handle(context.Context, Request) Response }
Handler can handle an AdmissionRequest.
func MultiMutatingHandler ¶ added in v0.2.0
MultiMutatingHandler combines multiple mutating webhook handlers into a single mutating webhook handler. Handlers are called in sequential order, and the first `allowed: false` response may short-circuit the rest. Users must take care to ensure patches are disjoint.
func MultiValidatingHandler ¶ added in v0.2.0
MultiValidatingHandler combines multiple validating webhook handlers into a single validating webhook handler. Handlers are called in sequential order, and the first `allowed: false` response may short-circuit the rest.
type HandlerFunc ¶
HandlerFunc implements Handler interface using a single function.
type Request ¶ added in v0.2.0
type Request struct {
admissionv1beta1.AdmissionRequest
}
Request defines the input for an admission handler. It contains information to identify the object in question (group, version, kind, resource, subresource, name, namespace), as well as the operation in question (e.g. Get, Create, etc), and the object itself.
type Response ¶ added in v0.2.0
type Response struct { // Patches are the JSON patches for mutating webhooks. // Using this instead of setting Response.Patch to minimize // overhead of serialization and deserialization. // Patches set here will override any patches in the response, // so leave this empty if you want to set the patch response directly. Patches []jsonpatch.JsonPatchOperation // AdmissionResponse is the raw admission response. // The Patch field in it will be overwritten by the listed patches. admissionv1beta1.AdmissionResponse }
Response is the output of an admission handler. It contains a response indicating if a given operation is allowed, as well as a set of patches to mutate the object in the case of a mutating admission handler.
func Allowed ¶ added in v0.2.0
Allowed constructs a response indicating that the given operation is allowed (without any patches).
func Denied ¶ added in v0.2.0
Denied constructs a response indicating that the given operation is not allowed.
func PatchResponseFromRaw ¶ added in v0.2.0
PatchResponseFromRaw takes 2 byte arrays and returns a new response with json patch. The original object should be passed in as raw bytes to avoid the roundtripping problem described in https://github.com/kubernetes-sigs/kubebuilder/issues/510.
func Patched ¶ added in v0.2.0
Patched constructs a response indicating that the given operation is allowed, and that the target object should be modified by the given JSONPatch operations.
func ValidationResponse ¶
ValidationResponse returns a response for admitting a request.
type Validator ¶ added in v0.2.0
type Validator interface { runtime.Object ValidateCreate() error ValidateUpdate(old runtime.Object) error ValidateDelete() error }
Validator defines functions for validating an operation
type Webhook ¶
type Webhook struct { // Handler actually processes an admission request returning whether it was allowed or denied, // and potentially patches to apply to the handler. Handler Handler // contains filtered or unexported fields }
Webhook represents each individual webhook.
func DefaultingWebhookFor ¶ added in v0.2.0
DefaultingWebhookFor creates a new Webhook for Defaulting the provided type.
func ValidatingWebhookFor ¶ added in v0.2.0
ValidatingWebhookFor creates a new Webhook for validating the provided type.
func (*Webhook) GetDecoder ¶ added in v0.2.0
GetDecoder returns a decoder to decode the objects embedded in admission requests. It may be nil if we haven't received a scheme to use to determine object types yet.
func (*Webhook) Handle ¶
Handle processes AdmissionRequest. If the webhook is mutating type, it delegates the AdmissionRequest to each handler and merge the patches. If the webhook is validating type, it delegates the AdmissionRequest to each handler and deny the request if anyone denies.
func (*Webhook) InjectFunc ¶ added in v0.2.0
InjectFunc injects the field setter into the webhook.
func (*Webhook) InjectLogger ¶ added in v0.2.0
InjectLogger gets a handle to a logging instance, hopefully with more info about this particular webhook.
func (*Webhook) InjectScheme ¶ added in v0.2.0
InjectScheme injects a scheme into the webhook, in order to construct a Decoder.