Documentation
¶
Overview ¶
+kubebuilder:object:generate=true +groupName=clusters.openmcp.cloud
Index ¶
- Constants
- Variables
- type AccessRequest
- type AccessRequestList
- type AccessRequestSpec
- type AccessRequestStatus
- type Cluster
- type ClusterList
- type ClusterProfile
- type ClusterProfileList
- type ClusterProfileSpec
- type ClusterRequest
- type ClusterRequestList
- type ClusterRequestSpec
- type ClusterRequestStatus
- type ClusterSpec
- type ClusterStatus
- type K8sConfiguration
- type PermissionsRequest
- type SupportedK8sVersion
- type Tenancy
Constants ¶
const ( // AccessRequestPending is the phase if the AccessRequest has not been scheduled yet. AccessRequestPending = "Pending" // AccessRequestGranted is the phase if the AccessRequest has been granted. AccessRequestGranted = "Granted" )
const ( // CLUSTER_PHASE_UNKNOWN represents an unknown status for the cluster. CLUSTER_PHASE_UNKNOWN string = "Unknown" // CLUSTER_PHASE_READY represents a cluster that is ready. CLUSTER_PHASE_READY string = "Ready" // CLUSTER_PHASE_NOT_READY represents a cluster that is not ready. CLUSTER_PHASE_NOT_READY string = "Not Ready" // CLUSTER_PHASE_ERROR represents a cluster that could not be reconciled successfully. CLUSTER_PHASE_ERROR string = "Error" // CLUSTER_PHASE_DELETING represents a cluster that is being deleted. CLUSTER_PHASE_DELETING string = "In Deletion" // CLUSTER_PHASE_DELETING_ERROR represents a cluster that could not be reconciled successfully while being in deletion. CLUSTER_PHASE_DELETING_ERROR string = "Error In Deletion" )
const ( // ClusterRequestPending is the phase if the ClusterRequest has not been scheduled yet. ClusterRequestPending = "Pending" // ClusterRequestScheduled is the phase if the ClusterRequest has been scheduled. ClusterRequestScheduled = "Scheduled" )
const ( // PURPOSE_PLATFORM means platform controllers will run on the cluster. PURPOSE_PLATFORM = "platform" // PURPOSE_WORKLOAD means workload controllers will run on the cluster. PURPOSE_WORKLOAD = "workload" // PURPOSE_ONBOARDING means the cluster is used for onboarding resources. // Onboarding clusters can be workerless. PURPOSE_ONBOARDING = "onboarding" // PURPOSE_MCP means the cluster is used as an MCP cluster. // MCP clusters can be workerless. PURPOSE_MCP = "mcp" )
const ( // PHASE_UNKNOWN represents an unknown phase for the cluster. PHASE_UNKNOWN string = "Unknown" // PHASE_PROGRESSING indicates that the cluster is being created or updated. PHASE_PROGRESSING string = "Progressing" // PHASE_SUCCEEDED indicates that the cluster is ready. PHASE_SUCCEEDED string = "Succeeded" // PHASE_FAILED indicates that an error occurred while creating or updating the cluster. PHASE_FAILED string = "Failed" // PHASE_DELETING indicates that the cluster is being deleted. PHASE_DELETING string = "Deleting" // PHASE_DELETION_FAILED indicates that an error occurred while deleting the cluster. PHASE_DELETION_FAILED string = "DeletionFailed" )
const ( // REQUEST_PENDING indicates that the request has neither been granted nor denied yet. REQUEST_PENDING string = "Pending" // REQUEST_GRANTED indicates that the request has been granted. REQUEST_GRANTED string = "Granted" // REQUEST_DENIED indicates that the request has been denied. REQUEST_DENIED string = "Denied" )
const ( // K8sVersionLabel can be used to display the k8s version of the cluster. // This is useful since the cluster spec can contain only a partial version (e.g. "1.23") or no version at all, so the actual version can not be determined from the spec alone. // The responsible ClusterProvider has to set this label. K8sVersionLabel = GroupName + "/k8sversion" // ProviderInfoAnnotation can be used to display provider-specific information about the cluster. // The responsible ClusterProvider can set this annotation to display additional information about the cluster. // The value will be shown in a column when 'kubectl get clusters -o wide' is used. ProviderInfoAnnotation = GroupName + "/providerinfo" // ProviderLabel can be used to display the provider of the cluster. // It is also used to indicate the provider that is responsible for an AccessRequest. // For clusters, the responsible ClusterProvider has to set this label. // For AccessRequests, the generic controller that is part of the openMCP Operator sets it. ProviderLabel = GroupName + "/provider" // DeleteWithoutRequestsLabel marks that the corresponding cluster can be deleted if the scheduler removes the last request pointing to it. // Its value must be "true" for the label to take effect. DeleteWithoutRequestsLabel = GroupName + "/delete-without-requests" // ProfileLabel is used to make the profile information easily accessible on AccessRequests. ProfileLabel = GroupName + "/profile" )
const ( // ClusterRequestFinalizer is the finalizer used on ClusterRequest resources ClusterRequestFinalizer = GroupName + "/request" // RequestFinalizerOnClusterPrefix is the prefix for the finalizers that mark a Cluster as being referenced by a ClusterRequest. RequestFinalizerOnClusterPrefix = "request." + GroupName + "/" )
const GroupName = "clusters." + apiconst.OpenMCPGroupName
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type AccessRequest ¶
type AccessRequest struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec AccessRequestSpec `json:"spec,omitempty"` Status AccessRequestStatus `json:"status,omitempty"` }
AccessRequest is the Schema for the accessrequests API
func (*AccessRequest) DeepCopy ¶
func (in *AccessRequest) DeepCopy() *AccessRequest
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessRequest.
func (*AccessRequest) DeepCopyInto ¶
func (in *AccessRequest) DeepCopyInto(out *AccessRequest)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AccessRequest) DeepCopyObject ¶
func (in *AccessRequest) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AccessRequestList ¶
type AccessRequestList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []AccessRequest `json:"items"` }
AccessRequestList contains a list of AccessRequest
func (*AccessRequestList) DeepCopy ¶
func (in *AccessRequestList) DeepCopy() *AccessRequestList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessRequestList.
func (*AccessRequestList) DeepCopyInto ¶
func (in *AccessRequestList) DeepCopyInto(out *AccessRequestList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AccessRequestList) DeepCopyObject ¶
func (in *AccessRequestList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AccessRequestSpec ¶
type AccessRequestSpec struct { // ClusterRef is the reference to the Cluster for which access is requested. // If set, requestRef will be ignored. // This value is immutable. // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="clusterRef is immutable" // +optional ClusterRef *commonapi.ObjectReference `json:"clusterRef,omitempty"` // RequestRef is the reference to the ClusterRequest for whose Cluster access is requested. // Is ignored if clusterRef is set. // This value is immutable. // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="requestRef is immutable" // +optional RequestRef *commonapi.ObjectReference `json:"requestRef,omitempty"` // Permissions are the requested permissions. Permissions []PermissionsRequest `json:"permissions"` }
+kubebuilder:validation:XValidation:rule="!has(oldSelf.clusterRef) || has(self.clusterRef)", message="clusterRef may not be removed once set" +kubebuilder:validation:XValidation:rule="!has(oldSelf.requestRef) || has(self.requestRef)", message="requestRef may not be removed once set"
func (*AccessRequestSpec) DeepCopy ¶
func (in *AccessRequestSpec) DeepCopy() *AccessRequestSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessRequestSpec.
func (*AccessRequestSpec) DeepCopyInto ¶
func (in *AccessRequestSpec) DeepCopyInto(out *AccessRequestSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AccessRequestStatus ¶
type AccessRequestStatus struct { commonapi.Status `json:",inline"` // SecretRef holds the reference to the secret that contains the actual credentials. SecretRef *commonapi.ObjectReference `json:"secretRef,omitempty"` }
AccessRequestStatus defines the observed state of AccessRequest
func (*AccessRequestStatus) DeepCopy ¶
func (in *AccessRequestStatus) DeepCopy() *AccessRequestStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessRequestStatus.
func (*AccessRequestStatus) DeepCopyInto ¶
func (in *AccessRequestStatus) DeepCopyInto(out *AccessRequestStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (AccessRequestStatus) IsDenied ¶ added in v0.9.0
func (ars AccessRequestStatus) IsDenied() bool
func (AccessRequestStatus) IsGranted ¶ added in v0.9.0
func (ars AccessRequestStatus) IsGranted() bool
func (AccessRequestStatus) IsPending ¶ added in v0.9.0
func (ars AccessRequestStatus) IsPending() bool
type Cluster ¶
type Cluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec ClusterSpec `json:"spec,omitempty"` Status ClusterStatus `json:"status,omitempty"` }
Cluster is the Schema for the clusters API
func (*Cluster) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
func (*Cluster) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Cluster) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Cluster) GetRequestUIDs ¶ added in v0.4.0
GetRequestUIDs returns the UIDs of all ClusterRequests that have marked this cluster with a corresponding finalizer.
func (*Cluster) GetTenancyCount ¶
GetTenancyCount returns the number of ClusterRequests currently pointing to this cluster. This is determined by counting the finalizers that have the corresponding prefix. Note that only unique finalizers are counted, so if there are multiple identical request finalizers (which should not happen), this method's return value might not match the actual number of finalizers with the prefix.
type ClusterList ¶
type ClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []Cluster `json:"items"` }
ClusterList contains a list of Cluster
func (*ClusterList) DeepCopy ¶
func (in *ClusterList) DeepCopy() *ClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
func (*ClusterList) DeepCopyInto ¶
func (in *ClusterList) DeepCopyInto(out *ClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterList) DeepCopyObject ¶
func (in *ClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterProfile ¶
type ClusterProfile struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec ClusterProfileSpec `json:"spec,omitempty"` }
func (*ClusterProfile) DeepCopy ¶
func (in *ClusterProfile) DeepCopy() *ClusterProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfile.
func (*ClusterProfile) DeepCopyInto ¶
func (in *ClusterProfile) DeepCopyInto(out *ClusterProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterProfile) DeepCopyObject ¶
func (in *ClusterProfile) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterProfileList ¶
type ClusterProfileList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []ClusterProfile `json:"items"` }
func (*ClusterProfileList) DeepCopy ¶
func (in *ClusterProfileList) DeepCopy() *ClusterProfileList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileList.
func (*ClusterProfileList) DeepCopyInto ¶
func (in *ClusterProfileList) DeepCopyInto(out *ClusterProfileList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterProfileList) DeepCopyObject ¶
func (in *ClusterProfileList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterProfileSpec ¶
type ClusterProfileSpec struct { // ProviderRef is a reference to the ClusterProvider ProviderRef commonapi.ObjectReference `json:"providerRef"` // ProviderConfigRef is a reference to the provider-specific configuration. ProviderConfigRef commonapi.ObjectReference `json:"providerConfigRef"` // SupportedVersions are the supported Kubernetes versions. SupportedVersions []SupportedK8sVersion `json:"supportedVersions"` }
ClusterProfileSpec defines the desired state of Provider.
func (*ClusterProfileSpec) DeepCopy ¶
func (in *ClusterProfileSpec) DeepCopy() *ClusterProfileSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterProfileSpec.
func (*ClusterProfileSpec) DeepCopyInto ¶
func (in *ClusterProfileSpec) DeepCopyInto(out *ClusterProfileSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterRequest ¶
type ClusterRequest struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec ClusterRequestSpec `json:"spec,omitempty"` Status ClusterRequestStatus `json:"status,omitempty"` }
ClusterRequest is the Schema for the clusters API
func (*ClusterRequest) DeepCopy ¶
func (in *ClusterRequest) DeepCopy() *ClusterRequest
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRequest.
func (*ClusterRequest) DeepCopyInto ¶
func (in *ClusterRequest) DeepCopyInto(out *ClusterRequest)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterRequest) DeepCopyObject ¶
func (in *ClusterRequest) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterRequest) FinalizerForCluster ¶
func (cr *ClusterRequest) FinalizerForCluster() string
FinalizerForCluster returns the finalizer that is used to mark that a specific request has pointed to a specific cluster. Apart from preventing the Cluster's deletion, this information is used to recover the Cluster if the status of the ClusterRequest ever gets lost.
type ClusterRequestList ¶
type ClusterRequestList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []Cluster `json:"items"` }
ClusterRequestList contains a list of Cluster
func (*ClusterRequestList) DeepCopy ¶
func (in *ClusterRequestList) DeepCopy() *ClusterRequestList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRequestList.
func (*ClusterRequestList) DeepCopyInto ¶
func (in *ClusterRequestList) DeepCopyInto(out *ClusterRequestList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterRequestList) DeepCopyObject ¶
func (in *ClusterRequestList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterRequestSpec ¶
type ClusterRequestSpec struct { // Purpose is the purpose of the requested cluster. // +kubebuilder:validation:MinLength=1 Purpose string `json:"purpose"` // WaitForClusterDeletion specifies whether the ClusterProvider should remove its finalizer from the ClusterRequest only after the corresponding Cluster has been deleted. // 'true' means that the finalizer stays until the Cluster is gone, 'false' means that the finalizer can be removed before the Cluster has been deleted. // If not specified, this defaults to 'true' if the cluster's tenancy is 'Exclusive' and to 'false' otherwise. // Note that the delayed finalizer removal only occurs if the deletion of the ClusterRequest actually triggers the deletion of the Cluster. // If the cluster is shared with further ClusterRequests using it or if it does not have the 'clusters.openmcp.cloud/delete-without-requests' label set to 'true', // the finalizer will be removed without waiting for the Cluster deletion, independently of this setting. // +optional WaitForClusterDeletion *bool `json:"waitForClusterDeletion,omitempty"` }
+kubebuilder:validation:XValidation:rule="self == oldSelf",message="spec is immutable"
func (*ClusterRequestSpec) DeepCopy ¶
func (in *ClusterRequestSpec) DeepCopy() *ClusterRequestSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRequestSpec.
func (*ClusterRequestSpec) DeepCopyInto ¶
func (in *ClusterRequestSpec) DeepCopyInto(out *ClusterRequestSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterRequestStatus ¶
type ClusterRequestStatus struct { commonapi.Status `json:",inline"` // Cluster is the reference to the Cluster that was returned as a result of a granted request. // Note that this information needs to be recoverable in case this status is lost, e.g. by adding a back reference in form of a finalizer to the Cluster resource. // +optional // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="cluster is immutable" Cluster *commonapi.ObjectReference `json:"cluster,omitempty"` }
+kubebuilder:validation:XValidation:rule="!has(oldSelf.cluster) || has(self.cluster)", message="cluster may not be removed once set"
func (*ClusterRequestStatus) DeepCopy ¶
func (in *ClusterRequestStatus) DeepCopy() *ClusterRequestStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRequestStatus.
func (*ClusterRequestStatus) DeepCopyInto ¶
func (in *ClusterRequestStatus) DeepCopyInto(out *ClusterRequestStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ClusterRequestStatus) IsDenied ¶ added in v0.9.0
func (crs ClusterRequestStatus) IsDenied() bool
func (ClusterRequestStatus) IsGranted ¶ added in v0.9.0
func (crs ClusterRequestStatus) IsGranted() bool
func (ClusterRequestStatus) IsPending ¶ added in v0.9.0
func (crs ClusterRequestStatus) IsPending() bool
type ClusterSpec ¶
type ClusterSpec struct { // Profile is a reference to the cluster provider. // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="profile is immutable" Profile string `json:"profile"` // ClusterConfigs allows to reference any amount of provider-specific cluster configuration objects. // The k8s resource kind that is referenced by this depends on the provider (which is defined by the profile). // +optional ClusterConfigs []commonapi.LocalObjectReference `json:"clusterConfigs,omitempty"` // Kubernetes configuration for the cluster. Kubernetes K8sConfiguration `json:"kubernetes,omitempty"` // Purposes lists the purposes this cluster is intended for. // +kubebuilder:validation:MinItems=1 Purposes []string `json:"purposes,omitempty"` // Tenancy is the tenancy model of the cluster. // +kubebuilder:validation:Enum=Exclusive;Shared Tenancy Tenancy `json:"tenancy"` }
ClusterSpec defines the desired state of Cluster
func (*ClusterSpec) DeepCopy ¶
func (in *ClusterSpec) DeepCopy() *ClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
func (*ClusterSpec) DeepCopyInto ¶
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterStatus ¶
type ClusterStatus struct { commonapi.Status `json:",inline"` // APIServer is the API server endpoint of the cluster. // +optional APIServer string `json:"apiServer,omitempty"` // ProviderStatus is the provider-specific status of the cluster. // x-kubernetes-preserve-unknown-fields: true // +optional ProviderStatus *runtime.RawExtension `json:"providerStatus,omitempty"` }
ClusterStatus defines the observed state of Cluster
func (*ClusterStatus) DeepCopy ¶
func (in *ClusterStatus) DeepCopy() *ClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
func (*ClusterStatus) DeepCopyInto ¶
func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterStatus) GetProviderStatus ¶
func (cs *ClusterStatus) GetProviderStatus(into any) error
GetProviderStatus tries to unmarshal the provider status into the given variable.
func (*ClusterStatus) SetProviderStatus ¶
func (cs *ClusterStatus) SetProviderStatus(from any) error
SetProviderStatus marshals the given variable into the provider status.
type K8sConfiguration ¶
type K8sConfiguration struct { // Version is the k8s version of the cluster. Version string `json:"version,omitempty"` }
func (*K8sConfiguration) DeepCopy ¶
func (in *K8sConfiguration) DeepCopy() *K8sConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new K8sConfiguration.
func (*K8sConfiguration) DeepCopyInto ¶
func (in *K8sConfiguration) DeepCopyInto(out *K8sConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PermissionsRequest ¶
type PermissionsRequest struct { // Namespace is the namespace for which the permissions are requested. // If empty, this will result in a ClusterRole, otherwise in a Role in the respective namespace. // Note that for a Role, the namespace needs to either exist or a permission to create it must be included in the requested permissions (it will be created automatically then), otherwise the request will be rejected. // +optional Namespace string `json:"namespace,omitempty"` // Rules are the requested RBAC rules. Rules []rbacv1.PolicyRule `json:"rules"` }
func (*PermissionsRequest) DeepCopy ¶
func (in *PermissionsRequest) DeepCopy() *PermissionsRequest
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PermissionsRequest.
func (*PermissionsRequest) DeepCopyInto ¶
func (in *PermissionsRequest) DeepCopyInto(out *PermissionsRequest)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SupportedK8sVersion ¶
type SupportedK8sVersion struct { // Version is the Kubernetes version. // +kubebuilder:validation:MinLength=5 Version string `json:"version"` // Deprecated indicates whether this version is deprecated. Deprecated bool `json:"deprecated,omitempty"` }
func (*SupportedK8sVersion) DeepCopy ¶
func (in *SupportedK8sVersion) DeepCopy() *SupportedK8sVersion
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SupportedK8sVersion.
func (*SupportedK8sVersion) DeepCopyInto ¶
func (in *SupportedK8sVersion) DeepCopyInto(out *SupportedK8sVersion)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.