v1alpha1

package
v1.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 30, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const GroupName = "operator.karmada.io"

GroupName specifies the group name used to register the objects.

Variables

View Source
var (
	// SchemeBuilder will stay in k8s.io/kubernetes.
	SchemeBuilder runtime.SchemeBuilder

	// AddToScheme applies all the stored functions to the scheme
	AddToScheme = localSchemeBuilder.AddToScheme
)
View Source
var (
	// DefaultKarmadaImageVersion defines the default of the karmada components image tag
	DefaultKarmadaImageVersion string
)
View Source
var GroupVersion = v1.GroupVersion{Group: GroupName, Version: "v1alpha1"}

GroupVersion specifies the group and the version used to register the objects.

View Source
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

SchemeGroupVersion is group version used to register these objects Deprecated: use GroupVersion instead.

Functions

func KarmadaCompleted added in v1.7.0

func KarmadaCompleted(karmada *Karmada, conditionType ConditionType, message string)

KarmadaCompleted sets the Karmada condition to Completed.

func KarmadaFailed added in v1.7.0

func KarmadaFailed(karmada *Karmada, conditionType ConditionType, message string)

KarmadaFailed sets the Karmada condition to Failed.

func KarmadaInProgressing added in v1.7.0

func KarmadaInProgressing(karmada *Karmada, conditionType ConditionType, message string)

KarmadaInProgressing sets the Karmada condition to Progressing.

func RegisterDefaults added in v1.6.0

func RegisterDefaults(scheme *runtime.Scheme) error

RegisterDefaults adds defaulters functions to the given scheme. Public to allow building arbitrary schemes. All generated defaulters are covering - they call all nested defaulters.

func Resource

func Resource(resource string) schema.GroupResource

Resource takes an unqualified resource and returns a Group qualified GroupResource

func SetObjectDefaultsKarmada added in v1.6.0

func SetObjectDefaultsKarmada(in *Karmada)

SetObjectDefaultsKarmada set defaults for karmada

Types

type APIServerService added in v1.12.0

type APIServerService struct {
	// Name represents the name of the Karmada API Server service.
	// +required
	Name string `json:"name"`
}

APIServerService tells the location of Karmada API server service. Currently, it only includes the name of the service. The namespace of the service is the same as the namespace of the current Karmada object.

func (*APIServerService) DeepCopy added in v1.12.0

func (in *APIServerService) DeepCopy() *APIServerService

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIServerService.

func (*APIServerService) DeepCopyInto added in v1.12.0

func (in *APIServerService) DeepCopyInto(out *APIServerService)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CRDDownloadPolicy added in v1.11.0

type CRDDownloadPolicy string

CRDDownloadPolicy specifies a policy for how the operator will download the Karmada CRD tarball

const (
	// DownloadAlways instructs the Karmada operator to always download the CRD tarball from a remote location.
	DownloadAlways CRDDownloadPolicy = "Always"

	// DownloadIfNotPresent instructs the Karmada operator to download the CRDs tarball from a remote location only if it is not yet present in the local cache.
	DownloadIfNotPresent CRDDownloadPolicy = "IfNotPresent"
)

type CRDTarball added in v1.11.0

type CRDTarball struct {
	// HTTPSource specifies how to download the CRD tarball via either HTTP or HTTPS protocol.
	// +optional
	HTTPSource *HTTPSource `json:"httpSource,omitempty"`

	// CRDDownloadPolicy specifies a policy that should be used to download the CRD tarball.
	// Valid values are "Always" and "IfNotPresent".
	// Defaults to "IfNotPresent".
	// +kubebuilder:validation:Enum=Always;IfNotPresent
	// +kubebuilder:default=IfNotPresent
	// +optional
	CRDDownloadPolicy *CRDDownloadPolicy `json:"crdDownloadPolicy,omitempty"`
}

CRDTarball specifies the source from which the Karmada CRD tarball should be downloaded, along with the download policy to use.

func (*CRDTarball) DeepCopy added in v1.11.0

func (in *CRDTarball) DeepCopy() *CRDTarball

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CRDTarball.

func (*CRDTarball) DeepCopyInto added in v1.11.0

func (in *CRDTarball) DeepCopyInto(out *CRDTarball)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CommonSettings

