diff --git a/api/kyverno/v1/common_types.go b/api/kyverno/v1/common_types.go
index be59059ca5..ef797d666d 100644
--- a/api/kyverno/v1/common_types.go
+++ b/api/kyverno/v1/common_types.go
@@ -5,6 +5,7 @@ import (
"github.com/sigstore/k8s-manifest-sigstore/pkg/k8smanifest"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/pod-security-admission/api"
@@ -60,8 +61,8 @@ type ContextEntry struct {
// ConfigMap is the ConfigMap reference.
ConfigMap *ConfigMapReference `json:"configMap,omitempty" yaml:"configMap,omitempty"`
- // APICall defines an HTTP request to the Kubernetes API server. The JSON
- // data retrieved is stored in the context.
+ // APICall is an HTTP request to the Kubernetes API server, or other JSON web service.
+ // The data returned is stored in the context with the name for the context entry.
APICall *APICall `json:"apiCall,omitempty" yaml:"apiCall,omitempty"`
// ImageRegistry defines requests to an OCI/Docker V2 registry to fetch image
@@ -112,25 +113,58 @@ type ConfigMapReference struct {
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}
-// APICall defines an HTTP request to the Kubernetes API server. The JSON
-// data retrieved is stored in the context. An APICall contains a URLPath
-// used to perform the HTTP GET request and an optional JMESPath used to
-// transform the retrieved JSON data.
type APICall struct {
// URLPath is the URL path to be used in the HTTP GET request to the
// Kubernetes API server (e.g. "/api/v1/namespaces" or "/apis/apps/v1/deployments").
// The format required is the same format used by the `kubectl get --raw` command.
+ // +kubebuilder:validation:Optional
URLPath string `json:"urlPath" yaml:"urlPath"`
+ // Service is an API call to a JSON web service
+ // +kubebuilder:validation:Optional
+ Service *ServiceCall `json:"service,omitempty" yaml:"service,omitempty"`
+
// JMESPath is an optional JSON Match Expression that can be used to
- // transform the JSON response returned from the API server. For example
+ // transform the JSON response returned from the server. For example
// a JMESPath of "items | length(@)" applied to the API server response
- // to the URLPath "/apis/apps/v1/deployments" will return the total count
+ // for the URLPath "/apis/apps/v1/deployments" will return the total count
// of deployments across all namespaces.
- // +optional
+ // +kubebuilder:validation:Optional
JMESPath string `json:"jmesPath,omitempty" yaml:"jmesPath,omitempty"`
}
+type ServiceCall struct {
+ // URL is the JSON web service URL.
+ // The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ URL string `json:"urlPath" yaml:"urlPath"`
+
+ // CABundle is a PEM encoded CA bundle which will be used to validate
+ // the server certificate.
+ // +kubebuilder:validation:Optional
+ CABundle string `json:"caBundle" yaml:"caBundle"`
+
+ // Method is the HTTP request type (GET or POST).
+ // +kubebuilder:default=GET
+ Method Method `json:"requestType" yaml:"requestType"`
+
+ // Data specifies the POST data sent to the server.
+ // +kubebuilder:validation:Optional
+ Data []RequestData `json:"data" yaml:"data"`
+}
+
+// Method is a HTTP request type.
+// +kubebuilder:validation:Enum=GET;POST
+type Method string
+
+// RequestData contains the HTTP POST data
+type RequestData struct {
+ // Key is a unique identifier for the data value
+ Key string `json:"key" yaml:"key"`
+
+ // Value is the data value
+ Value *apiextensionsv1.JSON `json:"value" yaml:"value"`
+}
+
// Condition defines variable-based conditional criteria for rule execution.
type Condition struct {
// Key is the context entry (using JMESPath) for conditional rule evaluation.
diff --git a/api/kyverno/v1/zz_generated.deepcopy.go b/api/kyverno/v1/zz_generated.deepcopy.go
index 267dd93e1a..a98ba2b4f7 100755
--- a/api/kyverno/v1/zz_generated.deepcopy.go
+++ b/api/kyverno/v1/zz_generated.deepcopy.go
@@ -32,6 +32,11 @@ import (
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *APICall) DeepCopyInto(out *APICall) {
*out = *in
+ if in.Service != nil {
+ in, out := &in.Service, &out.Service
+ *out = new(ServiceCall)
+ (*in).DeepCopyInto(*out)
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APICall.
@@ -393,7 +398,7 @@ func (in *ContextEntry) DeepCopyInto(out *ContextEntry) {
if in.APICall != nil {
in, out := &in.APICall, &out.APICall
*out = new(APICall)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
if in.ImageRegistry != nil {
in, out := &in.ImageRegistry, &out.ImageRegistry
@@ -1075,6 +1080,26 @@ func (in *PolicyStatus) DeepCopy() *PolicyStatus {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *RequestData) DeepCopyInto(out *RequestData) {
+ *out = *in
+ if in.Value != nil {
+ in, out := &in.Value, &out.Value
+ *out = new(apiextensionsv1.JSON)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestData.
+func (in *RequestData) DeepCopy() *RequestData {
+ if in == nil {
+ return nil
+ }
+ out := new(RequestData)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RequestInfo) DeepCopyInto(out *RequestInfo) {
*out = *in
@@ -1285,6 +1310,28 @@ func (in *SecretReference) DeepCopy() *SecretReference {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ServiceCall) DeepCopyInto(out *ServiceCall) {
+ *out = *in
+ if in.Data != nil {
+ in, out := &in.Data, &out.Data
+ *out = make([]RequestData, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCall.
+func (in *ServiceCall) DeepCopy() *ServiceCall {
+ if in == nil {
+ return nil
+ }
+ out := new(ServiceCall)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Spec) DeepCopyInto(out *Spec) {
*out = *in
diff --git a/charts/kyverno/templates/crds.yaml b/charts/kyverno/templates/crds.yaml
index b015222ac5..39238ef1f2 100644
--- a/charts/kyverno/templates/crds.yaml
+++ b/charts/kyverno/templates/crds.yaml
@@ -3531,19 +3531,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -3551,8 +3595,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -5049,20 +5091,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -5071,8 +5159,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -5344,20 +5430,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -5366,8 +5498,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -6552,19 +6682,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -6572,8 +6747,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -8138,21 +8311,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -8161,8 +8383,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -8446,21 +8666,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -8469,8 +8738,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -9847,19 +10114,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -9867,8 +10178,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -10969,20 +11278,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -10991,8 +11346,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -11432,20 +11785,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -11454,8 +11853,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -12600,19 +12997,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -12620,8 +13062,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -14186,21 +14626,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -14209,8 +14698,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -14494,21 +14981,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -14517,8 +15053,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -16110,19 +16644,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -16130,8 +16708,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -17628,20 +18204,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -17650,8 +18272,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -17923,20 +18543,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -17945,8 +18611,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -19132,19 +19796,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -19152,8 +19861,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -20718,21 +21425,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -20741,8 +21497,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -21026,21 +21780,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -21049,8 +21852,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -22428,19 +23229,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -22448,8 +23293,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -23550,20 +24393,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -23572,8 +24461,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -24013,20 +24900,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -24035,8 +24968,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -25181,19 +26112,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -25201,8 +26177,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -26767,21 +27741,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -26790,8 +27813,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -27075,21 +28096,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -27098,8 +28168,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
diff --git a/charts/kyverno/templates/deployment.yaml b/charts/kyverno/templates/deployment.yaml
index c58ce478cc..ecb6f26dce 100644
--- a/charts/kyverno/templates/deployment.yaml
+++ b/charts/kyverno/templates/deployment.yaml
@@ -168,7 +168,16 @@ spec:
volumeMounts:
- mountPath: {{ .Values.tufRootMountPath }}
name: sigstore
+ - mountPath: /var/run/secrets/tokens
+ name: api-token
volumes:
- name: sigstore
emptyDir: {}
+ - name: api-token
+ projected:
+ sources:
+ - serviceAccountToken:
+ path: api-token
+ expirationSeconds: 600
+ audience: kyverno-extension
{{- end -}}
diff --git a/config/crds/kyverno.io_clusterpolicies.yaml b/config/crds/kyverno.io_clusterpolicies.yaml
index 2b3ff18f9d..7a71da016a 100644
--- a/config/crds/kyverno.io_clusterpolicies.yaml
+++ b/config/crds/kyverno.io_clusterpolicies.yaml
@@ -129,19 +129,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -149,8 +193,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -1647,20 +1689,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -1669,8 +1757,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -1942,20 +2028,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -1964,8 +2096,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -3150,19 +3280,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -3170,8 +3345,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -4736,21 +4909,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -4759,8 +4981,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -5044,21 +5264,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -5067,8 +5336,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -6445,19 +6712,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -6465,8 +6776,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -7567,20 +7876,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -7589,8 +7944,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -8030,20 +8383,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -8052,8 +8451,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -9198,19 +9595,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -9218,8 +9660,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -10784,21 +11224,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -10807,8 +11296,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -11092,21 +11579,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -11115,8 +11651,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
diff --git a/config/crds/kyverno.io_policies.yaml b/config/crds/kyverno.io_policies.yaml
index dc314255e3..03869eef67 100644
--- a/config/crds/kyverno.io_policies.yaml
+++ b/config/crds/kyverno.io_policies.yaml
@@ -130,19 +130,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -150,8 +194,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -1648,20 +1690,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -1670,8 +1758,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -1943,20 +2029,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -1965,8 +2097,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -3152,19 +3282,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -3172,8 +3347,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -4738,21 +4911,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -4761,8 +4983,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -5046,21 +5266,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -5069,8 +5338,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -6448,19 +6715,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -6468,8 +6779,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -7570,20 +7879,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -7592,8 +7947,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -8033,20 +8386,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -8055,8 +8454,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -9201,19 +9598,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -9221,8 +9663,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -10787,21 +11227,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -10810,8 +11299,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -11095,21 +11582,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -11118,8 +11654,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
diff --git a/config/install.yaml b/config/install.yaml
index a497a279e7..2165826a54 100644
--- a/config/install.yaml
+++ b/config/install.yaml
@@ -3602,19 +3602,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -3622,8 +3666,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -5120,20 +5162,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -5142,8 +5230,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -5415,20 +5501,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -5437,8 +5569,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -6623,19 +6753,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -6643,8 +6818,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -8209,21 +8382,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -8232,8 +8454,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -8517,21 +8737,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -8540,8 +8809,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -9918,19 +10185,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -9938,8 +10249,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -11040,20 +11349,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -11062,8 +11417,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -11503,20 +11856,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -11525,8 +11924,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -12671,19 +13068,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -12691,8 +13133,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -14257,21 +14697,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -14280,8 +14769,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -14565,21 +15052,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -14588,8 +15124,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -16183,19 +16717,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -16203,8 +16781,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -17701,20 +18277,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -17723,8 +18345,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -17996,20 +18616,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -18018,8 +18684,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -19205,19 +19869,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -19225,8 +19934,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -20791,21 +21498,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -20814,8 +21570,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -21099,21 +21853,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -21122,8 +21925,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -22501,19 +23302,63 @@ spec:
must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the Kubernetes
- API server. The JSON data retrieved is stored in the
- context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match Expression
that can be used to transform the JSON response
- returned from the API server. For example a JMESPath
+ returned from the server. For example a JMESPath
of "items | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ response for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments across
all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type (GET
+ or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used in
the HTTP GET request to the Kubernetes API server
@@ -22521,8 +23366,6 @@ spec:
The format required is the same format used by the
`kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -23623,20 +24466,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -23645,8 +24534,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -24086,20 +24973,66 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON data
- retrieved is stored in the context.
+ description: APICall is an HTTP request to the
+ Kubernetes API server, or other JSON web service.
+ The data returned is stored in the context
+ with the name for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON
Match Expression that can be used to transform
- the JSON response returned from the API
- server. For example a JMESPath of "items
- | length(@)" applied to the API server
- response to the URLPath "/apis/apps/v1/deployments"
+ the JSON response returned from the server.
+ For example a JMESPath of "items | length(@)"
+ applied to the API server response for
+ the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call to a
+ JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to validate
+ the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST
+ data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data
+ value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request
+ type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service
+ URL. The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to
be used in the HTTP GET request to the
@@ -24108,8 +25041,6 @@ spec:
format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -25254,19 +26185,64 @@ spec:
APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request to the
- Kubernetes API server. The JSON data retrieved is
- stored in the context.
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data
+ returned is stored in the context with the name
+ for the context entry.
properties:
jmesPath:
description: JMESPath is an optional JSON Match
Expression that can be used to transform the
- JSON response returned from the API server.
- For example a JMESPath of "items | length(@)"
- applied to the API server response to the URLPath
- "/apis/apps/v1/deployments" will return the
- total count of deployments across all namespaces.
+ JSON response returned from the server. For
+ example a JMESPath of "items | length(@)" applied
+ to the API server response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
type: string
+ service:
+ description: Service is an API call to a JSON
+ web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA
+ bundle which will be used to validate the
+ server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data
+ sent to the server.
+ items:
+ description: RequestData contains the HTTP
+ POST data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path to be used
in the HTTP GET request to the Kubernetes API
@@ -25274,8 +26250,6 @@ spec:
The format required is the same format used
by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap reference.
@@ -26840,21 +27814,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -26863,8 +27886,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -27148,21 +28169,70 @@ spec:
reference or a APILookup must be provided.
properties:
apiCall:
- description: APICall defines an HTTP request
- to the Kubernetes API server. The JSON
- data retrieved is stored in the context.
+ description: APICall is an HTTP request
+ to the Kubernetes API server, or other
+ JSON web service. The data returned is
+ stored in the context with the name for
+ the context entry.
properties:
jmesPath:
description: JMESPath is an optional
JSON Match Expression that can be
used to transform the JSON response
- returned from the API server. For
- example a JMESPath of "items | length(@)"
+ returned from the server. For example
+ a JMESPath of "items | length(@)"
applied to the API server response
- to the URLPath "/apis/apps/v1/deployments"
+ for the URLPath "/apis/apps/v1/deployments"
will return the total count of deployments
across all namespaces.
type: string
+ service:
+ description: Service is an API call
+ to a JSON web service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded
+ CA bundle which will be used to
+ validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the
+ POST data sent to the server.
+ items:
+ description: RequestData contains
+ the HTTP POST data
+ properties:
+ key:
+ description: Key is a unique
+ identifier for the data
+ value
+ type: string
+ value:
+ description: Value is the
+ data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: Method is the HTTP
+ request type (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web
+ service URL. The typical format
+ is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
urlPath:
description: URLPath is the URL path
to be used in the HTTP GET request
@@ -27171,8 +28241,6 @@ spec:
The format required is the same format
used by the `kubectl get --raw` command.
type: string
- required:
- - urlPath
type: object
configMap:
description: ConfigMap is the ConfigMap
@@ -30970,6 +32038,15 @@ spec:
volumeMounts:
- mountPath: /.sigstore
name: sigstore
+ - mountPath: /var/run/secrets/tokens
+ name: api-token
volumes:
- name: sigstore
emptyDir: {}
+ - name: api-token
+ projected:
+ sources:
+ - serviceAccountToken:
+ path: api-token
+ expirationSeconds: 600
+ audience: kyverno-extension
diff --git a/config/install_debug.yaml b/config/install_debug.yaml
new file mode 100644
index 0000000000..61c0335e4c
--- /dev/null
+++ b/config/install_debug.yaml
@@ -0,0 +1,31559 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ labels:
+ app: kyverno
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: kyverno
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: admissionreports.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: AdmissionReport
+ listKind: AdmissionReportList
+ plural: admissionreports
+ shortNames:
+ - admr
+ singular: admissionreport
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.ownerReferences[0].apiVersion
+ name: ApiVersion
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].kind
+ name: Kind
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].name
+ name: Subject
+ priority: 1
+ type: string
+ - jsonPath: .spec.summary.pass
+ name: Pass
+ type: integer
+ - jsonPath: .spec.summary.fail
+ name: Fail
+ type: integer
+ - jsonPath: .spec.summary.warn
+ name: Warn
+ type: integer
+ - jsonPath: .spec.summary.error
+ name: Error
+ type: integer
+ - jsonPath: .spec.summary.skip
+ name: Skip
+ type: integer
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .metadata.labels['audit\.kyverno\.io/resource\.hash']
+ name: Hash
+ priority: 1
+ type: string
+ - jsonPath: .metadata.labels['audit\.kyverno\.io/report\.aggregate']
+ name: AGGREGATE
+ priority: 1
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: AdmissionReport is the Schema for the AdmissionReports API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ owner:
+ description: Owner is a reference to the report owner (e.g. a Deployment,
+ Namespace, or Node)
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ blockOwnerDeletion:
+ description: If true, AND if the owner has the "foregroundDeletion"
+ finalizer, then the owner cannot be deleted from the key-value
+ store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
+ for how the garbage collector interacts with this field and
+ enforces the foreground deletion. Defaults to false. To set
+ this field, a user needs "delete" permission of the owner, otherwise
+ 422 (Unprocessable Entity) will be returned.
+ type: boolean
+ controller:
+ description: If true, this reference points to the managing controller.
+ type: boolean
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
+ type: string
+ required:
+ - apiVersion
+ - kind
+ - name
+ - uid
+ type: object
+ x-kubernetes-map-type: atomic
+ results:
+ description: PolicyReportResult provides result details
+ items:
+ description: PolicyReportResult provides the result for an individual
+ policy
+ properties:
+ category:
+ description: Category indicates policy category
+ type: string
+ message:
+ description: Description is a short user friendly message for
+ the policy rule
+ type: string
+ policy:
+ description: Policy is the name or identifier of the policy
+ type: string
+ properties:
+ additionalProperties:
+ type: string
+ description: Properties provides additional information for
+ the policy rule
+ type: object
+ resourceSelector:
+ description: SubjectSelector is an optional label selector for
+ checked Kubernetes resources. For example, a policy result
+ may apply to all pods that match a label. Either a Subject
+ or a SubjectSelector can be specified. If neither are provided,
+ the result is assumed to be for the policy report scope.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a selector
+ that contains values, a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are In, NotIn,
+ Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string values.
+ If the operator is In or NotIn, the values array
+ must be non-empty. If the operator is Exists or
+ DoesNotExist, the values array must be empty. This
+ array is replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ resources:
+ description: Subjects is an optional reference to the checked
+ Kubernetes resources
+ items:
+ description: "ObjectReference contains enough information
+ to let you inspect or modify the referred object. --- New
+ uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored fields.
+ \ It includes many fields which are not generally honored.
+ \ For instance, ResourceVersion and FieldPath are both very
+ rarely valid in actual usage. 2. Invalid usage help. It
+ is impossible to add specific help for individual usage.
+ \ In most embedded usages, there are particular restrictions
+ like, \"must refer only to types A and B\" or \"UID not
+ honored\" or \"name must be restricted\". Those cannot be
+ well described when embedded. 3. Inconsistent validation.
+ \ Because the usages are different, the validation rules
+ are different by usage, which makes it hard for users to
+ predict what will happen. 4. The fields are both imprecise
+ and overly precise. Kind is not a precise mapping to a
+ URL. This can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version of the actual
+ struct is irrelevant. 5. We cannot easily change it. Because
+ this type is embedded in many locations, updates to this
+ type will affect numerous schemas. Don't make new APIs
+ embed an underspecified API type they do not control. \n
+ Instead of using this type, create a locally provided and
+ used type that is well-focused on your reference. For example,
+ ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ ."
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this
+ pod). This syntax is chosen only to have some well-defined
+ way of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ result:
+ description: Result indicates the outcome of the policy rule
+ execution
+ enum:
+ - pass
+ - fail
+ - warn
+ - error
+ - skip
+ type: string
+ rule:
+ description: Rule is the name or identifier of the rule within
+ the policy
+ type: string
+ scored:
+ description: Scored indicates if this result is scored
+ type: boolean
+ severity:
+ description: Severity indicates policy check result criticality
+ enum:
+ - critical
+ - high
+ - low
+ - medium
+ - info
+ type: string
+ source:
+ description: Source is an identifier for the policy engine that
+ manages this report
+ type: string
+ timestamp:
+ description: Timestamp indicates the time the result was found
+ properties:
+ nanos:
+ description: Non-negative fractions of a second at nanosecond
+ resolution. Negative second values with fractions must
+ still have non-negative nanos values that count forward
+ in time. Must be from 0 to 999,999,999 inclusive. This
+ field may be limited in precision depending on context.
+ format: int32
+ type: integer
+ seconds:
+ description: Represents seconds of UTC time since Unix epoch
+ 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z
+ to 9999-12-31T23:59:59Z inclusive.
+ format: int64
+ type: integer
+ required:
+ - nanos
+ - seconds
+ type: object
+ required:
+ - policy
+ type: object
+ type: array
+ summary:
+ description: PolicyReportSummary provides a summary of results
+ properties:
+ error:
+ description: Error provides the count of policies that could not
+ be evaluated
+ type: integer
+ fail:
+ description: Fail provides the count of policies whose requirements
+ were not met
+ type: integer
+ pass:
+ description: Pass provides the count of policies whose requirements
+ were met
+ type: integer
+ skip:
+ description: Skip indicates the count of policies that were not
+ selected for evaluation
+ type: integer
+ warn:
+ description: Warn provides the count of non-scored policies whose
+ requirements were not met
+ type: integer
+ type: object
+ required:
+ - owner
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: backgroundscanreports.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: BackgroundScanReport
+ listKind: BackgroundScanReportList
+ plural: backgroundscanreports
+ shortNames:
+ - bgscanr
+ singular: backgroundscanreport
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.ownerReferences[0].apiVersion
+ name: ApiVersion
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].kind
+ name: Kind
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].name
+ name: Subject
+ priority: 1
+ type: string
+ - jsonPath: .spec.summary.pass
+ name: Pass
+ type: integer
+ - jsonPath: .spec.summary.fail
+ name: Fail
+ type: integer
+ - jsonPath: .spec.summary.warn
+ name: Warn
+ type: integer
+ - jsonPath: .spec.summary.error
+ name: Error
+ type: integer
+ - jsonPath: .spec.summary.skip
+ name: Skip
+ type: integer
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .metadata.labels['audit\.kyverno\.io/resource\.hash']
+ name: Hash
+ priority: 1
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: BackgroundScanReport is the Schema for the BackgroundScanReports
+ API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ results:
+ description: PolicyReportResult provides result details
+ items:
+ description: PolicyReportResult provides the result for an individual
+ policy
+ properties:
+ category:
+ description: Category indicates policy category
+ type: string
+ message:
+ description: Description is a short user friendly message for
+ the policy rule
+ type: string
+ policy:
+ description: Policy is the name or identifier of the policy
+ type: string
+ properties:
+ additionalProperties:
+ type: string
+ description: Properties provides additional information for
+ the policy rule
+ type: object
+ resourceSelector:
+ description: SubjectSelector is an optional label selector for
+ checked Kubernetes resources. For example, a policy result
+ may apply to all pods that match a label. Either a Subject
+ or a SubjectSelector can be specified. If neither are provided,
+ the result is assumed to be for the policy report scope.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a selector
+ that contains values, a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are In, NotIn,
+ Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string values.
+ If the operator is In or NotIn, the values array
+ must be non-empty. If the operator is Exists or
+ DoesNotExist, the values array must be empty. This
+ array is replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ resources:
+ description: Subjects is an optional reference to the checked
+ Kubernetes resources
+ items:
+ description: "ObjectReference contains enough information
+ to let you inspect or modify the referred object. --- New
+ uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored fields.
+ \ It includes many fields which are not generally honored.
+ \ For instance, ResourceVersion and FieldPath are both very
+ rarely valid in actual usage. 2. Invalid usage help. It
+ is impossible to add specific help for individual usage.
+ \ In most embedded usages, there are particular restrictions
+ like, \"must refer only to types A and B\" or \"UID not
+ honored\" or \"name must be restricted\". Those cannot be
+ well described when embedded. 3. Inconsistent validation.
+ \ Because the usages are different, the validation rules
+ are different by usage, which makes it hard for users to
+ predict what will happen. 4. The fields are both imprecise
+ and overly precise. Kind is not a precise mapping to a
+ URL. This can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version of the actual
+ struct is irrelevant. 5. We cannot easily change it. Because
+ this type is embedded in many locations, updates to this
+ type will affect numerous schemas. Don't make new APIs
+ embed an underspecified API type they do not control. \n
+ Instead of using this type, create a locally provided and
+ used type that is well-focused on your reference. For example,
+ ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ ."
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this
+ pod). This syntax is chosen only to have some well-defined
+ way of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ result:
+ description: Result indicates the outcome of the policy rule
+ execution
+ enum:
+ - pass
+ - fail
+ - warn
+ - error
+ - skip
+ type: string
+ rule:
+ description: Rule is the name or identifier of the rule within
+ the policy
+ type: string
+ scored:
+ description: Scored indicates if this result is scored
+ type: boolean
+ severity:
+ description: Severity indicates policy check result criticality
+ enum:
+ - critical
+ - high
+ - low
+ - medium
+ - info
+ type: string
+ source:
+ description: Source is an identifier for the policy engine that
+ manages this report
+ type: string
+ timestamp:
+ description: Timestamp indicates the time the result was found
+ properties:
+ nanos:
+ description: Non-negative fractions of a second at nanosecond
+ resolution. Negative second values with fractions must
+ still have non-negative nanos values that count forward
+ in time. Must be from 0 to 999,999,999 inclusive. This
+ field may be limited in precision depending on context.
+ format: int32
+ type: integer
+ seconds:
+ description: Represents seconds of UTC time since Unix epoch
+ 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z
+ to 9999-12-31T23:59:59Z inclusive.
+ format: int64
+ type: integer
+ required:
+ - nanos
+ - seconds
+ type: object
+ required:
+ - policy
+ type: object
+ type: array
+ summary:
+ description: PolicyReportSummary provides a summary of results
+ properties:
+ error:
+ description: Error provides the count of policies that could not
+ be evaluated
+ type: integer
+ fail:
+ description: Fail provides the count of policies whose requirements
+ were not met
+ type: integer
+ pass:
+ description: Pass provides the count of policies whose requirements
+ were met
+ type: integer
+ skip:
+ description: Skip indicates the count of policies that were not
+ selected for evaluation
+ type: integer
+ warn:
+ description: Warn provides the count of non-scored policies whose
+ requirements were not met
+ type: integer
+ type: object
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: cleanuppolicies.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: CleanupPolicy
+ listKind: CleanupPolicyList
+ plural: cleanuppolicies
+ shortNames:
+ - cleanpol
+ singular: cleanuppolicy
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.schedule
+ name: Schedule
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v2alpha1
+ schema:
+ openAPIV3Schema:
+ description: CleanupPolicy defines a rule for resource cleanup.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec declares policy behaviors.
+ properties:
+ conditions:
+ description: Conditions defines conditions used to select resources
+ which user needs to delete
+ properties:
+ all:
+ description: AllConditions enable variable-based conditional rule
+ execution. This is useful for finer control of when an rule
+ is applied. A condition can reference object data using JMESPath
+ notation. Here, all of the conditions need to pass
+ items:
+ properties:
+ key:
+ description: Key is the context entry (using JMESPath) for
+ conditional rule evaluation.
+ x-kubernetes-preserve-unknown-fields: true
+ operator:
+ description: 'Operator is the conditional operation to perform.
+ Valid operators are: Equals, NotEquals, In, AnyIn, AllIn,
+ NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals, GreaterThan,
+ LessThanOrEquals, LessThan, DurationGreaterThanOrEquals,
+ DurationGreaterThan, DurationLessThanOrEquals, DurationLessThan'
+ enum:
+ - Equals
+ - NotEquals
+ - AnyIn
+ - AllIn
+ - AnyNotIn
+ - AllNotIn
+ - GreaterThanOrEquals
+ - GreaterThan
+ - LessThanOrEquals
+ - LessThan
+ - DurationGreaterThanOrEquals
+ - DurationGreaterThan
+ - DurationLessThanOrEquals
+ - DurationLessThan
+ type: string
+ value:
+ description: Value is the conditional value, or set of values.
+ The values can be fixed set or can be variables declared
+ using JMESPath.
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ type: array
+ any:
+ description: AnyConditions enable variable-based conditional rule
+ execution. This is useful for finer control of when an rule
+ is applied. A condition can reference object data using JMESPath
+ notation. Here, at least one of the conditions need to pass
+ items:
+ properties:
+ key:
+ description: Key is the context entry (using JMESPath) for
+ conditional rule evaluation.
+ x-kubernetes-preserve-unknown-fields: true
+ operator:
+ description: 'Operator is the conditional operation to perform.
+ Valid operators are: Equals, NotEquals, In, AnyIn, AllIn,
+ NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals, GreaterThan,
+ LessThanOrEquals, LessThan, DurationGreaterThanOrEquals,
+ DurationGreaterThan, DurationLessThanOrEquals, DurationLessThan'
+ enum:
+ - Equals
+ - NotEquals
+ - AnyIn
+ - AllIn
+ - AnyNotIn
+ - AllNotIn
+ - GreaterThanOrEquals
+ - GreaterThan
+ - LessThanOrEquals
+ - LessThan
+ - DurationGreaterThanOrEquals
+ - DurationGreaterThan
+ - DurationLessThanOrEquals
+ - DurationLessThan
+ type: string
+ value:
+ description: Value is the conditional value, or set of values.
+ The values can be fixed set or can be variables declared
+ using JMESPath.
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ type: array
+ type: object
+ exclude:
+ description: ExcludeResources defines when cleanuppolicy should not
+ be applied. The exclude criteria can include resource information
+ (e.g. kind, name, namespace, labels) and admission review request
+ information like the name or role.
+ properties:
+ all:
+ description: All allows specifying resources which will be ANDed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ any:
+ description: Any allows specifying resources which will be ORed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ type: object
+ match:
+ description: MatchResources defines when cleanuppolicy should be applied.
+ The match criteria can include resource information (e.g. kind,
+ name, namespace, labels) and admission review request information
+ like the user name or role. At least one kind is required.
+ properties:
+ all:
+ description: All allows specifying resources which will be ANDed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ any:
+ description: Any allows specifying resources which will be ORed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ type: object
+ schedule:
+ description: The schedule in Cron format
+ type: string
+ required:
+ - schedule
+ type: object
+ status:
+ description: Status contains policy runtime data.
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ \n type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are: \"Available\",
+ \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
+ // +listType=map // +listMapKey=type Conditions []metav1.Condition
+ `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
+ protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: clusteradmissionreports.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: ClusterAdmissionReport
+ listKind: ClusterAdmissionReportList
+ plural: clusteradmissionreports
+ shortNames:
+ - cadmr
+ singular: clusteradmissionreport
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.ownerReferences[0].apiVersion
+ name: ApiVersion
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].kind
+ name: Kind
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].name
+ name: Subject
+ priority: 1
+ type: string
+ - jsonPath: .spec.summary.pass
+ name: Pass
+ type: integer
+ - jsonPath: .spec.summary.fail
+ name: Fail
+ type: integer
+ - jsonPath: .spec.summary.warn
+ name: Warn
+ type: integer
+ - jsonPath: .spec.summary.error
+ name: Error
+ type: integer
+ - jsonPath: .spec.summary.skip
+ name: Skip
+ type: integer
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .metadata.labels['audit\.kyverno\.io/resource\.hash']
+ name: Hash
+ priority: 1
+ type: string
+ - jsonPath: .metadata.labels['audit\.kyverno\.io/report\.aggregate']
+ name: AGGREGATE
+ priority: 1
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: ClusterAdmissionReport is the Schema for the ClusterAdmissionReports
+ API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ owner:
+ description: Owner is a reference to the report owner (e.g. a Deployment,
+ Namespace, or Node)
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ blockOwnerDeletion:
+ description: If true, AND if the owner has the "foregroundDeletion"
+ finalizer, then the owner cannot be deleted from the key-value
+ store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
+ for how the garbage collector interacts with this field and
+ enforces the foreground deletion. Defaults to false. To set
+ this field, a user needs "delete" permission of the owner, otherwise
+ 422 (Unprocessable Entity) will be returned.
+ type: boolean
+ controller:
+ description: If true, this reference points to the managing controller.
+ type: boolean
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
+ type: string
+ required:
+ - apiVersion
+ - kind
+ - name
+ - uid
+ type: object
+ x-kubernetes-map-type: atomic
+ results:
+ description: PolicyReportResult provides result details
+ items:
+ description: PolicyReportResult provides the result for an individual
+ policy
+ properties:
+ category:
+ description: Category indicates policy category
+ type: string
+ message:
+ description: Description is a short user friendly message for
+ the policy rule
+ type: string
+ policy:
+ description: Policy is the name or identifier of the policy
+ type: string
+ properties:
+ additionalProperties:
+ type: string
+ description: Properties provides additional information for
+ the policy rule
+ type: object
+ resourceSelector:
+ description: SubjectSelector is an optional label selector for
+ checked Kubernetes resources. For example, a policy result
+ may apply to all pods that match a label. Either a Subject
+ or a SubjectSelector can be specified. If neither are provided,
+ the result is assumed to be for the policy report scope.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a selector
+ that contains values, a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are In, NotIn,
+ Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string values.
+ If the operator is In or NotIn, the values array
+ must be non-empty. If the operator is Exists or
+ DoesNotExist, the values array must be empty. This
+ array is replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ resources:
+ description: Subjects is an optional reference to the checked
+ Kubernetes resources
+ items:
+ description: "ObjectReference contains enough information
+ to let you inspect or modify the referred object. --- New
+ uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored fields.
+ \ It includes many fields which are not generally honored.
+ \ For instance, ResourceVersion and FieldPath are both very
+ rarely valid in actual usage. 2. Invalid usage help. It
+ is impossible to add specific help for individual usage.
+ \ In most embedded usages, there are particular restrictions
+ like, \"must refer only to types A and B\" or \"UID not
+ honored\" or \"name must be restricted\". Those cannot be
+ well described when embedded. 3. Inconsistent validation.
+ \ Because the usages are different, the validation rules
+ are different by usage, which makes it hard for users to
+ predict what will happen. 4. The fields are both imprecise
+ and overly precise. Kind is not a precise mapping to a
+ URL. This can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version of the actual
+ struct is irrelevant. 5. We cannot easily change it. Because
+ this type is embedded in many locations, updates to this
+ type will affect numerous schemas. Don't make new APIs
+ embed an underspecified API type they do not control. \n
+ Instead of using this type, create a locally provided and
+ used type that is well-focused on your reference. For example,
+ ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ ."
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this
+ pod). This syntax is chosen only to have some well-defined
+ way of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ result:
+ description: Result indicates the outcome of the policy rule
+ execution
+ enum:
+ - pass
+ - fail
+ - warn
+ - error
+ - skip
+ type: string
+ rule:
+ description: Rule is the name or identifier of the rule within
+ the policy
+ type: string
+ scored:
+ description: Scored indicates if this result is scored
+ type: boolean
+ severity:
+ description: Severity indicates policy check result criticality
+ enum:
+ - critical
+ - high
+ - low
+ - medium
+ - info
+ type: string
+ source:
+ description: Source is an identifier for the policy engine that
+ manages this report
+ type: string
+ timestamp:
+ description: Timestamp indicates the time the result was found
+ properties:
+ nanos:
+ description: Non-negative fractions of a second at nanosecond
+ resolution. Negative second values with fractions must
+ still have non-negative nanos values that count forward
+ in time. Must be from 0 to 999,999,999 inclusive. This
+ field may be limited in precision depending on context.
+ format: int32
+ type: integer
+ seconds:
+ description: Represents seconds of UTC time since Unix epoch
+ 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z
+ to 9999-12-31T23:59:59Z inclusive.
+ format: int64
+ type: integer
+ required:
+ - nanos
+ - seconds
+ type: object
+ required:
+ - policy
+ type: object
+ type: array
+ summary:
+ description: PolicyReportSummary provides a summary of results
+ properties:
+ error:
+ description: Error provides the count of policies that could not
+ be evaluated
+ type: integer
+ fail:
+ description: Fail provides the count of policies whose requirements
+ were not met
+ type: integer
+ pass:
+ description: Pass provides the count of policies whose requirements
+ were met
+ type: integer
+ skip:
+ description: Skip indicates the count of policies that were not
+ selected for evaluation
+ type: integer
+ warn:
+ description: Warn provides the count of non-scored policies whose
+ requirements were not met
+ type: integer
+ type: object
+ required:
+ - owner
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: clusterbackgroundscanreports.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: ClusterBackgroundScanReport
+ listKind: ClusterBackgroundScanReportList
+ plural: clusterbackgroundscanreports
+ shortNames:
+ - cbgscanr
+ singular: clusterbackgroundscanreport
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.ownerReferences[0].apiVersion
+ name: ApiVersion
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].kind
+ name: Kind
+ priority: 1
+ type: string
+ - jsonPath: .metadata.ownerReferences[0].name
+ name: Subject
+ priority: 1
+ type: string
+ - jsonPath: .spec.summary.pass
+ name: Pass
+ type: integer
+ - jsonPath: .spec.summary.fail
+ name: Fail
+ type: integer
+ - jsonPath: .spec.summary.warn
+ name: Warn
+ type: integer
+ - jsonPath: .spec.summary.error
+ name: Error
+ type: integer
+ - jsonPath: .spec.summary.skip
+ name: Skip
+ type: integer
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .metadata.labels['audit\.kyverno\.io/resource\.hash']
+ name: Hash
+ priority: 1
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: ClusterBackgroundScanReport is the Schema for the ClusterBackgroundScanReports
+ API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ results:
+ description: PolicyReportResult provides result details
+ items:
+ description: PolicyReportResult provides the result for an individual
+ policy
+ properties:
+ category:
+ description: Category indicates policy category
+ type: string
+ message:
+ description: Description is a short user friendly message for
+ the policy rule
+ type: string
+ policy:
+ description: Policy is the name or identifier of the policy
+ type: string
+ properties:
+ additionalProperties:
+ type: string
+ description: Properties provides additional information for
+ the policy rule
+ type: object
+ resourceSelector:
+ description: SubjectSelector is an optional label selector for
+ checked Kubernetes resources. For example, a policy result
+ may apply to all pods that match a label. Either a Subject
+ or a SubjectSelector can be specified. If neither are provided,
+ the result is assumed to be for the policy report scope.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label selector
+ requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a selector
+ that contains values, a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: key is the label key that the selector
+ applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are In, NotIn,
+ Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string values.
+ If the operator is In or NotIn, the values array
+ must be non-empty. If the operator is Exists or
+ DoesNotExist, the values array must be empty. This
+ array is replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value} pairs.
+ A single {key,value} in the matchLabels map is equivalent
+ to an element of matchExpressions, whose key field is
+ "key", the operator is "In", and the values array contains
+ only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ resources:
+ description: Subjects is an optional reference to the checked
+ Kubernetes resources
+ items:
+ description: "ObjectReference contains enough information
+ to let you inspect or modify the referred object. --- New
+ uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored fields.
+ \ It includes many fields which are not generally honored.
+ \ For instance, ResourceVersion and FieldPath are both very
+ rarely valid in actual usage. 2. Invalid usage help. It
+ is impossible to add specific help for individual usage.
+ \ In most embedded usages, there are particular restrictions
+ like, \"must refer only to types A and B\" or \"UID not
+ honored\" or \"name must be restricted\". Those cannot be
+ well described when embedded. 3. Inconsistent validation.
+ \ Because the usages are different, the validation rules
+ are different by usage, which makes it hard for users to
+ predict what will happen. 4. The fields are both imprecise
+ and overly precise. Kind is not a precise mapping to a
+ URL. This can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version of the actual
+ struct is irrelevant. 5. We cannot easily change it. Because
+ this type is embedded in many locations, updates to this
+ type will affect numerous schemas. Don't make new APIs
+ embed an underspecified API type they do not control. \n
+ Instead of using this type, create a locally provided and
+ used type that is well-focused on your reference. For example,
+ ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ ."
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this
+ pod). This syntax is chosen only to have some well-defined
+ way of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ result:
+ description: Result indicates the outcome of the policy rule
+ execution
+ enum:
+ - pass
+ - fail
+ - warn
+ - error
+ - skip
+ type: string
+ rule:
+ description: Rule is the name or identifier of the rule within
+ the policy
+ type: string
+ scored:
+ description: Scored indicates if this result is scored
+ type: boolean
+ severity:
+ description: Severity indicates policy check result criticality
+ enum:
+ - critical
+ - high
+ - low
+ - medium
+ - info
+ type: string
+ source:
+ description: Source is an identifier for the policy engine that
+ manages this report
+ type: string
+ timestamp:
+ description: Timestamp indicates the time the result was found
+ properties:
+ nanos:
+ description: Non-negative fractions of a second at nanosecond
+ resolution. Negative second values with fractions must
+ still have non-negative nanos values that count forward
+ in time. Must be from 0 to 999,999,999 inclusive. This
+ field may be limited in precision depending on context.
+ format: int32
+ type: integer
+ seconds:
+ description: Represents seconds of UTC time since Unix epoch
+ 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z
+ to 9999-12-31T23:59:59Z inclusive.
+ format: int64
+ type: integer
+ required:
+ - nanos
+ - seconds
+ type: object
+ required:
+ - policy
+ type: object
+ type: array
+ summary:
+ description: PolicyReportSummary provides a summary of results
+ properties:
+ error:
+ description: Error provides the count of policies that could not
+ be evaluated
+ type: integer
+ fail:
+ description: Fail provides the count of policies whose requirements
+ were not met
+ type: integer
+ pass:
+ description: Pass provides the count of policies whose requirements
+ were met
+ type: integer
+ skip:
+ description: Skip indicates the count of policies that were not
+ selected for evaluation
+ type: integer
+ warn:
+ description: Warn provides the count of non-scored policies whose
+ requirements were not met
+ type: integer
+ type: object
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: clustercleanuppolicies.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: ClusterCleanupPolicy
+ listKind: ClusterCleanupPolicyList
+ plural: clustercleanuppolicies
+ shortNames:
+ - ccleanpol
+ singular: clustercleanuppolicy
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.schedule
+ name: Schedule
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ name: v2alpha1
+ schema:
+ openAPIV3Schema:
+ description: ClusterCleanupPolicy defines rule for resource cleanup.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec declares policy behaviors.
+ properties:
+ conditions:
+ description: Conditions defines conditions used to select resources
+ which user needs to delete
+ properties:
+ all:
+ description: AllConditions enable variable-based conditional rule
+ execution. This is useful for finer control of when an rule
+ is applied. A condition can reference object data using JMESPath
+ notation. Here, all of the conditions need to pass
+ items:
+ properties:
+ key:
+ description: Key is the context entry (using JMESPath) for
+ conditional rule evaluation.
+ x-kubernetes-preserve-unknown-fields: true
+ operator:
+ description: 'Operator is the conditional operation to perform.
+ Valid operators are: Equals, NotEquals, In, AnyIn, AllIn,
+ NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals, GreaterThan,
+ LessThanOrEquals, LessThan, DurationGreaterThanOrEquals,
+ DurationGreaterThan, DurationLessThanOrEquals, DurationLessThan'
+ enum:
+ - Equals
+ - NotEquals
+ - AnyIn
+ - AllIn
+ - AnyNotIn
+ - AllNotIn
+ - GreaterThanOrEquals
+ - GreaterThan
+ - LessThanOrEquals
+ - LessThan
+ - DurationGreaterThanOrEquals
+ - DurationGreaterThan
+ - DurationLessThanOrEquals
+ - DurationLessThan
+ type: string
+ value:
+ description: Value is the conditional value, or set of values.
+ The values can be fixed set or can be variables declared
+ using JMESPath.
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ type: array
+ any:
+ description: AnyConditions enable variable-based conditional rule
+ execution. This is useful for finer control of when an rule
+ is applied. A condition can reference object data using JMESPath
+ notation. Here, at least one of the conditions need to pass
+ items:
+ properties:
+ key:
+ description: Key is the context entry (using JMESPath) for
+ conditional rule evaluation.
+ x-kubernetes-preserve-unknown-fields: true
+ operator:
+ description: 'Operator is the conditional operation to perform.
+ Valid operators are: Equals, NotEquals, In, AnyIn, AllIn,
+ NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals, GreaterThan,
+ LessThanOrEquals, LessThan, DurationGreaterThanOrEquals,
+ DurationGreaterThan, DurationLessThanOrEquals, DurationLessThan'
+ enum:
+ - Equals
+ - NotEquals
+ - AnyIn
+ - AllIn
+ - AnyNotIn
+ - AllNotIn
+ - GreaterThanOrEquals
+ - GreaterThan
+ - LessThanOrEquals
+ - LessThan
+ - DurationGreaterThanOrEquals
+ - DurationGreaterThan
+ - DurationLessThanOrEquals
+ - DurationLessThan
+ type: string
+ value:
+ description: Value is the conditional value, or set of values.
+ The values can be fixed set or can be variables declared
+ using JMESPath.
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ type: array
+ type: object
+ exclude:
+ description: ExcludeResources defines when cleanuppolicy should not
+ be applied. The exclude criteria can include resource information
+ (e.g. kind, name, namespace, labels) and admission review request
+ information like the name or role.
+ properties:
+ all:
+ description: All allows specifying resources which will be ANDed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ any:
+ description: Any allows specifying resources which will be ORed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ type: object
+ match:
+ description: MatchResources defines when cleanuppolicy should be applied.
+ The match criteria can include resource information (e.g. kind,
+ name, namespace, labels) and admission review request information
+ like the user name or role. At least one kind is required.
+ properties:
+ all:
+ description: All allows specifying resources which will be ANDed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ any:
+ description: Any allows specifying resources which will be ORed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR" between
+ resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ type: object
+ schedule:
+ description: The schedule in Cron format
+ type: string
+ required:
+ - schedule
+ type: object
+ status:
+ description: Status contains policy runtime data.
+ properties:
+ conditions:
+ items:
+ description: "Condition contains details for one aspect of the current
+ state of this API Resource. --- This struct is intended for direct
+ use as an array at the field path .status.conditions. For example,
+ \n type FooStatus struct{ // Represents the observations of a
+ foo's current state. // Known .status.conditions.type are: \"Available\",
+ \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
+ // +listType=map // +listMapKey=type Conditions []metav1.Condition
+ `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
+ protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
+ properties:
+ lastTransitionTime:
+ description: lastTransitionTime is the last time the condition
+ transitioned from one status to another. This should be when
+ the underlying condition changed. If that is not known, then
+ using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: message is a human readable message indicating
+ details about the transition. This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ that the condition was set based upon. For instance, if .metadata.generation
+ is currently 12, but the .status.conditions[x].observedGeneration
+ is 9, the condition is out of date with respect to the current
+ state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: reason contains a programmatic identifier indicating
+ the reason for the condition's last transition. Producers
+ of specific condition types may define expected values and
+ meanings for this field, and whether the values are considered
+ a guaranteed API. The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ --- Many .condition.type values are consistent across resources
+ like Available, but because arbitrary conditions can be useful
+ (see .node.status.conditions), the ability to deconflict is
+ important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.10.0
+ creationTimestamp: null
+ labels:
+ app.kubernetes.io/component: kyverno
+ app.kubernetes.io/instance: kyverno
+ app.kubernetes.io/name: kyverno
+ app.kubernetes.io/part-of: kyverno
+ name: clusterpolicies.kyverno.io
+spec:
+ group: kyverno.io
+ names:
+ categories:
+ - kyverno
+ kind: ClusterPolicy
+ listKind: ClusterPolicyList
+ plural: clusterpolicies
+ shortNames:
+ - cpol
+ singular: clusterpolicy
+ scope: Cluster
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.background
+ name: Background
+ type: boolean
+ - jsonPath: .spec.validationFailureAction
+ name: Validate Action
+ type: string
+ - jsonPath: .spec.failurePolicy
+ name: Failure Policy
+ priority: 1
+ type: string
+ - jsonPath: .status.ready
+ name: Ready
+ type: boolean
+ - jsonPath: .metadata.creationTimestamp
+ name: Age
+ type: date
+ - jsonPath: .status.rulecount.validate
+ name: Validate
+ priority: 1
+ type: integer
+ - jsonPath: .status.rulecount.mutate
+ name: Mutate
+ priority: 1
+ type: integer
+ - jsonPath: .status.rulecount.generate
+ name: Generate
+ priority: 1
+ type: integer
+ - jsonPath: .status.rulecount.verifyimages
+ name: Verifyimages
+ priority: 1
+ type: integer
+ name: v1
+ schema:
+ openAPIV3Schema:
+ description: ClusterPolicy declares validation, mutation, and generation behaviors
+ for matching resources.
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec declares policy behaviors.
+ properties:
+ applyRules:
+ description: ApplyRules controls how rules in a policy are applied.
+ Rule are processed in the order of declaration. When set to `One`
+ processing stops after a rule has been applied i.e. the rule matches
+ and results in a pass, fail, or error. When set to `All` all rules
+ in the policy are processed. The default is `All`.
+ enum:
+ - All
+ - One
+ type: string
+ background:
+ default: true
+ description: Background controls if rules are applied to existing
+ resources during a background scan. Optional. Default value is "true".
+ The value must be set to "false" if the policy rule uses variables
+ that are only available in the admission review request (e.g. user
+ name).
+ type: boolean
+ failurePolicy:
+ description: FailurePolicy defines how unexpected policy errors and
+ webhook response timeout errors are handled. Rules within the same
+ policy share the same failure behavior. This field should not be
+ accessed directly, instead `GetFailurePolicy()` should be used.
+ Allowed values are Ignore or Fail. Defaults to Fail.
+ enum:
+ - Ignore
+ - Fail
+ type: string
+ generateExistingOnPolicyUpdate:
+ description: GenerateExistingOnPolicyUpdate controls whether to trigger
+ generate rule in existing resources If is set to "true" generate
+ rule will be triggered and applied to existing matched resources.
+ Defaults to "false" if not specified.
+ type: boolean
+ mutateExistingOnPolicyUpdate:
+ description: MutateExistingOnPolicyUpdate controls if a mutateExisting
+ policy is applied on policy events. Default value is "false".
+ type: boolean
+ rules:
+ description: Rules is a list of Rule instances. A Policy contains
+ multiple rules and each rule can validate, mutate, or generate resources.
+ items:
+ description: Rule defines a validation, mutation, or generation
+ control for matching resources. Each rules contains a match declaration
+ to select resources, and an optional exclude declaration to specify
+ which resources to exclude.
+ properties:
+ context:
+ description: Context defines variables and data sources that
+ can be used during rule execution.
+ items:
+ description: ContextEntry adds variables and data sources
+ to a rule Context. Either a ConfigMap reference or a APILookup
+ must be provided.
+ properties:
+ apiCall:
+ description: APICall is an HTTP request to the Kubernetes
+ API server, or other JSON web service. The data returned
+ is stored in the context with the name for the context
+ entry.
+ properties:
+ jmesPath:
+ description: JMESPath is an optional JSON Match Expression
+ that can be used to transform the JSON response
+ returned from the server. For example a JMESPath
+ of "items | length(@)" applied to the API server
+ response for the URLPath "/apis/apps/v1/deployments"
+ will return the total count of deployments across
+ all namespaces.
+ type: string
+ service:
+ description: Service is an API call to a JSON web
+ service
+ properties:
+ caBundle:
+ description: CABundle is a PEM encoded CA bundle
+ which will be used to validate the server certificate.
+ type: string
+ data:
+ description: Data specifies the POST data sent
+ to the server.
+ items:
+ description: RequestData contains the HTTP POST
+ data
+ properties:
+ key:
+ description: Key is a unique identifier
+ for the data value
+ type: string
+ value:
+ description: Value is the data value
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ requestType:
+ default: GET
+ description: RequestType is the HTTP request type
+ (GET or POST).
+ enum:
+ - GET
+ - POST
+ type: string
+ urlPath:
+ description: URL is the JSON web service URL.
+ The typical format is `https://{service}.{namespace}:{port}/{path}`.
+ type: string
+ required:
+ - requestType
+ - urlPath
+ type: object
+ urlPath:
+ description: URLPath is the URL path to be used in
+ the HTTP GET request to the Kubernetes API server
+ (e.g. "/api/v1/namespaces" or "/apis/apps/v1/deployments").
+ The format required is the same format used by the
+ `kubectl get --raw` command.
+ type: string
+ type: object
+ configMap:
+ description: ConfigMap is the ConfigMap reference.
+ properties:
+ name:
+ description: Name is the ConfigMap name.
+ type: string
+ namespace:
+ description: Namespace is the ConfigMap namespace.
+ type: string
+ required:
+ - name
+ type: object
+ imageRegistry:
+ description: ImageRegistry defines requests to an OCI/Docker
+ V2 registry to fetch image details.
+ properties:
+ jmesPath:
+ description: JMESPath is an optional JSON Match Expression
+ that can be used to transform the ImageData struct
+ returned as a result of processing the image reference.
+ type: string
+ reference:
+ description: 'Reference is image reference to a container
+ image in the registry. Example: ghcr.io/kyverno/kyverno:latest'
+ type: string
+ required:
+ - reference
+ type: object
+ name:
+ description: Name is the variable name.
+ type: string
+ variable:
+ description: Variable defines an arbitrary JMESPath context
+ variable that can be defined inline.
+ properties:
+ default:
+ description: Default is an optional arbitrary JSON
+ object that the variable may take if the JMESPath
+ expression evaluates to nil
+ x-kubernetes-preserve-unknown-fields: true
+ jmesPath:
+ description: JMESPath is an optional JMESPath Expression
+ that can be used to transform the variable.
+ type: string
+ value:
+ description: Value is any arbitrary JSON object representable
+ in YAML or JSON form.
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ type: object
+ type: array
+ exclude:
+ description: ExcludeResources defines when this policy rule
+ should not be applied. The exclude criteria can include resource
+ information (e.g. kind, name, namespace, labels) and admission
+ review request information like the name or role.
+ properties:
+ all:
+ description: All allows specifying resources which will
+ be ANDed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR"
+ between resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide
+ role names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information
+ about the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations
+ (key-value pairs of type string). Annotation
+ keys and values support the wildcard characters
+ "*" (matches zero or many characters) and "?"
+ (matches at least one character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource.
+ The name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one
+ character). NOTE: "Name" is being deprecated
+ in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one
+ character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?`
+ (matches one character).Wildcards allows writing
+ label selectors like ["storage.k8s.io/*": "*"].
+ Note that using ["*" : "*"] matches any key
+ and value but does not match an empty label
+ set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of
+ label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: A label selector requirement
+ is a selector that contains values, a
+ key, and an operator that relates the
+ key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's
+ relationship to a set of values. Valid
+ operators are In, NotIn, Exists and
+ DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty.
+ If the operator is Exists or DoesNotExist,
+ the values array must be empty. This
+ array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is
+ "In", and the values array contains only
+ "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces
+ names. Each name supports wildcard characters
+ "*" (matches zero or many characters) and "?"
+ (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label
+ keys and values in `matchLabels` support the
+ wildcard characters `*` (matches zero or many
+ characters) and `?` (matches one character).
+ Wildcards allows writing label selectors like
+ ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not
+ match an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of
+ label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: A label selector requirement
+ is a selector that contains values, a
+ key, and an operator that relates the
+ key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's
+ relationship to a set of values. Valid
+ operators are In, NotIn, Exists and
+ DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty.
+ If the operator is Exists or DoesNotExist,
+ the values array must be empty. This
+ array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is
+ "In", and the values array contains only
+ "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role
+ names for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names
+ like users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the
+ object or user identities a role binding applies
+ to. This can either hold a direct API object
+ reference, or a value for non-objects such as
+ user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of
+ the referenced subject. Defaults to "" for
+ ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io"
+ for User and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced.
+ Values defined by this API group are "User",
+ "Group", and "ServiceAccount". If the Authorizer
+ does not recognized the kind value, the Authorizer
+ should report an error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as
+ "User" or "Group", and this value is not empty
+ the Authorizer should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ any:
+ description: Any allows specifying resources which will
+ be ORed
+ items:
+ description: ResourceFilter allow users to "AND" or "OR"
+ between resources
+ properties:
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide
+ role names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information
+ about the resource being created or modified.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations
+ (key-value pairs of type string). Annotation
+ keys and values support the wildcard characters
+ "*" (matches zero or many characters) and "?"
+ (matches at least one character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource.
+ The name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one
+ character). NOTE: "Name" is being deprecated
+ in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one
+ character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?`
+ (matches one character).Wildcards allows writing
+ label selectors like ["storage.k8s.io/*": "*"].
+ Note that using ["*" : "*"] matches any key
+ and value but does not match an empty label
+ set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of
+ label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: A label selector requirement
+ is a selector that contains values, a
+ key, and an operator that relates the
+ key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's
+ relationship to a set of values. Valid
+ operators are In, NotIn, Exists and
+ DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty.
+ If the operator is Exists or DoesNotExist,
+ the values array must be empty. This
+ array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is
+ "In", and the values array contains only
+ "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces
+ names. Each name supports wildcard characters
+ "*" (matches zero or many characters) and "?"
+ (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label
+ keys and values in `matchLabels` support the
+ wildcard characters `*` (matches zero or many
+ characters) and `?` (matches one character).
+ Wildcards allows writing label selectors like
+ ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not
+ match an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of
+ label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: A label selector requirement
+ is a selector that contains values, a
+ key, and an operator that relates the
+ key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's
+ relationship to a set of values. Valid
+ operators are In, NotIn, Exists and
+ DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty.
+ If the operator is Exists or DoesNotExist,
+ the values array must be empty. This
+ array is replaced during a strategic
+ merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is
+ "In", and the values array contains only
+ "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role
+ names for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names
+ like users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the
+ object or user identities a role binding applies
+ to. This can either hold a direct API object
+ reference, or a value for non-objects such as
+ user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of
+ the referenced subject. Defaults to "" for
+ ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io"
+ for User and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced.
+ Values defined by this API group are "User",
+ "Group", and "ServiceAccount". If the Authorizer
+ does not recognized the kind value, the Authorizer
+ should report an error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as
+ "User" or "Group", and this value is not empty
+ the Authorizer should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ type: array
+ clusterRoles:
+ description: ClusterRoles is the list of cluster-wide role
+ names for the user.
+ items:
+ type: string
+ type: array
+ resources:
+ description: ResourceDescription contains information about
+ the resource being created or modified. Requires at least
+ one tag to be specified when under MatchResources. Specifying
+ ResourceDescription directly under match is being deprecated.
+ Please specify under "any" or "all" instead.
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations is a map of annotations (key-value
+ pairs of type string). Annotation keys and values
+ support the wildcard characters "*" (matches zero
+ or many characters) and "?" (matches at least one
+ character).
+ type: object
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ name:
+ description: 'Name is the name of the resource. The
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ NOTE: "Name" is being deprecated in favor of "Names".'
+ type: string
+ names:
+ description: Names are the names of the resources. Each
+ name supports wildcard characters "*" (matches zero
+ or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ namespaceSelector:
+ description: 'NamespaceSelector is a label selector
+ for the resource namespace. Label keys and values
+ in `matchLabels` support the wildcard characters `*`
+ (matches zero or many characters) and `?` (matches
+ one character).Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ namespaces:
+ description: Namespaces is a list of namespaces names.
+ Each name supports wildcard characters "*" (matches
+ zero or many characters) and "?" (at least one character).
+ items:
+ type: string
+ type: array
+ selector:
+ description: 'Selector is a label selector. Label keys
+ and values in `matchLabels` support the wildcard characters
+ `*` (matches zero or many characters) and `?` (matches
+ one character). Wildcards allows writing label selectors
+ like ["storage.k8s.io/*": "*"]. Note that using ["*"
+ : "*"] matches any key and value but does not match
+ an empty label set.'
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ roles:
+ description: Roles is the list of namespaced role names
+ for the user.
+ items:
+ type: string
+ type: array
+ subjects:
+ description: Subjects is the list of subject names like
+ users, user groups, and service accounts.
+ items:
+ description: Subject contains a reference to the object
+ or user identities a role binding applies to. This
+ can either hold a direct API object reference, or a
+ value for non-objects such as user and group names.
+ properties:
+ apiGroup:
+ description: APIGroup holds the API group of the referenced
+ subject. Defaults to "" for ServiceAccount subjects.
+ Defaults to "rbac.authorization.k8s.io" for User
+ and Group subjects.
+ type: string
+ kind:
+ description: Kind of object being referenced. Values
+ defined by this API group are "User", "Group", and
+ "ServiceAccount". If the Authorizer does not recognized
+ the kind value, the Authorizer should report an
+ error.
+ type: string
+ name:
+ description: Name of the object being referenced.
+ type: string
+ namespace:
+ description: Namespace of the referenced object. If
+ the object kind is non-namespace, such as "User"
+ or "Group", and this value is not empty the Authorizer
+ should report an error.
+ type: string
+ required:
+ - kind
+ - name
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
+ type: object
+ generate:
+ description: Generation is used to create new resources.
+ properties:
+ apiVersion:
+ description: APIVersion specifies resource apiVersion.
+ type: string
+ clone:
+ description: Clone specifies the source resource used to
+ populate each generated resource. At most one of Data
+ or Clone can be specified. If neither are provided, the
+ generated resource will be created with default data only.
+ properties:
+ name:
+ description: Name specifies name of the resource.
+ type: string
+ namespace:
+ description: Namespace specifies source resource namespace.
+ type: string
+ type: object
+ cloneList:
+ description: CloneList specifies the list of source resource
+ used to populate each generated resource.
+ properties:
+ kinds:
+ description: Kinds is a list of resource kinds.
+ items:
+ type: string
+ type: array
+ namespace:
+ description: Namespace specifies source resource namespace.
+ type: string
+ selector:
+ description: Selector is a label selector. Label keys
+ and values in `matchLabels`. wildcard characters are
+ not supported.
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: A label selector requirement is a
+ selector that contains values, a key, and an
+ operator that relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: operator represents a key's relationship
+ to a set of values. Valid operators are
+ In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: values is an array of string
+ values. If the operator is In or NotIn,
+ the values array must be non-empty. If the
+ operator is Exists or DoesNotExist, the
+ values array must be empty. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchLabels:
+ additionalProperties:
+ type: string
+ description: matchLabels is a map of {key,value}
+ pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions,
+ whose key field is "key", the operator is "In",
+ and the values array contains only "value". The
+ requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ type: object
+ data:
+ description: Data provides the resource declaration used
+ to populate each generated resource. At most one of Data
+ or Clone must be specified. If neither are provided, the
+ generated resource will be created with default data only.
+ x-kubernetes-preserve-unknown-fields: true
+ kind:
+ description: Kind specifies resource kind.
+ type: string
+ name:
+ description: Name specifies the resource name.
+ type: string
+ namespace:
+ description: Namespace specifies resource namespace.
+ type: string
+ synchronize:
+ description: Synchronize controls if generated resources
+ should be kept in-sync with their source resource. If
+ Synchronize is set to "true" changes to generated resources
+ will be overwritten with resource data from Data or the
+ resource specified in the Clone declaration. Optional.
+ Defaults to "false" if not specified.
+ type: boolean
+ type: object
+ imageExtractors:
+ additionalProperties:
+ items:
+ properties:
+ key:
+ description: Key is an optional name of the field within
+ 'path' that will be used to uniquely identify an image.
+ Note - this field MUST be unique.
+ type: string
+ name:
+ description: Name is the entry the image will be available
+ under 'images.
-
APICall defines an HTTP request to the Kubernetes API server. The JSON -data retrieved is stored in the context. An APICall contains a URLPath -used to perform the HTTP GET request and an optional JMESPath used to -transform the retrieved JSON data.
+service + + +ServiceCall + + + |
+
+ Service is an API call to a JSON web service + |
+
jmesPath string |
-(Optional)
JMESPath is an optional JSON Match Expression that can be used to -transform the JSON response returned from the API server. For example +transform the JSON response returned from the server. For example a JMESPath of “items | length(@)” applied to the API server response -to the URLPath “/apis/apps/v1/deployments” will return the total count +for the URLPath “/apis/apps/v1/deployments” will return the total count of deployments across all namespaces. |
- APICall defines an HTTP request to the Kubernetes API server. The JSON -data retrieved is stored in the context. +APICall is an HTTP request to the Kubernetes API server, or other JSON web service. +The data returned is stored in the context with the name for the context entry. |
string
alias)+(Appears on: +ServiceCall) +
++
Method is a HTTP request type.
+@@ -2820,6 +2837,50 @@ RuleCountStatus
+(Appears on: +ServiceCall) +
++
RequestData contains the HTTP POST data
+ +Field | +Description | +
---|---|
+key + +string + + |
+
+ Key is a unique identifier for the data value + |
+
+value + + +Kubernetes apiextensions/v1.JSON + + + |
+
+ Value is the data value + |
+
@@ -3399,6 +3460,75 @@ string
+(Appears on: +APICall) +
++
+Field | +Description | +
---|---|
+urlPath + +string + + |
+
+ URL is the JSON web service URL.
+The typical format is |
+
+caBundle + +string + + |
+
+ CABundle is a PEM encoded CA bundle which will be used to validate +the server certificate. + |
+
+requestType + + +Method + + + |
+
+ Method is the HTTP request type (GET or POST). + |
+
+data + + +[]RequestData + + + |
+
+ Data specifies the POST data sent to the server. + |
+
diff --git a/pkg/engine/apicall/apiCall.go b/pkg/engine/apicall/apiCall.go new file mode 100644 index 0000000000..20a757b781 --- /dev/null +++ b/pkg/engine/apicall/apiCall.go @@ -0,0 +1,233 @@ +package apicall + +import ( + "bytes" + goctx "context" + "crypto/tls" + "crypto/x509" + "encoding/json" + "fmt" + "io" + "net/http" + "os" + + "github.com/go-logr/logr" + kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" + "github.com/kyverno/kyverno/pkg/clients/dclient" + "github.com/kyverno/kyverno/pkg/engine/context" + "github.com/kyverno/kyverno/pkg/engine/jmespath" + "github.com/kyverno/kyverno/pkg/engine/variables" + "github.com/pkg/errors" +) + +type apiCall struct { + log logr.Logger + entry kyvernov1.ContextEntry + ctx goctx.Context + jsonCtx context.Interface + client dclient.Interface +} + +func New(ctx goctx.Context, entry kyvernov1.ContextEntry, jsonCtx context.Interface, client dclient.Interface, log logr.Logger) (*apiCall, error) { + if entry.APICall == nil { + return nil, fmt.Errorf("missing APICall in context entry %v", entry) + } + + return &apiCall{ + ctx: ctx, + entry: entry, + jsonCtx: jsonCtx, + client: client, + log: log, + }, nil +} + +func (a *apiCall) Execute() ([]byte, error) { + call, err := variables.SubstituteAllInType(a.log, a.jsonCtx, a.entry.APICall) + if err != nil { + return nil, fmt.Errorf("failed to substitute variables in context entry %s %s: %v", a.entry.Name, a.entry.APICall.URLPath, err) + } + + data, err := a.execute(call) + if err != nil { + return nil, err + } + + result, err := a.transformAndStore(data) + if err != nil { + return nil, err + } + + return result, nil +} + +func (a *apiCall) execute(call *kyvernov1.APICall) ([]byte, error) { + if call.URLPath != "" { + return a.executeK8sAPICall(call.URLPath) + } + + return a.executeServiceCall(call.Service) +} + +func (a *apiCall) executeK8sAPICall(path string) ([]byte, error) { + jsonData, err := a.client.RawAbsPath(a.ctx, path) + if err != nil { + return nil, fmt.Errorf("failed to get resource with raw url\n: %s: %v", path, err) + } + + a.log.V(4).Info("executed APICall", "name", a.entry.Name, "len", len(jsonData)) + return jsonData, nil +} + +func (a *apiCall) executeServiceCall(service *kyvernov1.ServiceCall) ([]byte, error) { + if service == nil { + return nil, fmt.Errorf("missing service for APICall %s", a.entry.Name) + } + + client, err := a.buildHTTPClient(service) + if err != nil { + return nil, err + } + + req, err := a.buildHTTPRequest(service) + if err != nil { + return nil, errors.Wrapf(err, "failed to build HTTP request for APICall %s", a.entry.Name) + } + + resp, err := client.Do(req) + if err != nil { + return nil, errors.Wrapf(err, "failed to execute HTTP request for APICall %s", a.entry.Name) + } + + if resp.StatusCode < 200 || resp.StatusCode >= 300 { + return nil, fmt.Errorf("HTTP %d: %s", resp.StatusCode, resp.Status) + } + + defer resp.Body.Close() + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, errors.Wrapf(err, "failed to read data from APICall %s", a.entry.Name) + } + + a.log.Info("executed service APICall", "name", a.entry.Name, "len", len(body)) + return body, nil +} + +func (a *apiCall) buildHTTPRequest(service *kyvernov1.ServiceCall) (req *http.Request, err error) { + token := a.getToken() + defer func() { + if token != "" && req != nil { + req.Header.Add("Authorization", "Bearer "+token) + } + }() + + if service.Method == "GET" { + req, err = http.NewRequest("GET", service.URL, nil) + return + } + + if service.Method == "POST" { + data, dataErr := a.buildPostData(service.Data) + if dataErr != nil { + return nil, dataErr + } + + req, err = http.NewRequest("POST", service.URL, data) + return + } + + return nil, fmt.Errorf("invalid request type %s for APICall %s", service.Method, a.entry.Name) +} + +func (a *apiCall) getToken() string { + b, err := os.ReadFile("/var/run/secrets/tokens/api-token") + if err != nil { + a.log.Info("failed to read token", "path", "/var/run/secrets/tokens/api-token") + return "" + } + + return string(b) +} + +func (a *apiCall) buildHTTPClient(service *kyvernov1.ServiceCall) (*http.Client, error) { + if service.CABundle == "" { + return http.DefaultClient, nil + } + + caCertPool := x509.NewCertPool() + if ok := caCertPool.AppendCertsFromPEM([]byte(service.CABundle)); !ok { + return nil, fmt.Errorf("failed to parse PEM CA bundle for APICall %s", a.entry.Name) + } + + return &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + RootCAs: caCertPool, + MinVersion: tls.VersionTLS12, + }, + }, + }, nil +} + +func (a *apiCall) buildPostData(data []kyvernov1.RequestData) (io.Reader, error) { + dataMap := make(map[string]interface{}) + for _, d := range data { + dataMap[d.Key] = d.Value + } + + buffer := new(bytes.Buffer) + if err := json.NewEncoder(buffer).Encode(dataMap); err != nil { + return nil, errors.Wrapf(err, "failed to encode HTTP POST data %v for APICall %s", dataMap, a.entry.Name) + } + + return buffer, nil +} + +func (a *apiCall) transformAndStore(jsonData []byte) ([]byte, error) { + if a.entry.APICall.JMESPath == "" { + err := a.jsonCtx.AddContextEntry(a.entry.Name, jsonData) + if err != nil { + return nil, errors.Wrapf(err, "failed to add resource data to context entry %s", a.entry.Name) + } + + return jsonData, nil + } + + path, err := variables.SubstituteAll(a.log, a.jsonCtx, a.entry.APICall.JMESPath) + if err != nil { + return nil, errors.Wrapf(err, "failed to substitute variables in context entry %s JMESPath %s", a.entry.Name, a.entry.APICall.JMESPath) + } + + results, err := applyJMESPathJSON(path.(string), jsonData) + if err != nil { + return nil, errors.Wrapf(err, "failed to apply JMESPath %s for context entry %s", path, a.entry.Name) + } + + contextData, err := json.Marshal(results) + if err != nil { + return nil, errors.Wrapf(err, "failed to marshall APICall data for context entry %s", a.entry.Name) + } + + err = a.jsonCtx.AddContextEntry(a.entry.Name, contextData) + if err != nil { + return nil, errors.Wrapf(err, "failed to add APICall results for context entry %s", a.entry.Name) + } + + a.log.V(4).Info("added context data", "name", a.entry.Name, "len", len(contextData)) + return contextData, nil +} + +func applyJMESPathJSON(jmesPath string, jsonData []byte) (interface{}, error) { + var data interface{} + err := json.Unmarshal(jsonData, &data) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal JSON: %s, error: %v", string(jsonData), err) + } + + jp, err := jmespath.New(jmesPath) + if err != nil { + return nil, fmt.Errorf("failed to compile JMESPath: %s, error: %v", jmesPath, err) + } + + return jp.Search(data) +} diff --git a/pkg/engine/apicall/apiCall_test.go b/pkg/engine/apicall/apiCall_test.go new file mode 100644 index 0000000000..4337f57d5a --- /dev/null +++ b/pkg/engine/apicall/apiCall_test.go @@ -0,0 +1,146 @@ +package apicall + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" + enginecontext "github.com/kyverno/kyverno/pkg/engine/context" + "github.com/kyverno/kyverno/pkg/logging" + "gotest.tools/assert" + + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" +) + +func buildTestServer(responseData []byte) *httptest.Server { + mux := http.NewServeMux() + mux.HandleFunc("/resource", func(w http.ResponseWriter, r *http.Request) { + if r.Method == "GET" { + w.Write(responseData) + return + } + + if r.Method == "POST" { + defer r.Body.Close() + body, _ := io.ReadAll(r.Body) + w.Write(body) + } + }) + + return httptest.NewServer(mux) +} + +func Test_serviceGetRequest(t *testing.T) { + serverResponse := []byte(`{ "day": "Sunday" }`) + s := buildTestServer(serverResponse) + defer s.Close() + + entry := kyvernov1.ContextEntry{} + ctx := enginecontext.NewContext() + + _, err := New(context.TODO(), entry, ctx, nil, logging.GlobalLogger()) + assert.ErrorContains(t, err, "missing APICall") + + entry.Name = "test" + entry.APICall = &kyvernov1.APICall{ + Service: &kyvernov1.ServiceCall{ + URL: s.URL, + }, + } + + call, err := New(context.TODO(), entry, ctx, nil, logging.GlobalLogger()) + assert.NilError(t, err) + _, err = call.Execute() + assert.ErrorContains(t, err, "invalid request type") + + entry.APICall.Service.Method = "GET" + call, err = New(context.TODO(), entry, ctx, nil, logging.GlobalLogger()) + assert.NilError(t, err) + _, err = call.Execute() + assert.ErrorContains(t, err, "HTTP 404") + + entry.APICall.Service.URL = s.URL + "/resource" + call, err = New(context.TODO(), entry, ctx, nil, logging.GlobalLogger()) + assert.NilError(t, err) + + data, err := call.Execute() + assert.NilError(t, err) + assert.Assert(t, data != nil, "nil data") + assert.Equal(t, string(serverResponse), string(data)) +} + +func Test_servicePostRequest(t *testing.T) { + serverResponse := []byte(`{ "day": "Monday" }`) + s := buildTestServer(serverResponse) + defer s.Close() + + entry := kyvernov1.ContextEntry{ + Name: "test", + APICall: &kyvernov1.APICall{ + Service: &kyvernov1.ServiceCall{ + URL: s.URL + "/resource", + Method: "POST", + }, + }, + } + + ctx := enginecontext.NewContext() + call, err := New(context.TODO(), entry, ctx, nil, logging.GlobalLogger()) + assert.NilError(t, err) + data, err := call.Execute() + assert.NilError(t, err) + assert.Equal(t, "{}\n", string(data)) + + imageData := `{ + "containers": { + "tomcat": { + "reference": "https://ghcr.io/tomcat/tomcat:9", + "registry": "https://ghcr.io", + "path": "tomcat", + "name": "tomcat", + "tag": "9" + } + }, + "initContainers": { + "vault": { + "reference": "https://ghcr.io/vault/vault:v3", + "registry": "https://ghcr.io", + "path": "vault", + "name": "vault", + "tag": "v3" + } + }, + "ephemeralContainers": { + "vault": { + "reference": "https://ghcr.io/busybox/busybox:latest", + "registry": "https://ghcr.io", + "path": "busybox", + "name": "busybox", + "tag": "latest" + } + } + }` + + err = ctx.AddContextEntry("images", []byte(imageData)) + assert.NilError(t, err) + + entry.APICall.Service.Data = []kyvernov1.RequestData{ + { + Key: "images", + Value: &apiextensionsv1.JSON{ + Raw: []byte("\"{{ images.[containers, initContainers, ephemeralContainers][].*.reference[] }}\""), + }, + }, + } + + call, err = New(context.TODO(), entry, ctx, nil, logging.GlobalLogger()) + assert.NilError(t, err) + data, err = call.Execute() + assert.NilError(t, err) + + expectedResults := `{"images":["https://ghcr.io/tomcat/tomcat:9","https://ghcr.io/vault/vault:v3","https://ghcr.io/busybox/busybox:latest"]}` + assert.Equal(t, string(expectedResults)+"\n", string(data)) +} diff --git a/pkg/engine/jsonContext.go b/pkg/engine/jsonContext.go index 46105bed87..e1d3263b40 100644 --- a/pkg/engine/jsonContext.go +++ b/pkg/engine/jsonContext.go @@ -8,9 +8,11 @@ import ( "github.com/go-logr/logr" kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1" "github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/store" + "github.com/kyverno/kyverno/pkg/engine/apicall" jmespath "github.com/kyverno/kyverno/pkg/engine/jmespath" "github.com/kyverno/kyverno/pkg/engine/variables" "github.com/kyverno/kyverno/pkg/registryclient" + "github.com/pkg/errors" ) // LoadContext - Fetches and adds external data to the Context. @@ -238,41 +240,15 @@ func fetchImageDataMap(ctx context.Context, rclient registryclient.Client, ref s } func loadAPIData(ctx context.Context, logger logr.Logger, entry kyvernov1.ContextEntry, enginectx *PolicyContext) error { - jsonData, err := fetchAPIData(ctx, logger, entry, enginectx) + executor, err := apicall.New(ctx, entry, enginectx.JSONContext(), enginectx.Client(), logger) if err != nil { - return err + return errors.Wrapf(err, "failed to initialize APICall") } - if entry.APICall.JMESPath == "" { - err = enginectx.jsonContext.AddContextEntry(entry.Name, jsonData) - if err != nil { - return fmt.Errorf("failed to add resource data to context: contextEntry: %v, error: %v", entry, err) - } - - return nil + if _, err := executor.Execute(); err != nil { + return errors.Wrapf(err, "failed to execute APICall") } - path, err := variables.SubstituteAll(logger, enginectx.jsonContext, entry.APICall.JMESPath) - if err != nil { - return fmt.Errorf("failed to substitute variables in context entry %s %s: %v", entry.Name, entry.APICall.JMESPath, err) - } - - results, err := applyJMESPathJSON(path.(string), jsonData) - if err != nil { - return err - } - - contextData, err := json.Marshal(results) - if err != nil { - return fmt.Errorf("failed to marshall data %v for context entry %v: %v", contextData, entry, err) - } - - err = enginectx.jsonContext.AddContextEntry(entry.Name, contextData) - if err != nil { - return fmt.Errorf("failed to add JMESPath (%s) results to context, error: %v", entry.APICall.JMESPath, err) - } - - logger.V(4).Info("added APICall context entry", "len", len(contextData)) return nil } @@ -285,39 +261,6 @@ func applyJMESPath(jmesPath string, data interface{}) (interface{}, error) { return jp.Search(data) } -func applyJMESPathJSON(jmesPath string, jsonData []byte) (interface{}, error) { - var data interface{} - err := json.Unmarshal(jsonData, &data) - if err != nil { - return nil, fmt.Errorf("failed to unmarshal JSON: %s, error: %v", string(jsonData), err) - } - return applyJMESPath(jmesPath, data) -} - -func fetchAPIData(ctx context.Context, log logr.Logger, entry kyvernov1.ContextEntry, enginectx *PolicyContext) ([]byte, error) { - if entry.APICall == nil { - return nil, fmt.Errorf("missing APICall in context entry %s %v", entry.Name, entry.APICall) - } - - path, err := variables.SubstituteAll(log, enginectx.jsonContext, entry.APICall.URLPath) - if err != nil { - return nil, fmt.Errorf("failed to substitute variables in context entry %s %s: %v", entry.Name, entry.APICall.URLPath, err) - } - - pathStr := path.(string) - - jsonData, err := getResource(ctx, enginectx, pathStr) - if err != nil { - return nil, fmt.Errorf("failed to get resource with raw url\n: %s: %v", pathStr, err) - } - - return jsonData, nil -} - -func getResource(ctx context.Context, enginectx *PolicyContext, p string) ([]byte, error) { - return enginectx.client.RawAbsPath(ctx, p) -} - func loadConfigMap(ctx context.Context, logger logr.Logger, entry kyvernov1.ContextEntry, enginectx *PolicyContext) error { data, err := fetchConfigMap(ctx, logger, entry, enginectx) if err != nil { diff --git a/pkg/engine/policyContext.go b/pkg/engine/policyContext.go index 5a24d6453f..ff05b17d46 100644 --- a/pkg/engine/policyContext.go +++ b/pkg/engine/policyContext.go @@ -126,6 +126,10 @@ func (c *PolicyContext) FindExceptions(rule string) ([]*kyvernov2alpha1.PolicyEx return result, nil } +func (c *PolicyContext) Client() dclient.Interface { + return c.client +} + // Mutators func (c *PolicyContext) WithPolicy(policy kyvernov1.PolicyInterface) *PolicyContext { diff --git a/pkg/engine/variables/vars.go b/pkg/engine/variables/vars.go index 0a293471a2..e1702cca35 100644 --- a/pkg/engine/variables/vars.go +++ b/pkg/engine/variables/vars.go @@ -84,9 +84,6 @@ func SubstituteAll(log logr.Logger, ctx context.EvalInterface, document interfac } func SubstituteAllInPreconditions(log logr.Logger, ctx context.EvalInterface, document interface{}) (interface{}, error) { - // We must convert all incoming conditions to JSON data i.e. - // string, []interface{}, map[string]interface{} - // we cannot use structs otherwise json traverse doesn't work untypedDoc, err := DocumentToUntyped(document) if err != nil { return nil, err @@ -94,21 +91,42 @@ func SubstituteAllInPreconditions(log logr.Logger, ctx context.EvalInterface, do return substituteAll(log, ctx, untypedDoc, newPreconditionsVariableResolver(log)) } -func SubstituteAllInRule(log logr.Logger, ctx context.EvalInterface, typedRule kyvernov1.Rule) (_ kyvernov1.Rule, err error) { - var rule interface{} - rule, err = DocumentToUntyped(typedRule) +func SubstituteAllInType[T any](log logr.Logger, ctx context.EvalInterface, t *T) (*T, error) { + untyped, err := DocumentToUntyped(t) if err != nil { - return typedRule, err + return nil, err } - rule, err = SubstituteAll(log, ctx, rule) + untypedResults, err := SubstituteAll(log, ctx, untyped) if err != nil { - return typedRule, err + return nil, err } - return UntypedToRule(rule) + jsonBytes, err := json.Marshal(untypedResults) + if err != nil { + return nil, err + } + + var result T + err = json.Unmarshal(jsonBytes, &result) + if err != nil { + return nil, err + } + + return &result, nil } +func SubstituteAllInRule(log logr.Logger, ctx context.EvalInterface, rule kyvernov1.Rule) (_ kyvernov1.Rule, err error) { + result, err := SubstituteAllInType(log, ctx, &rule) + if err != nil { + return kyvernov1.Rule{}, err + } + + return *result, nil +} + +// DocumentToUntyped converts a typed object to JSON data i.e. +// string, []interface{}, map[string]interface{} func DocumentToUntyped(doc interface{}) (interface{}, error) { jsonDoc, err := json.Marshal(doc) if err != nil { @@ -124,19 +142,19 @@ func DocumentToUntyped(doc interface{}) (interface{}, error) { return untyped, nil } -func UntypedToRule(untyped interface{}) (kyvernov1.Rule, error) { +func untypedToTyped[T any](untyped interface{}) (*T, error) { jsonRule, err := json.Marshal(untyped) if err != nil { - return kyvernov1.Rule{}, err + return nil, err } - var rule kyvernov1.Rule - err = json.Unmarshal(jsonRule, &rule) + var t T + err = json.Unmarshal(jsonRule, &t) if err != nil { - return kyvernov1.Rule{}, err + return nil, err } - return rule, nil + return &t, nil } func SubstituteAllInConditions(log logr.Logger, ctx context.EvalInterface, conditions []kyvernov1.AnyAllConditions) ([]kyvernov1.AnyAllConditions, error) { @@ -211,7 +229,12 @@ func SubstituteAllForceMutate(log logr.Logger, ctx context.Interface, typedRule } } - return UntypedToRule(rule) + result, err := untypedToTyped[kyvernov1.Rule](rule) + if err != nil { + return kyvernov1.Rule{}, err + } + + return *result, nil } func substituteVars(log logr.Logger, ctx context.EvalInterface, rule interface{}, vr VariableResolver) (interface{}, error) {