439 lines
24 KiB
Go
439 lines
24 KiB
Go
|
/*
|
||
|
Copyright 2017 The Kubernetes Authors.
|
||
|
|
||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
you may not use this file except in compliance with the License.
|
||
|
You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
See the License for the specific language governing permissions and
|
||
|
limitations under the License.
|
||
|
*/
|
||
|
|
||
|
package v1beta1
|
||
|
|
||
|
import (
|
||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||
|
"k8s.io/apimachinery/pkg/runtime"
|
||
|
"k8s.io/apimachinery/pkg/types"
|
||
|
)
|
||
|
|
||
|
// ConversionStrategyType describes different conversion types.
|
||
|
type ConversionStrategyType string
|
||
|
|
||
|
const (
|
||
|
// NoneConverter is a converter that only sets apiversion of the CR and leave everything else unchanged.
|
||
|
NoneConverter ConversionStrategyType = "None"
|
||
|
// WebhookConverter is a converter that calls to an external webhook to convert the CR.
|
||
|
WebhookConverter ConversionStrategyType = "Webhook"
|
||
|
)
|
||
|
|
||
|
// CustomResourceDefinitionSpec describes how a user wants their resource to appear
|
||
|
type CustomResourceDefinitionSpec struct {
|
||
|
// Group is the group this resource belongs in
|
||
|
Group string `json:"group" protobuf:"bytes,1,opt,name=group"`
|
||
|
// Version is the version this resource belongs in
|
||
|
// Should be always first item in Versions field if provided.
|
||
|
// Optional, but at least one of Version or Versions must be set.
|
||
|
// Deprecated: Please use `Versions`.
|
||
|
// +optional
|
||
|
Version string `json:"version,omitempty" protobuf:"bytes,2,opt,name=version"`
|
||
|
// Names are the names used to describe this custom resource
|
||
|
Names CustomResourceDefinitionNames `json:"names" protobuf:"bytes,3,opt,name=names"`
|
||
|
// Scope indicates whether this resource is cluster or namespace scoped. Default is namespaced
|
||
|
Scope ResourceScope `json:"scope" protobuf:"bytes,4,opt,name=scope,casttype=ResourceScope"`
|
||
|
// Validation describes the validation methods for CustomResources
|
||
|
// Optional, the global validation schema for all versions.
|
||
|
// Top-level and per-version schemas are mutually exclusive.
|
||
|
// +optional
|
||
|
Validation *CustomResourceValidation `json:"validation,omitempty" protobuf:"bytes,5,opt,name=validation"`
|
||
|
// Subresources describes the subresources for CustomResource
|
||
|
// Optional, the global subresources for all versions.
|
||
|
// Top-level and per-version subresources are mutually exclusive.
|
||
|
// +optional
|
||
|
Subresources *CustomResourceSubresources `json:"subresources,omitempty" protobuf:"bytes,6,opt,name=subresources"`
|
||
|
// Versions is the list of all supported versions for this resource.
|
||
|
// If Version field is provided, this field is optional.
|
||
|
// Validation: All versions must use the same validation schema for now. i.e., top
|
||
|
// level Validation field is applied to all of these versions.
|
||
|
// Order: The version name will be used to compute the order.
|
||
|
// If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
|
||
|
// lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
|
||
|
// then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
|
||
|
// by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
|
||
|
// major version, then minor version. An example sorted list of versions:
|
||
|
// v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
|
||
|
// +optional
|
||
|
Versions []CustomResourceDefinitionVersion `json:"versions,omitempty" protobuf:"bytes,7,rep,name=versions"`
|
||
|
// AdditionalPrinterColumns are additional columns shown e.g. in kubectl next to the name. Defaults to a created-at column.
|
||
|
// Optional, the global columns for all versions.
|
||
|
// Top-level and per-version columns are mutually exclusive.
|
||
|
// +optional
|
||
|
AdditionalPrinterColumns []CustomResourceColumnDefinition `json:"additionalPrinterColumns,omitempty" protobuf:"bytes,8,rep,name=additionalPrinterColumns"`
|
||
|
|
||
|
// `conversion` defines conversion settings for the CRD.
|
||
|
// +optional
|
||
|
Conversion *CustomResourceConversion `json:"conversion,omitempty" protobuf:"bytes,9,opt,name=conversion"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceConversion describes how to convert different versions of a CR.
|
||
|
type CustomResourceConversion struct {
|
||
|
// `strategy` specifies the conversion strategy. Allowed values are:
|
||
|
// - `None`: The converter only change the apiVersion and would not touch any other field in the CR.
|
||
|
// - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information is needed for this option.
|
||
|
Strategy ConversionStrategyType `json:"strategy" protobuf:"bytes,1,name=strategy"`
|
||
|
|
||
|
// `webhookClientConfig` is the instructions for how to call the webhook if strategy is `Webhook`. This field is
|
||
|
// alpha-level and is only honored by servers that enable the CustomResourceWebhookConversion feature.
|
||
|
// +optional
|
||
|
WebhookClientConfig *WebhookClientConfig `json:"webhookClientConfig,omitempty" protobuf:"bytes,2,name=webhookClientConfig"`
|
||
|
|
||
|
// ConversionReviewVersions is an ordered list of preferred `ConversionReview`
|
||
|
// versions the Webhook expects. API server will try to use first version in
|
||
|
// the list which it supports. If none of the versions specified in this list
|
||
|
// supported by API server, conversion will fail for this object.
|
||
|
// If a persisted Webhook configuration specifies allowed versions and does not
|
||
|
// include any versions known to the API Server, calls to the webhook will fail.
|
||
|
// Default to `['v1beta1']`.
|
||
|
// +optional
|
||
|
ConversionReviewVersions []string `json:"conversionReviewVersions,omitempty" protobuf:"bytes,3,rep,name=conversionReviewVersions"`
|
||
|
}
|
||
|
|
||
|
// WebhookClientConfig contains the information to make a TLS
|
||
|
// connection with the webhook. It has the same field as admissionregistration.v1beta1.WebhookClientConfig.
|
||
|
type WebhookClientConfig struct {
|
||
|
// `url` gives the location of the webhook, in standard URL form
|
||
|
// (`scheme://host:port/path`). Exactly one of `url` or `service`
|
||
|
// must be specified.
|
||
|
//
|
||
|
// The `host` should not refer to a service running in the cluster; use
|
||
|
// the `service` field instead. The host might be resolved via external
|
||
|
// DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
|
||
|
// in-cluster DNS as that would be a layering violation). `host` may
|
||
|
// also be an IP address.
|
||
|
//
|
||
|
// Please note that using `localhost` or `127.0.0.1` as a `host` is
|
||
|
// risky unless you take great care to run this webhook on all hosts
|
||
|
// which run an apiserver which might need to make calls to this
|
||
|
// webhook. Such installs are likely to be non-portable, i.e., not easy
|
||
|
// to turn up in a new cluster.
|
||
|
//
|
||
|
// The scheme must be "https"; the URL must begin with "https://".
|
||
|
//
|
||
|
// A path is optional, and if present may be any string permissible in
|
||
|
// a URL. You may use the path to pass an arbitrary string to the
|
||
|
// webhook, for example, a cluster identifier.
|
||
|
//
|
||
|
// Attempting to use a user or basic auth e.g. "user:password@" is not
|
||
|
// allowed. Fragments ("#...") and query parameters ("?...") are not
|
||
|
// allowed, either.
|
||
|
//
|
||
|
// +optional
|
||
|
URL *string `json:"url,omitempty" protobuf:"bytes,3,opt,name=url"`
|
||
|
|
||
|
// `service` is a reference to the service for this webhook. Either
|
||
|
// `service` or `url` must be specified.
|
||
|
//
|
||
|
// If the webhook is running within the cluster, then you should use `service`.
|
||
|
//
|
||
|
// Port 443 will be used if it is open, otherwise it is an error.
|
||
|
//
|
||
|
// +optional
|
||
|
Service *ServiceReference `json:"service,omitempty" protobuf:"bytes,1,opt,name=service"`
|
||
|
|
||
|
// `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
|
||
|
// If unspecified, system trust roots on the apiserver are used.
|
||
|
// +optional
|
||
|
CABundle []byte `json:"caBundle,omitempty" protobuf:"bytes,2,opt,name=caBundle"`
|
||
|
}
|
||
|
|
||
|
// ServiceReference holds a reference to Service.legacy.k8s.io
|
||
|
type ServiceReference struct {
|
||
|
// `namespace` is the namespace of the service.
|
||
|
// Required
|
||
|
Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"`
|
||
|
// `name` is the name of the service.
|
||
|
// Required
|
||
|
Name string `json:"name" protobuf:"bytes,2,opt,name=name"`
|
||
|
|
||
|
// `path` is an optional URL path which will be sent in any request to
|
||
|
// this service.
|
||
|
// +optional
|
||
|
Path *string `json:"path,omitempty" protobuf:"bytes,3,opt,name=path"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceDefinitionVersion describes a version for CRD.
|
||
|
type CustomResourceDefinitionVersion struct {
|
||
|
// Name is the version name, e.g. “v1”, “v2beta1”, etc.
|
||
|
Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
|
||
|
// Served is a flag enabling/disabling this version from being served via REST APIs
|
||
|
Served bool `json:"served" protobuf:"varint,2,opt,name=served"`
|
||
|
// Storage flags the version as storage version. There must be exactly one
|
||
|
// flagged as storage version.
|
||
|
Storage bool `json:"storage" protobuf:"varint,3,opt,name=storage"`
|
||
|
// Schema describes the schema for CustomResource used in validation, pruning, and defaulting.
|
||
|
// Top-level and per-version schemas are mutually exclusive.
|
||
|
// Per-version schemas must not all be set to identical values (top-level validation schema should be used instead)
|
||
|
// This field is alpha-level and is only honored by servers that enable the CustomResourceWebhookConversion feature.
|
||
|
// +optional
|
||
|
Schema *CustomResourceValidation `json:"schema,omitempty" protobuf:"bytes,4,opt,name=schema"`
|
||
|
// Subresources describes the subresources for CustomResource
|
||
|
// Top-level and per-version subresources are mutually exclusive.
|
||
|
// Per-version subresources must not all be set to identical values (top-level subresources should be used instead)
|
||
|
// This field is alpha-level and is only honored by servers that enable the CustomResourceWebhookConversion feature.
|
||
|
// +optional
|
||
|
Subresources *CustomResourceSubresources `json:"subresources,omitempty" protobuf:"bytes,5,opt,name=subresources"`
|
||
|
// AdditionalPrinterColumns are additional columns shown e.g. in kubectl next to the name. Defaults to a created-at column.
|
||
|
// Top-level and per-version columns are mutually exclusive.
|
||
|
// Per-version columns must not all be set to identical values (top-level columns should be used instead)
|
||
|
// This field is alpha-level and is only honored by servers that enable the CustomResourceWebhookConversion feature.
|
||
|
// NOTE: CRDs created prior to 1.13 populated the top-level additionalPrinterColumns field by default. To apply an
|
||
|
// update that changes to per-version additionalPrinterColumns, the top-level additionalPrinterColumns field must
|
||
|
// be explicitly set to null
|
||
|
// +optional
|
||
|
AdditionalPrinterColumns []CustomResourceColumnDefinition `json:"additionalPrinterColumns,omitempty" protobuf:"bytes,6,rep,name=additionalPrinterColumns"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceColumnDefinition specifies a column for server side printing.
|
||
|
type CustomResourceColumnDefinition struct {
|
||
|
// name is a human readable name for the column.
|
||
|
Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
|
||
|
// type is an OpenAPI type definition for this column.
|
||
|
// See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.
|
||
|
Type string `json:"type" protobuf:"bytes,2,opt,name=type"`
|
||
|
// format is an optional OpenAPI type definition for this column. The 'name' format is applied
|
||
|
// to the primary identifier column to assist in clients identifying column is the resource name.
|
||
|
// See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more.
|
||
|
// +optional
|
||
|
Format string `json:"format,omitempty" protobuf:"bytes,3,opt,name=format"`
|
||
|
// description is a human readable description of this column.
|
||
|
// +optional
|
||
|
Description string `json:"description,omitempty" protobuf:"bytes,4,opt,name=description"`
|
||
|
// priority is an integer defining the relative importance of this column compared to others. Lower
|
||
|
// numbers are considered higher priority. Columns that may be omitted in limited space scenarios
|
||
|
// should be given a higher priority.
|
||
|
// +optional
|
||
|
Priority int32 `json:"priority,omitempty" protobuf:"bytes,5,opt,name=priority"`
|
||
|
|
||
|
// JSONPath is a simple JSON path, i.e. with array notation.
|
||
|
JSONPath string `json:"JSONPath" protobuf:"bytes,6,opt,name=JSONPath"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition
|
||
|
type CustomResourceDefinitionNames struct {
|
||
|
// Plural is the plural name of the resource to serve. It must match the name of the CustomResourceDefinition-registration
|
||
|
// too: plural.group and it must be all lowercase.
|
||
|
Plural string `json:"plural" protobuf:"bytes,1,opt,name=plural"`
|
||
|
// Singular is the singular name of the resource. It must be all lowercase Defaults to lowercased <kind>
|
||
|
// +optional
|
||
|
Singular string `json:"singular,omitempty" protobuf:"bytes,2,opt,name=singular"`
|
||
|
// ShortNames are short names for the resource. It must be all lowercase.
|
||
|
// +optional
|
||
|
ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,3,opt,name=shortNames"`
|
||
|
// Kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
||
|
Kind string `json:"kind" protobuf:"bytes,4,opt,name=kind"`
|
||
|
// ListKind is the serialized kind of the list for this resource. Defaults to <kind>List.
|
||
|
// +optional
|
||
|
ListKind string `json:"listKind,omitempty" protobuf:"bytes,5,opt,name=listKind"`
|
||
|
// Categories is a list of grouped resources custom resources belong to (e.g. 'all')
|
||
|
// +optional
|
||
|
Categories []string `json:"categories,omitempty" protobuf:"bytes,6,rep,name=categories"`
|
||
|
}
|
||
|
|
||
|
// ResourceScope is an enum defining the different scopes available to a custom resource
|
||
|
type ResourceScope string
|
||
|
|
||
|
const (
|
||
|
ClusterScoped ResourceScope = "Cluster"
|
||
|
NamespaceScoped ResourceScope = "Namespaced"
|
||
|
)
|
||
|
|
||
|
type ConditionStatus string
|
||
|
|
||
|
// These are valid condition statuses. "ConditionTrue" means a resource is in the condition.
|
||
|
// "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes
|
||
|
// can't decide if a resource is in the condition or not. In the future, we could add other
|
||
|
// intermediate conditions, e.g. ConditionDegraded.
|
||
|
const (
|
||
|
ConditionTrue ConditionStatus = "True"
|
||
|
ConditionFalse ConditionStatus = "False"
|
||
|
ConditionUnknown ConditionStatus = "Unknown"
|
||
|
)
|
||
|
|
||
|
// CustomResourceDefinitionConditionType is a valid value for CustomResourceDefinitionCondition.Type
|
||
|
type CustomResourceDefinitionConditionType string
|
||
|
|
||
|
const (
|
||
|
// Established means that the resource has become active. A resource is established when all names are
|
||
|
// accepted without a conflict for the first time. A resource stays established until deleted, even during
|
||
|
// a later NamesAccepted due to changed names. Note that not all names can be changed.
|
||
|
Established CustomResourceDefinitionConditionType = "Established"
|
||
|
// NamesAccepted means the names chosen for this CustomResourceDefinition do not conflict with others in
|
||
|
// the group and are therefore accepted.
|
||
|
NamesAccepted CustomResourceDefinitionConditionType = "NamesAccepted"
|
||
|
// Terminating means that the CustomResourceDefinition has been deleted and is cleaning up.
|
||
|
Terminating CustomResourceDefinitionConditionType = "Terminating"
|
||
|
)
|
||
|
|
||
|
// CustomResourceDefinitionCondition contains details for the current condition of this pod.
|
||
|
type CustomResourceDefinitionCondition struct {
|
||
|
// Type is the type of the condition.
|
||
|
Type CustomResourceDefinitionConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=CustomResourceDefinitionConditionType"`
|
||
|
// Status is the status of the condition.
|
||
|
// Can be True, False, Unknown.
|
||
|
Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"`
|
||
|
// Last time the condition transitioned from one status to another.
|
||
|
// +optional
|
||
|
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
|
||
|
// Unique, one-word, CamelCase reason for the condition's last transition.
|
||
|
// +optional
|
||
|
Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
|
||
|
// Human-readable message indicating details about last transition.
|
||
|
// +optional
|
||
|
Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition
|
||
|
type CustomResourceDefinitionStatus struct {
|
||
|
// Conditions indicate state for particular aspects of a CustomResourceDefinition
|
||
|
Conditions []CustomResourceDefinitionCondition `json:"conditions" protobuf:"bytes,1,opt,name=conditions"`
|
||
|
|
||
|
// AcceptedNames are the names that are actually being used to serve discovery
|
||
|
// They may be different than the names in spec.
|
||
|
AcceptedNames CustomResourceDefinitionNames `json:"acceptedNames" protobuf:"bytes,2,opt,name=acceptedNames"`
|
||
|
|
||
|
// StoredVersions are all versions of CustomResources that were ever persisted. Tracking these
|
||
|
// versions allows a migration path for stored versions in etcd. The field is mutable
|
||
|
// so the migration controller can first finish a migration to another version (i.e.
|
||
|
// that no old objects are left in the storage), and then remove the rest of the
|
||
|
// versions from this list.
|
||
|
// None of the versions in this list can be removed from the spec.Versions field.
|
||
|
StoredVersions []string `json:"storedVersions" protobuf:"bytes,3,rep,name=storedVersions"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceCleanupFinalizer is the name of the finalizer which will delete instances of
|
||
|
// a CustomResourceDefinition
|
||
|
const CustomResourceCleanupFinalizer = "customresourcecleanup.apiextensions.k8s.io"
|
||
|
|
||
|
// +genclient
|
||
|
// +genclient:nonNamespaced
|
||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||
|
|
||
|
// CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format
|
||
|
// <.spec.name>.<.spec.group>.
|
||
|
type CustomResourceDefinition struct {
|
||
|
metav1.TypeMeta `json:",inline"`
|
||
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||
|
|
||
|
// Spec describes how the user wants the resources to appear
|
||
|
Spec CustomResourceDefinitionSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
|
||
|
// Status indicates the actual state of the CustomResourceDefinition
|
||
|
// +optional
|
||
|
Status CustomResourceDefinitionStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
||
|
}
|
||
|
|
||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||
|
|
||
|
// CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
|
||
|
type CustomResourceDefinitionList struct {
|
||
|
metav1.TypeMeta `json:",inline"`
|
||
|
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||
|
|
||
|
// Items individual CustomResourceDefinitions
|
||
|
Items []CustomResourceDefinition `json:"items" protobuf:"bytes,2,rep,name=items"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceValidation is a list of validation methods for CustomResources.
|
||
|
type CustomResourceValidation struct {
|
||
|
// OpenAPIV3Schema is the OpenAPI v3 schema to be validated against.
|
||
|
// +optional
|
||
|
OpenAPIV3Schema *JSONSchemaProps `json:"openAPIV3Schema,omitempty" protobuf:"bytes,1,opt,name=openAPIV3Schema"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceSubresources defines the status and scale subresources for CustomResources.
|
||
|
type CustomResourceSubresources struct {
|
||
|
// Status denotes the status subresource for CustomResources
|
||
|
// +optional
|
||
|
Status *CustomResourceSubresourceStatus `json:"status,omitempty" protobuf:"bytes,1,opt,name=status"`
|
||
|
// Scale denotes the scale subresource for CustomResources
|
||
|
// +optional
|
||
|
Scale *CustomResourceSubresourceScale `json:"scale,omitempty" protobuf:"bytes,2,opt,name=scale"`
|
||
|
}
|
||
|
|
||
|
// CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources.
|
||
|
// Status is represented by the `.status` JSON path inside of a CustomResource. When set,
|
||
|
// * exposes a /status subresource for the custom resource
|
||
|
// * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza
|
||
|
// * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza
|
||
|
type CustomResourceSubresourceStatus struct{}
|
||
|
|
||
|
// CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.
|
||
|
type CustomResourceSubresourceScale struct {
|
||
|
// SpecReplicasPath defines the JSON path inside of a CustomResource that corresponds to Scale.Spec.Replicas.
|
||
|
// Only JSON paths without the array notation are allowed.
|
||
|
// Must be a JSON Path under .spec.
|
||
|
// If there is no value under the given path in the CustomResource, the /scale subresource will return an error on GET.
|
||
|
SpecReplicasPath string `json:"specReplicasPath" protobuf:"bytes,1,name=specReplicasPath"`
|
||
|
// StatusReplicasPath defines the JSON path inside of a CustomResource that corresponds to Scale.Status.Replicas.
|
||
|
// Only JSON paths without the array notation are allowed.
|
||
|
// Must be a JSON Path under .status.
|
||
|
// If there is no value under the given path in the CustomResource, the status replica value in the /scale subresource
|
||
|
// will default to 0.
|
||
|
StatusReplicasPath string `json:"statusReplicasPath" protobuf:"bytes,2,opt,name=statusReplicasPath"`
|
||
|
// LabelSelectorPath defines the JSON path inside of a CustomResource that corresponds to Scale.Status.Selector.
|
||
|
// Only JSON paths without the array notation are allowed.
|
||
|
// Must be a JSON Path under .status.
|
||
|
// Must be set to work with HPA.
|
||
|
// If there is no value under the given path in the CustomResource, the status label selector value in the /scale
|
||
|
// subresource will default to the empty string.
|
||
|
// +optional
|
||
|
LabelSelectorPath *string `json:"labelSelectorPath,omitempty" protobuf:"bytes,3,opt,name=labelSelectorPath"`
|
||
|
}
|
||
|
|
||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||
|
|
||
|
// ConversionReview describes a conversion request/response.
|
||
|
type ConversionReview struct {
|
||
|
metav1.TypeMeta `json:",inline"`
|
||
|
// `request` describes the attributes for the conversion request.
|
||
|
// +optional
|
||
|
Request *ConversionRequest `json:"request,omitempty" protobuf:"bytes,1,opt,name=request"`
|
||
|
// `response` describes the attributes for the conversion response.
|
||
|
// +optional
|
||
|
Response *ConversionResponse `json:"response,omitempty" protobuf:"bytes,2,opt,name=response"`
|
||
|
}
|
||
|
|
||
|
// ConversionRequest describes the conversion request parameters.
|
||
|
type ConversionRequest struct {
|
||
|
// `uid` is an identifier for the individual request/response. It allows us to distinguish instances of requests which are
|
||
|
// otherwise identical (parallel requests, requests when earlier requests did not modify etc)
|
||
|
// The UID is meant to track the round trip (request/response) between the KAS and the WebHook, not the user request.
|
||
|
// It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
|
||
|
UID types.UID `json:"uid" protobuf:"bytes,1,name=uid"`
|
||
|
// `desiredAPIVersion` is the version to convert given objects to. e.g. "myapi.example.com/v1"
|
||
|
DesiredAPIVersion string `json:"desiredAPIVersion" protobuf:"bytes,2,name=desiredAPIVersion"`
|
||
|
// `objects` is the list of CR objects to be converted.
|
||
|
Objects []runtime.RawExtension `json:"objects" protobuf:"bytes,3,rep,name=objects"`
|
||
|
}
|
||
|
|
||
|
// ConversionResponse describes a conversion response.
|
||
|
type ConversionResponse struct {
|
||
|
// `uid` is an identifier for the individual request/response.
|
||
|
// This should be copied over from the corresponding AdmissionRequest.
|
||
|
UID types.UID `json:"uid" protobuf:"bytes,1,name=uid"`
|
||
|
// `convertedObjects` is the list of converted version of `request.objects` if the `result` is successful otherwise empty.
|
||
|
// The webhook is expected to set apiVersion of these objects to the ConversionRequest.desiredAPIVersion. The list
|
||
|
// must also has the same size as input list with the same objects in the same order(i.e. equal UIDs and object meta)
|
||
|
ConvertedObjects []runtime.RawExtension `json:"convertedObjects" protobuf:"bytes,2,rep,name=convertedObjects"`
|
||
|
// `result` contains the result of conversion with extra details if the conversion failed. `result.status` determines if
|
||
|
// the conversion failed or succeeded. The `result.status` field is required and represent the success or failure of the
|
||
|
// conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
|
||
|
// `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
|
||
|
// will be used to construct an error message for the end user.
|
||
|
Result metav1.Status `json:"result" protobuf:"bytes,3,name=result"`
|
||
|
}
|