type CommonSettings struct {
	// Image allows to customize the image used for the component.
	Image `json:",inline"`

	// ImagePullPolicy defines the policy for pulling the container image.
	// If not specified, it defaults to IfNotPresent.
	// +optional
	ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`

	// Number of desired pods. This is a pointer to distinguish between explicit
	// zero and not specified. Defaults to 1.
	// +optional
	Replicas *int32 `json:"replicas,omitempty"`

	// Map of string keys and values that can be used to organize and categorize
	// (scope and select) objects. May match selectors of replication controllers
	// and services.
	// More info: http://kubernetes.io/docs/user-guide/labels
	// +optional
	Labels map[string]string `json:"labels,omitempty"`

	// Annotations is an unstructured key value map stored with a resource that may be
	// set by external tools to store and retrieve arbitrary metadata. They are not
	// queryable and should be preserved when modifying objects.
	// More info: http://kubernetes.io/docs/user-guide/annotations
	// +optional
	Annotations map[string]string `json:"annotations,omitempty"`

	// Compute Resources required by this component.
	// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
	// +optional
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`
}

CommonSettings describes the common settings of all karmada Components.

func (*CommonSettings) DeepCopy

func (in *CommonSettings) DeepCopy() *CommonSettings

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonSettings.

func (*CommonSettings) DeepCopyInto

func (in *CommonSettings) DeepCopyInto(out *CommonSettings)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConditionType

type ConditionType string

ConditionType declarative karmada condition type of karmada installation.

const (
	// Ready represent a condition type the all installation process to karmada have completed.
	Ready ConditionType = "Ready"
)

type CustomCertificate added in v1.12.0

type CustomCertificate struct {
	// APIServerCACert references a Kubernetes secret containing the CA certificate
	// for component karmada-apiserver.
	// The secret must contain the following data keys:
	// - tls.crt: The TLS certificate.
	// - tls.key: The TLS private key.
	// If specified, this CA will be used to issue client certificates for
	// all components that access the APIServer as clients.
	// +optional
	APIServerCACert *LocalSecretReference `json:"apiServerCACert,omitempty"`
}

CustomCertificate holds the configuration for generating the certificate.

func (*CustomCertificate) DeepCopy added in v1.12.0

func (in *CustomCertificate) DeepCopy() *CustomCertificate

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCertificate.

func (*CustomCertificate) DeepCopyInto added in v1.12.0

func (in *CustomCertificate) DeepCopyInto(out *CustomCertificate)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Etcd

type Etcd struct {
	// Local provides configuration knobs for configuring the built-in etcd instance
	// Local and External are mutually exclusive
	// +optional
	Local *LocalEtcd `json:"local,omitempty"`

	// External describes how to connect to an external etcd cluster
	// Local and External are mutually exclusive
	// +optional
	External *ExternalEtcd `json:"external,omitempty"`
}

Etcd contains elements describing Etcd configuration.

func (*Etcd) DeepCopy

func (in *Etcd) DeepCopy() *Etcd

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Etcd.

func (*Etcd) DeepCopyInto

func (in *Etcd) DeepCopyInto(out *Etcd)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalEtcd

type ExternalEtcd struct {
	// Endpoints of etcd members. Required for ExternalEtcd.
	// +required
	Endpoints []string `json:"endpoints"`

	// CAData is an SSL Certificate Authority file used to secure etcd communication.
	// Required if using a TLS connection.
	// Deprecated: This field is deprecated and will be removed in a future version. Use SecretRef for providing client connection credentials.
	CAData []byte `json:"caData,omitempty"`

	// CertData is an SSL certification file used to secure etcd communication.
	// Required if using a TLS connection.
	// Deprecated: This field is deprecated and will be removed in a future version. Use SecretRef for providing client connection credentials.
	CertData []byte `json:"certData,omitempty"`

	// KeyData is an SSL key file used to secure etcd communication.
	// Required if using a TLS connection.
	// Deprecated: This field is deprecated and will be removed in a future version. Use SecretRef for providing client connection credentials.
	KeyData []byte `json:"keyData,omitempty"`

	// SecretRef references a Kubernetes secret containing the etcd connection credentials.
	// The secret must contain the following data keys:
	// ca.crt: The Certificate Authority (CA) certificate data.
	// tls.crt: The TLS certificate data used for verifying the etcd server's certificate.
	// tls.key: The TLS private key.
	// Required to configure the connection to an external etcd cluster.
	// +required
	SecretRef LocalSecretReference `json:"secretRef"`
}

ExternalEtcd describes an external etcd cluster. operator has no knowledge of where certificate files live, and they must be supplied.

func (*ExternalEtcd) DeepCopy

func (in *ExternalEtcd) DeepCopy() *ExternalEtcd

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalEtcd.

func (*ExternalEtcd) DeepCopyInto

func (in *ExternalEtcd) DeepCopyInto(out *ExternalEtcd)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HTTPSource added in v1.11.0

type HTTPSource struct {
	// URL specifies the URL of the CRD tarball resource.
	URL string `json:"url,omitempty"`
}

