package webhook
import "k8s.io/apiserver/pkg/util/webhook"
Package webhook implements a generic HTTP webhook plugin.
Index ¶
- func ValidateWebhookService(fldPath *field.Path, namespace, name string, path *string, port int32) field.ErrorList
- func ValidateWebhookURL(fldPath *field.Path, URL string, forceHttps bool) field.ErrorList
- func WithExponentialBackoff(initialBackoff time.Duration, webhookFn func() error) error
- type AuthenticationInfoResolver
- func NewDefaultAuthenticationInfoResolver(kubeconfigFile string) (AuthenticationInfoResolver, error)
- type AuthenticationInfoResolverDelegator
- func (a *AuthenticationInfoResolverDelegator) ClientConfigFor(hostPort string) (*rest.Config, error)
- func (a *AuthenticationInfoResolverDelegator) ClientConfigForService(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error)
- type AuthenticationInfoResolverWrapper
- type ClientConfig
- type ClientConfigService
- type ClientManager
- func NewClientManager(gvs []schema.GroupVersion, addToSchemaFuncs ...func(s *runtime.Scheme) error) (ClientManager, error)
- func (cm *ClientManager) HookClient(cc ClientConfig) (*rest.RESTClient, error)
- func (cm *ClientManager) SetAuthenticationInfoResolver(resolver AuthenticationInfoResolver)
- func (cm *ClientManager) SetAuthenticationInfoResolverWrapper(wrapper AuthenticationInfoResolverWrapper)
- func (cm *ClientManager) SetServiceResolver(sr ServiceResolver)
- func (cm *ClientManager) Validate() error
- type ErrCallingWebhook
- type ErrWebhookRejection
- type GenericWebhook
- func NewGenericWebhook(scheme *runtime.Scheme, codecFactory serializer.CodecFactory, kubeConfigFile string, groupVersions []schema.GroupVersion, initialBackoff time.Duration) (*GenericWebhook, error)
- func (g *GenericWebhook) WithExponentialBackoff(webhookFn func() rest.Result) rest.Result
- type ServiceResolver
Functions ¶
func ValidateWebhookService ¶
func ValidateWebhookService(fldPath *field.Path, namespace, name string, path *string, port int32) field.ErrorList
func ValidateWebhookURL ¶
ValidateWebhookURL validates webhook's URL.
func WithExponentialBackoff ¶
WithExponentialBackoff will retry webhookFn() up to 5 times with exponentially increasing backoff when it returns an error for which apierrors.SuggestsClientDelay() or apierrors.IsInternalError() returns true.
Types ¶
type AuthenticationInfoResolver ¶
type AuthenticationInfoResolver interface { // ClientConfigFor builds rest.Config based on the hostPort. ClientConfigFor(hostPort string) (*rest.Config, error) // ClientConfigForService builds rest.Config based on the serviceName and // serviceNamespace. ClientConfigForService(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error) }
AuthenticationInfoResolver builds rest.Config base on the server or service name and service namespace.
func NewDefaultAuthenticationInfoResolver ¶
func NewDefaultAuthenticationInfoResolver(kubeconfigFile string) (AuthenticationInfoResolver, error)
NewDefaultAuthenticationInfoResolver generates an AuthenticationInfoResolver that builds rest.Config based on the kubeconfig file. kubeconfigFile is the path to the kubeconfig.
type AuthenticationInfoResolverDelegator ¶
type AuthenticationInfoResolverDelegator struct { ClientConfigForFunc func(hostPort string) (*rest.Config, error) ClientConfigForServiceFunc func(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error) }
AuthenticationInfoResolverDelegator implements AuthenticationInfoResolver.
func (*AuthenticationInfoResolverDelegator) ClientConfigFor ¶
func (a *AuthenticationInfoResolverDelegator) ClientConfigFor(hostPort string) (*rest.Config, error)
ClientConfigFor returns client config for given hostPort.
func (*AuthenticationInfoResolverDelegator) ClientConfigForService ¶
func (a *AuthenticationInfoResolverDelegator) ClientConfigForService(serviceName, serviceNamespace string, servicePort int) (*rest.Config, error)
ClientConfigForService returns client config for given service.
type AuthenticationInfoResolverWrapper ¶
type AuthenticationInfoResolverWrapper func(AuthenticationInfoResolver) AuthenticationInfoResolver
AuthenticationInfoResolverWrapper can be used to inject Dial function to the rest.Config generated by the resolver.
func NewDefaultAuthenticationInfoResolverWrapper ¶
func NewDefaultAuthenticationInfoResolverWrapper( proxyTransport *http.Transport, kubeapiserverClientConfig *rest.Config) AuthenticationInfoResolverWrapper
NewDefaultAuthenticationInfoResolverWrapper builds a default authn resolver wrapper
type ClientConfig ¶
type ClientConfig struct { Name string URL string CABundle []byte Service *ClientConfigService }
ClientConfig defines parameters required for creating a hook client.
type ClientConfigService ¶
ClientConfigService defines service discovery parameters of the webhook.
type ClientManager ¶
type ClientManager struct {
// contains filtered or unexported fields
}
ClientManager builds REST clients to talk to webhooks. It caches the clients to avoid duplicate creation.
func NewClientManager ¶
func NewClientManager(gvs []schema.GroupVersion, addToSchemaFuncs ...func(s *runtime.Scheme) error) (ClientManager, error)
NewClientManager creates a clientManager.
func (*ClientManager) HookClient ¶
func (cm *ClientManager) HookClient(cc ClientConfig) (*rest.RESTClient, error)
HookClient get a RESTClient from the cache, or constructs one based on the webhook configuration.
func (*ClientManager) SetAuthenticationInfoResolver ¶
func (cm *ClientManager) SetAuthenticationInfoResolver(resolver AuthenticationInfoResolver)
SetAuthenticationInfoResolver sets the AuthenticationInfoResolver.
func (*ClientManager) SetAuthenticationInfoResolverWrapper ¶
func (cm *ClientManager) SetAuthenticationInfoResolverWrapper(wrapper AuthenticationInfoResolverWrapper)
SetAuthenticationInfoResolverWrapper sets the AuthenticationInfoResolverWrapper.
func (*ClientManager) SetServiceResolver ¶
func (cm *ClientManager) SetServiceResolver(sr ServiceResolver)
SetServiceResolver sets the ServiceResolver.
func (*ClientManager) Validate ¶
func (cm *ClientManager) Validate() error
Validate checks if ClientManager is properly set up.
type ErrCallingWebhook ¶
ErrCallingWebhook is returned for transport-layer errors calling webhooks. It represents a failure to talk to the webhook, not the webhook rejecting a request.
func (*ErrCallingWebhook) Error ¶
func (e *ErrCallingWebhook) Error() string
type ErrWebhookRejection ¶
type ErrWebhookRejection struct { Status *apierrors.StatusError }
ErrWebhookRejection represents a webhook properly rejecting a request.
func (*ErrWebhookRejection) Error ¶
func (e *ErrWebhookRejection) Error() string
type GenericWebhook ¶
type GenericWebhook struct { RestClient *rest.RESTClient InitialBackoff time.Duration }
func NewGenericWebhook ¶
func NewGenericWebhook(scheme *runtime.Scheme, codecFactory serializer.CodecFactory, kubeConfigFile string, groupVersions []schema.GroupVersion, initialBackoff time.Duration) (*GenericWebhook, error)
NewGenericWebhook creates a new GenericWebhook from the provided kubeconfig file.
func (*GenericWebhook) WithExponentialBackoff ¶
func (g *GenericWebhook) WithExponentialBackoff(webhookFn func() rest.Result) rest.Result
WithExponentialBackoff will retry webhookFn() up to 5 times with exponentially increasing backoff when it returns an error for which apierrors.SuggestsClientDelay() or apierrors.IsInternalError() returns true.
type ServiceResolver ¶
type ServiceResolver interface { ResolveEndpoint(namespace, name string, port int32) (*url.URL, error) }
ServiceResolver knows how to convert a service reference into an actual location.
func NewDefaultServiceResolver ¶
func NewDefaultServiceResolver() ServiceResolver
NewDefaultServiceResolver creates a new default server resolver.
Source Files ¶
authentication.go client.go error.go serviceresolver.go validation.go webhook.go
- Version
- v0.16.11
- Published
- Jun 17, 2020
- Platform
- js/wasm
- Imports
- 25 packages
- Last checked
- 2 minutes ago –
Tools for package owners.