Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EvaluationResponse ¶
type EvaluationResponse struct { // Result is the actionable result code from running the evaluation. Result EvaluationResult // Message is optional context as to why the evaluator has given the result // it has. Message string }
EvaluationResponse is the response to an evaluation request.
type EvaluationResult ¶
type EvaluationResult bool
EvaluationResult is the result of an evaluator evaluating a CertificateRequest based on the given CertificateRequestPolicy.
const ( // ResultDenied is the result of an evaluation where the evaluator denies the // request. ResultDenied EvaluationResult = false // ResultPassed is the result of an evaluation where the evaluator didn't // deny the request, and passed evaluation. ResultNotDenied EvaluationResult = true )
type Evaluator ¶
type Evaluator interface { // Evaluate determines whether the given request passes evaluation based on // the given policy. // Evaluate should return ResultDenied if the request is denied given the // policy. Evaluate should return ResultNotDenied if the request hasn't been // denied. // An occupying message may be returned to give context to the denied // decision. // An error should only be returned if there was an error in the evaluator // attempting to evaluate the request over the policy itself. A policy // manager may re-evaluate an evaluation if an error is returned. Evaluate(context.Context, *policyapi.CertificateRequestPolicy, *cmapi.CertificateRequest) (EvaluationResponse, error) }
Evaluator is responsible for making decisions on whether a CertificateRequest should be denied given a CertificateRequestPolicy. Evaluators should register within the registry if they wish to be evaluated by the approver manager.
type Interface ¶
type Interface interface { // Name is name of this Approver. Name must be unique to the // approver-policy instance. Name() string // RegisterFlags can be used by Approvers for registering CLI flags which are // required for configuring that Approver on this approver-policy instance. RegisterFlags(*pflag.FlagSet) // Prepare can be used by Approvers for registering extra Kubernetes // controllers, adding health checks, or other controller-runtime runnables. Prepare(context.Context, logr.Logger, manager.Manager) error // Evaluator is responsible for executing evaluations on whether a request // should be denied or not. Evaluator // Webhook implements admission functions for CertificateRequestPolicy // resources. Webhook // Reconciler is responsible for determining the status of a // CertificateRequestPolicy according to this Approver. Reconciler }
Interface is an Approver. An Approver implements an Evaluator and Webhook.
type Reconciler ¶
type Reconciler interface { // Ready declares whether the CertificateRequestPolicy is in a Ready state // according to this Reconciler. // ReconcilerReadyResponse should be returned if Ready executed successfully // and should report the what the Ready status condition should be according // to this Reconciler. // A returned error means that there was an error when trying to evaluate the // Ready state. A returned error will have Ready be retried. Ready(context.Context, *policyapi.CertificateRequestPolicy) (ReconcilerReadyResponse, error) // EnqueueChan returns a channel that when a message is received, will // reconcile the CertificateRequestPolicy with the given name, regardless of // state. // Useful for Reconcilers to provide an enqueue channel that forces a re-sync // of CertificateRequestPolicies where external state (e.g. files, incoming // events) effect the ready condition. // EnqueueChan() is expected to only be called once for each Reconciler at // start up. // A nil return value will never cause a re-sync by that Reconciler. EnqueueChan() <-chan string }
Reconciler is responsible for reconciling CertificateRequestPolicies and declaring what state they should be in.
type ReconcilerReadyResponse ¶
type ReconcilerReadyResponse struct { // Ready defines whether this Reconciler considers this // CertificateRequestPolicy to be in a ready state. Ready bool // Errors are list of errors that give context as to why the Ready field is // set to false. Only considered if Ready is set to false. Errors field.ErrorList // Result may be used by Reconciles to signal that the // CertificateRequestPolicies' status should be reconciled again and in what // duration into the future. // The CertificateRequestPolicy may be reconciled again sooner, but never // later than the RequeueAfter duration. // RequeueAfter is ignored if Request is false. ctrl.Result }
ReconcilerReadyResponse is the response to this Reconciler evaluating whether the CertificateRequestPolicy is in a Ready state.
type Webhook ¶
type Webhook interface { // Validate is run every time a CertificateRequestPolicy is created or // updated at admission time to the API server. If Validate returns a // response with Allowed set to false, the object will not be committed. // Similarly, any error will cause the object not to be committed // immediately, and no other webhooks will be run. Validate(context.Context, *policyapi.CertificateRequestPolicy) (WebhookValidationResponse, error) }
Webhook is responsible for making decisions about whether a CertificateRequestPolicy should be committed to the API server at admission time.
type WebhookValidationResponse ¶
type WebhookValidationResponse struct { // Allowed indicates whether the request was permitted by this Webhook. Allowed bool // Errors are errors in response to the validation request being not Allowed. Errors field.ErrorList // Warnings are non-fatal warnings when validating a CertificateRequestPolicy // Will be displayed as admission warnings when a CertificateRequestPolicy is applied // https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#response Warnings admission.Warnings }
WebhookValidationResponse is the response to a validate request to a Webhook.