HTTPSource specifies how to download the CRD tarball via either HTTP or HTTPS protocol.

func (*HTTPSource) DeepCopy added in v1.11.0

func (in *HTTPSource) DeepCopy() *HTTPSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPSource.

func (*HTTPSource) DeepCopyInto added in v1.11.0

func (in *HTTPSource) DeepCopyInto(out *HTTPSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HostCluster

type HostCluster struct {
	// APIEndpoint is the API endpoint of the cluster where deploy Karmada
	// control plane on.
	// This can be a hostname, hostname:port, IP or IP:port.
	// +optional
	APIEndpoint string `json:"apiEndpoint,omitempty"`

	// SecretRef represents the secret contains mandatory credentials to
	// access the cluster.
	// The secret should hold credentials as follows:
	// - secret.data.token
	// - secret.data.caBundle
	// +optional
	SecretRef *LocalSecretReference `json:"secretRef,omitempty"`

	// Networking holds configuration for the networking topology of the cluster.
	// +optional
	Networking *Networking `json:"networking,omitempty"`
}

HostCluster represents the cluster where to install the Karmada control plane.

func (*HostCluster) DeepCopy

func (in *HostCluster) DeepCopy() *HostCluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostCluster.

func (*HostCluster) DeepCopyInto

func (in *HostCluster) DeepCopyInto(out *HostCluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Image

type Image struct {
	// ImageRepository sets the container registry to pull images from.
	// if not set, the ImageRepository defined in KarmadaSpec will be used instead.
	// +optional
	ImageRepository string `json:"imageRepository,omitempty"`

	// ImageTag allows to specify a tag for the image.
	// In case this value is set, operator does not change automatically the version
	// of the above components during upgrades.
	// +optional
	ImageTag string `json:"imageTag,omitempty"`
}

Image allows to customize the image used for components.

func (*Image) DeepCopy

func (in *Image) DeepCopy() *Image

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Image.

func (*Image) DeepCopyInto

func (in *Image) DeepCopyInto(out *Image)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Image) Name added in v1.6.0

func (image *Image) Name() string

Name returns the image name.

type ImageRegistry

type ImageRegistry struct {
	// Registry is the image registry hostname, like:
	// - docker.io
	// - fictional.registry.example
	// +required
	Registry string `json:"registry"`
}

ImageRegistry represents an image registry as well as the necessary credentials to access with. Note: Postpone define the credentials to the next release.

func (*ImageRegistry) DeepCopy

func (in *ImageRegistry) DeepCopy() *ImageRegistry

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageRegistry.

func (*ImageRegistry) DeepCopyInto

func (in *ImageRegistry) DeepCopyInto(out *ImageRegistry)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Karmada

type Karmada struct {
	metav1.TypeMeta `json:",inline"`

	// Standard object's metadata.
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec defines the desired behavior of the Karmada.
	// +optional
	Spec KarmadaSpec `json:"spec,omitempty"`

	// Most recently observed status of the Karmada.
	// +optional
	Status KarmadaStatus `json:"status,omitempty"`
}

Karmada enables declarative installation of karmada.

func (*Karmada) DeepCopy

func (in *Karmada) DeepCopy() *Karmada

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Karmada.

func (*Karmada) DeepCopyInto

func (in *Karmada) DeepCopyInto(out *Karmada)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Karmada) DeepCopyObject

func (in *Karmada) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type KarmadaAPIServer

type KarmadaAPIServer struct {
	// CommonSettings holds common settings to kubernetes api server.
	CommonSettings `json:",inline"`

	// ServiceSubnet is the subnet used by k8s services. Defaults to "10.96.0.0/12".
	// +optional
	ServiceSubnet *string `json:"serviceSubnet,omitempty"`

	// ServiceType represents the service type of Karmada API server.
	// Valid options are: "ClusterIP", "NodePort", "LoadBalancer".
	// Defaults to "ClusterIP".
	//
	// +kubebuilder:default="ClusterIP"
	// +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
	// +optional
	ServiceType corev1.ServiceType `json:"serviceType,omitempty"`

	// ServiceAnnotations is an extra set of annotations for service of karmada apiserver.
	// more info: https://github.com/karmada-io/karmada/issues/4634
	// +optional
	ServiceAnnotations map[string]string `json:"serviceAnnotations,omitempty"`

	// ExtraArgs is an extra set of flags to pass to the kube-apiserver component or
	// override. A key in this map is the flag name as it appears on the command line except
	// without leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the
	// kube-apiserver component. In the future, we will provide a more structured way
	// to configure the component. Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`

	// ExtraVolumes specifies a list of extra volumes for the API server's pod
	// To fulfil the base functionality required for a functioning control plane, when provisioning a new Karmada instance,
	// the operator will automatically attach volumes for the API server pod needed to configure things such as TLS,
	// SA token issuance/signing and secured connection to etcd, amongst others. However, given the wealth of options for configurability,
	// there are additional features (e.g., encryption at rest and custom AuthN webhook) that can be configured. ExtraVolumes, in conjunction
	// with ExtraArgs and ExtraVolumeMounts can be used to fulfil those use cases.
	// +optional
	ExtraVolumes []corev1.Volume `json:"extraVolumes,omitempty"`

	// ExtraVolumeMounts specifies a list of extra volume mounts to be mounted into the API server's container
	// To fulfil the base functionality required for a functioning control plane, when provisioning a new Karmada instance,
	// the operator will automatically mount volumes into the API server container needed to configure things such as TLS,
	// SA token issuance/signing and secured connection to etcd, amongst others. However, given the wealth of options for configurability,
	// there are additional features (e.g., encryption at rest and custom AuthN webhook) that can be configured. ExtraVolumeMounts, in conjunction
	// with ExtraArgs and ExtraVolumes can be used to fulfil those use cases.
	// +optional
	ExtraVolumeMounts []corev1.VolumeMount `json:"extraVolumeMounts,omitempty"`

	// CertSANs sets extra Subject Alternative Names for the API Server signing cert.
	// +optional
	CertSANs []string `json:"certSANs,omitempty"`

	// FeatureGates enabled by the user.
	// More info: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`
}

KarmadaAPIServer holds settings to kube-apiserver component of the kubernetes. Karmada uses it as its own apiserver in order to provide Kubernetes-native APIs.

func (*KarmadaAPIServer) DeepCopy

func (in *KarmadaAPIServer) DeepCopy() *KarmadaAPIServer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaAPIServer.

func (*KarmadaAPIServer) DeepCopyInto

func (in *KarmadaAPIServer) DeepCopyInto(out *KarmadaAPIServer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaAggregatedAPIServer added in v1.6.0

type KarmadaAggregatedAPIServer struct {
	// CommonSettings holds common settings to karmada apiServer.
	CommonSettings `json:",inline"`

	// ExtraArgs is an extra set of flags to pass to the karmada-aggregated-apiserver component or
	// override. A key in this map is the flag name as it appears on the command line except
	// without leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the
	// karmada-aggregated-apiserver component. In the future, we will provide a more structured way
	// to configure the component. Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-aggregated-apiserver
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`

	// CertSANs sets extra Subject Alternative Names for the API Server signing cert.
	// +optional
	CertSANs []string `json:"certSANs,omitempty"`

	// FeatureGates enabled by the user.
	// - CustomizedClusterResourceModeling: https://karmada.io/docs/userguide/scheduling/cluster-resources#start-to-use-cluster-resource-models
	// More info: https://github.com/karmada-io/karmada/blob/master/pkg/features/features.go
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`
}

KarmadaAggregatedAPIServer holds settings to karmada-aggregated-apiserver component of the karmada.

func (*KarmadaAggregatedAPIServer) DeepCopy added in v1.6.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaAggregatedAPIServer.

func (*KarmadaAggregatedAPIServer) DeepCopyInto added in v1.6.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaComponents

type KarmadaComponents struct {
	// Etcd holds configuration for etcd.
	// +required
	Etcd *Etcd `json:"etcd,omitempty"`

	// KarmadaAPIServer holds settings to kube-apiserver component. Currently, kube-apiserver
	// is used as the apiserver of karmada. we had the same experience as k8s apiserver.
	// +optional
	KarmadaAPIServer *KarmadaAPIServer `json:"karmadaAPIServer,omitempty"`

	// KarmadaAggregatedAPIServer holds settings to karmada-aggregated-apiserver component of the karmada.
	// +optional
	KarmadaAggregatedAPIServer *KarmadaAggregatedAPIServer `json:"karmadaAggregatedAPIServer,omitempty"`

	// KubeControllerManager holds settings to kube-controller-manager component of the karmada.
	// +optional
	KubeControllerManager *KubeControllerManager `json:"kubeControllerManager,omitempty"`

	// KarmadaControllerManager holds settings to karmada-controller-manager component of the karmada.
	// +optional
	KarmadaControllerManager *KarmadaControllerManager `json:"karmadaControllerManager,omitempty"`

	// KarmadaScheduler holds settings to karmada-scheduler component of the karmada.
	// +optional
	KarmadaScheduler *KarmadaScheduler `json:"karmadaScheduler,omitempty"`

	// KarmadaWebhook holds settings to karmada-webhook component of the karmada.
	// +optional
	KarmadaWebhook *KarmadaWebhook `json:"karmadaWebhook,omitempty"`

	// KarmadaDescheduler holds settings to karmada-descheduler component of the karmada.
	// +optional
	KarmadaDescheduler *KarmadaDescheduler `json:"karmadaDescheduler,omitempty"`

	// KarmadaSearch holds settings to karmada search component of the karmada.
	// +optional
	KarmadaSearch *KarmadaSearch `json:"karmadaSearch,omitempty"`

	// KarmadaMetricsAdapter holds settings to karmada metrics adapter component of the karmada.
	// +optional
	KarmadaMetricsAdapter *KarmadaMetricsAdapter `json:"karmadaMetricsAdapter,omitempty"`
}

KarmadaComponents define all of karmada components.

func (*KarmadaComponents) DeepCopy

func (in *KarmadaComponents) DeepCopy() *KarmadaComponents

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaComponents.

func (*KarmadaComponents) DeepCopyInto

func (in *KarmadaComponents) DeepCopyInto(out *KarmadaComponents)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaControllerManager

type KarmadaControllerManager struct {
	// CommonSettings holds common settings to karmada controller manager.
	CommonSettings `json:",inline"`

	// A list of controllers to enable. '*' enables all on-by-default controllers,
	// 'foo' enables the controller named 'foo', '-foo' disables the controller named
	// 'foo'.
	//
	// All controllers: binding, cluster, clusterStatus, endpointSlice, execution,
	// federatedResourceQuotaStatus, federatedResourceQuotaSync, hpa, namespace,
	// serviceExport, serviceImport, unifiedAuth, workStatus.
	// Disabled-by-default controllers: hpa (default [*])
	// Actual Supported controllers depend on the version of Karmada. See
	// https://karmada.io/docs/administrator/configuration/configure-controllers#configure-karmada-controllers
	// for details.
	//
	// +optional
	Controllers []string `json:"controllers,omitempty"`

	// ExtraArgs is an extra set of flags to pass to the karmada-controller-manager component or
	// override. A key in this map is the flag name as it appears on the command line except
	// without leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the
	// karmada-controller-manager component. In the future, we will provide a more structured way
	// to configure the component. Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-controller-manager
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`

	// FeatureGates enabled by the user.
	// - Failover: https://karmada.io/docs/userguide/failover/#failover
	// - GracefulEviction: https://karmada.io/docs/userguide/failover/#graceful-eviction-feature
	// - PropagateDeps: https://karmada.io/docs/userguide/scheduling/propagate-dependencies
	// - CustomizedClusterResourceModeling: https://karmada.io/docs/userguide/scheduling/cluster-resources#start-to-use-cluster-resource-models
	// More info: https://github.com/karmada-io/karmada/blob/master/pkg/features/features.go
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`
}

KarmadaControllerManager holds settings to the karmada-controller-manager component of the karmada.

func (*KarmadaControllerManager) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaControllerManager.

func (*KarmadaControllerManager) DeepCopyInto

func (in *KarmadaControllerManager) DeepCopyInto(out *KarmadaControllerManager)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaDescheduler

type KarmadaDescheduler struct {
	// CommonSettings holds common settings to karmada descheduler.
	CommonSettings `json:",inline"`

	// ExtraArgs is an extra set of flags to pass to the karmada-descheduler component or override.
	// A key in this map is the flag name as it appears on the command line except without
	// leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the karmada-descheduler
	// component. In the future, we will provide a more structured way to configure the component.
	// Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-descheduler
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`
}

KarmadaDescheduler holds settings to karmada-descheduler component of the karmada.

func (*KarmadaDescheduler) DeepCopy

func (in *KarmadaDescheduler) DeepCopy() *KarmadaDescheduler

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaDescheduler.

func (*KarmadaDescheduler) DeepCopyInto

func (in *KarmadaDescheduler) DeepCopyInto(out *KarmadaDescheduler)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaList

type KarmadaList struct {
	metav1.TypeMeta `json:",inline"`

	// +optional
	metav1.ListMeta `json:"metadata,omitempty"`

	Items []Karmada `json:"items"`
}

KarmadaList is a list of Karmadas.

func (*KarmadaList) DeepCopy

func (in *KarmadaList) DeepCopy() *KarmadaList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaList.

func (*KarmadaList) DeepCopyInto

func (in *KarmadaList) DeepCopyInto(out *KarmadaList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*KarmadaList) DeepCopyObject

func (in *KarmadaList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type KarmadaMetricsAdapter added in v1.7.0

type KarmadaMetricsAdapter struct {
	// CommonSettings holds common settings to karmada metrics adapter.
	CommonSettings `json:",inline"`

	// ExtraArgs is an extra set of flags to pass to the karmada-metrics-adapter component or override.
	// A key in this map is the flag name as it appears on the command line except without
	// leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the karmada-metrics-adapter
	// component. In the future, we will provide a more structured way to configure the component.
	// Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-metrics-adapter
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`
}

KarmadaMetricsAdapter holds settings to karmada-metrics-adapter component of the karmada.

func (*KarmadaMetricsAdapter) DeepCopy added in v1.7.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaMetricsAdapter.

func (*KarmadaMetricsAdapter) DeepCopyInto added in v1.7.0

func (in *KarmadaMetricsAdapter) DeepCopyInto(out *KarmadaMetricsAdapter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaScheduler

type KarmadaScheduler struct {
	// CommonSettings holds common settings to karmada scheduler.
	CommonSettings `json:",inline"`

	// ExtraArgs is an extra set of flags to pass to the karmada-scheduler component or override.
	// A key in this map is the flag name as it appears on the command line except without
	// leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the karmada-scheduler
	// component. In the future, we will provide a more structured way to configure the component.
	// Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-scheduler
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`

	// FeatureGates enabled by the user.
	// - CustomizedClusterResourceModeling: https://karmada.io/docs/userguide/scheduling/cluster-resources#start-to-use-cluster-resource-models
	// More info: https://github.com/karmada-io/karmada/blob/master/pkg/features/features.go
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`
}

KarmadaScheduler holds settings to karmada-scheduler component of the karmada.

func (*KarmadaScheduler) DeepCopy

func (in *KarmadaScheduler) DeepCopy() *KarmadaScheduler

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaScheduler.

func (*KarmadaScheduler) DeepCopyInto

func (in *KarmadaScheduler) DeepCopyInto(out *KarmadaScheduler)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaSearch

type KarmadaSearch struct {
	// CommonSettings holds common settings to karmada search.
	CommonSettings `json:",inline"`

	// ExtraArgs is an extra set of flags to pass to the karmada-search component or override.
	// A key in this map is the flag name as it appears on the command line except without
	// leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the karmada-search
	// component. In the future, we will provide a more structured way to configure the component.
	// Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-search
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`
}

KarmadaSearch holds settings to karmada-search component of the karmada.

func (*KarmadaSearch) DeepCopy

func (in *KarmadaSearch) DeepCopy() *KarmadaSearch

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaSearch.

func (*KarmadaSearch) DeepCopyInto

func (in *KarmadaSearch) DeepCopyInto(out *KarmadaSearch)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaSpec

type KarmadaSpec struct {
	// HostCluster represents the cluster where to install the Karmada control plane.
	// If not set, the control plane will be installed on the cluster where
	// running the operator.
	// +optional
	HostCluster *HostCluster `json:"hostCluster,omitempty"`

	// PrivateRegistry is the global image registry.
	// If set, the operator will pull all required images from it, no matter
	// the image is maintained by Karmada or Kubernetes.
	// It will be useful for offline installation to specify an accessible registry.
	// +optional
	PrivateRegistry *ImageRegistry `json:"privateRegistry,omitempty"`

	// Components define all of karmada components.
	// not all of these components need to be installed.
	// +optional
	Components *KarmadaComponents `json:"components,omitempty"`

	// FeatureGates enabled by the user.
	// - Failover: https://karmada.io/docs/userguide/failover/#failover
	// - GracefulEviction: https://karmada.io/docs/userguide/failover/#graceful-eviction-feature
	// - PropagateDeps: https://karmada.io/docs/userguide/scheduling/propagate-dependencies
	// - CustomizedClusterResourceModeling: https://karmada.io/docs/userguide/scheduling/cluster-resources#start-to-use-cluster-resource-models
	// More info: https://github.com/karmada-io/karmada/blob/master/pkg/features/features.go
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`

	// CRDTarball specifies the source from which the Karmada CRD tarball should be downloaded, along with the download policy to use.
	// If not set, the operator will download the tarball from a GitHub release.
	// By default, it will download the tarball of the same version as the operator itself.
	// For instance, if the operator's version is v1.10.0, the tarball will be downloaded from the following location:
	// https://github.com/karmada-io/karmada/releases/download/v1.10.0/crds.tar.gz
	// By default, the operator will only attempt to download the tarball if it's not yet present in the local cache.
	// +optional
	CRDTarball *CRDTarball `json:"crdTarball,omitempty"`

	// CustomCertificate specifies the configuration to customize the certificates
	// for Karmada components or control the certificate generation process, such as
	// the algorithm, validity period, etc.
	// Currently, it only supports customizing the CA certificate for limited components.
	// +optional
	CustomCertificate *CustomCertificate `json:"customCertificate,omitempty"`
}

KarmadaSpec is the specification of the desired behavior of the Karmada.

func (*KarmadaSpec) DeepCopy

func (in *KarmadaSpec) DeepCopy() *KarmadaSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaSpec.

func (*KarmadaSpec) DeepCopyInto

func (in *KarmadaSpec) DeepCopyInto(out *KarmadaSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaStatus

type KarmadaStatus struct {
	// ObservedGeneration is the last observed generation.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// after the karmada installed, restore the kubeconfig to secret.
	// +optional
	SecretRef *LocalSecretReference `json:"secretRef,omitempty"`

	// KarmadaVersion represent the karmada version.
	// +optional
	KarmadaVersion string `json:"karmadaVersion,omitempty"`

	// KubernetesVersion represent the karmada-apiserver version.
	// +optional
	KubernetesVersion string `json:"kubernetesVersion,omitempty"`

	// Conditions represents the latest available observations of a karmada's current state.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// APIServerService reports the location of the Karmada API server service which
	// can be used by third-party applications to discover the Karmada Service, e.g.
	// expose the service outside the cluster by Ingress.
	// +optional
	APIServerService *APIServerService `json:"apiServerService,omitempty"`
}

KarmadaStatus define the most recently observed status of the Karmada.

func (*KarmadaStatus) DeepCopy

func (in *KarmadaStatus) DeepCopy() *KarmadaStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaStatus.

func (*KarmadaStatus) DeepCopyInto

func (in *KarmadaStatus) DeepCopyInto(out *KarmadaStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KarmadaWebhook

type KarmadaWebhook struct {
	// CommonSettings holds common settings to karmada webhook.
	CommonSettings `json:",inline"`

	// ExtraArgs is an extra set of flags to pass to the karmada-webhook component or
	// override. A key in this map is the flag name as it appears on the command line except
	// without leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the
	// karmada-webhook component. In the future, we will provide a more structured way
	// to configure the component. Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://karmada.io/docs/reference/components/karmada-webhook
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`
}

KarmadaWebhook holds settings to karmada-webhook component of the karmada.

func (*KarmadaWebhook) DeepCopy

func (in *KarmadaWebhook) DeepCopy() *KarmadaWebhook

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KarmadaWebhook.

func (*KarmadaWebhook) DeepCopyInto

func (in *KarmadaWebhook) DeepCopyInto(out *KarmadaWebhook)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubeControllerManager

type KubeControllerManager struct {
	// CommonSettings holds common settings to kubernetes controller manager.
	CommonSettings `json:",inline"`

	// A list of controllers to enable. '*' enables all on-by-default controllers,
	// 'foo' enables the controller named 'foo', '-foo' disables the controller named
	// 'foo'.
	//
	// All controllers: attachdetach, bootstrapsigner, cloud-node-lifecycle,
	// clusterrole-aggregation, cronjob, csrapproving, csrcleaner, csrsigning,
	// daemonset, deployment, disruption, endpoint, endpointslice,
	// endpointslicemirroring, ephemeral-volume, garbagecollector,
	// horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle,
	// persistentvolume-binder, persistentvolume-expander, podgc, pv-protection,
	// pvc-protection, replicaset, replicationcontroller, resourcequota,
	// root-ca-cert-publisher, route, service, serviceaccount, serviceaccount-token,
	// statefulset, tokencleaner, ttl, ttl-after-finished
	// Disabled-by-default controllers: bootstrapsigner, tokencleaner (default [*])
	// Actual Supported controllers depend on the version of Kubernetes. See
	// https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/
	// for details.
	//
	// However, Karmada uses Kubernetes Native API definitions for federated resource template,
	// so it doesn't need enable some resource related controllers like daemonset, deployment etc.
	// On the other hand, Karmada leverages the capabilities of the Kubernetes controller to
	// manage the lifecycle of the federated resource, so it needs to enable some controllers.
	// For example, the `namespace` controller is used to manage the lifecycle of the namespace
	// and the `garbagecollector` controller handles automatic clean-up of redundant items in
	// your karmada.
	//
	// According to the user feedback and karmada requirements, the following controllers are
	// enabled by default: namespace, garbagecollector, serviceaccount-token, ttl-after-finished,
	// bootstrapsigner,csrapproving,csrcleaner,csrsigning. See
	// https://karmada.io/docs/administrator/configuration/configure-controllers#kubernetes-controllers
	//
	// Others are disabled by default. If you want to enable or disable other controllers, you
	// have to explicitly specify all the controllers that kube-controller-manager should enable
	// at startup phase.
	// +optional
	Controllers []string `json:"controllers,omitempty"`

	// ExtraArgs is an extra set of flags to pass to the kube-controller-manager component or
	// override. A key in this map is the flag name as it appears on the command line except
	// without leading dash(es).
	//
	// Note: This is a temporary solution to allow for the configuration of the
	// kube-controller-manager component. In the future, we will provide a more structured way
	// to configure the component. Once that is done, this field will be discouraged to be used.
	// Incorrect settings on this field maybe lead to the corresponding component in an unhealthy
	// state. Before you do it, please confirm that you understand the risks of this configuration.
	//
	// For supported flags, please see
	// https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/
	// for details.
	// +optional
	ExtraArgs map[string]string `json:"extraArgs,omitempty"`

	// FeatureGates enabled by the user.
	// More info: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/
	// +optional
	FeatureGates map[string]bool `json:"featureGates,omitempty"`
}

KubeControllerManager holds settings to kube-controller-manager component of the kubernetes. Karmada uses it to manage the lifecycle of the federated resources. An especial case is the garbage collection of the orphan resources in your karmada.

func (*KubeControllerManager) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeControllerManager.

func (*KubeControllerManager) DeepCopyInto

func (in *KubeControllerManager) DeepCopyInto(out *KubeControllerManager)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalEtcd

type LocalEtcd struct {
	// CommonSettings holds common settings to etcd.
	CommonSettings `json:",inline"`

	// VolumeData describes the settings of etcd data store.
	// We will support 3 modes: emptyDir, hostPath, PVC. default by hostPath.
	// +optional
	VolumeData *VolumeData `json:"volumeData,omitempty"`

	// ServerCertSANs sets extra Subject Alternative Names for the etcd server signing cert.
	// +optional
	ServerCertSANs []string `json:"serverCertSANs,omitempty"`

	// PeerCertSANs sets extra Subject Alternative Names for the etcd peer signing cert.
	// +optional
	PeerCertSANs []string `json:"peerCertSANs,omitempty"`
}

LocalEtcd describes that operator should run an etcd cluster in a host cluster.

func (*LocalEtcd) DeepCopy

func (in *LocalEtcd) DeepCopy() *LocalEtcd

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalEtcd.

func (*LocalEtcd) DeepCopyInto

func (in *LocalEtcd) DeepCopyInto(out *LocalEtcd)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalSecretReference

type LocalSecretReference struct {
	// Namespace is the namespace for the resource being referenced.
	Namespace string `json:"namespace,omitempty"`

	// Name is the name of resource being referenced.
	Name string `json:"name,omitempty"`
}

LocalSecretReference is a reference to a secret within the enclosing namespace.

func (*LocalSecretReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalSecretReference.

func (*LocalSecretReference) DeepCopyInto

func (in *LocalSecretReference) DeepCopyInto(out *LocalSecretReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Networking

type Networking struct {
	// DNSDomain is the dns domain used by k8s services. Defaults to "cluster.local".
	// +optional
	DNSDomain *string `json:"dnsDomain,omitempty"`
}

Networking contains elements describing cluster's networking configuration

func (*Networking) DeepCopy

func (in *Networking) DeepCopy() *Networking

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networking.

func (*Networking) DeepCopyInto

func (in *Networking) DeepCopyInto(out *Networking)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type VolumeData

type VolumeData struct {
	// The specification for the PersistentVolumeClaim. The entire content is
	// copied unchanged into the PVC that gets created from this
	// template. The same fields as in a PersistentVolumeClaim
	// are also valid here.
	// +optional
	VolumeClaim *corev1.PersistentVolumeClaimTemplate `json:"volumeClaim,omitempty"`

	// HostPath represents a pre-existing file or directory on the host
	// machine that is directly exposed to the container. This is generally
	// used for system agents or other privileged things that are allowed
	// to see the host machine. Most containers will NOT need this.
	// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
	// ---
	// TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
	// mount host directories as read/write.
	// +optional
	HostPath *corev1.HostPathVolumeSource `json:"hostPath,omitempty"`

	// EmptyDir represents a temporary directory that shares a pod's lifetime.
	// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
	// +optional
	EmptyDir *corev1.EmptyDirVolumeSource `json:"emptyDir,omitempty"`
}

VolumeData describes the settings of etcd data store.

func (*VolumeData) DeepCopy

func (in *VolumeData) DeepCopy() *VolumeData

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeData.

func (*VolumeData) DeepCopyInto

func (in *VolumeData) DeepCopyInto(out *VolumeData)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL