Documentation ¶
Overview ¶
+kubebuilder:object:generate=true +k8s:deepcopy-gen=package,register +groupName=cluster.kubernetes-fleet.io
+kubebuilder:object:generate=true +groupName=cluster.kubernetes-fleet.io
Index ¶
- Constants
- Variables
- type AgentConditionType
- type AgentStatus
- type AgentType
- type ClusterState
- type ConditionedAgentObj
- type ConditionedWithType
- type InternalMemberCluster
- func (in *InternalMemberCluster) DeepCopy() *InternalMemberCluster
- func (in *InternalMemberCluster) DeepCopyInto(out *InternalMemberCluster)
- func (in *InternalMemberCluster) DeepCopyObject() runtime.Object
- func (m *InternalMemberCluster) GetAgentStatus(agentType AgentType) *AgentStatus
- func (m *InternalMemberCluster) GetConditionWithType(agentType AgentType, conditionType string) *metav1.Condition
- func (m *InternalMemberCluster) SetConditionsWithType(agentType AgentType, conditions ...metav1.Condition)
- type InternalMemberClusterList
- type InternalMemberClusterSpec
- type InternalMemberClusterStatus
- type MemberCluster
- func (in *MemberCluster) DeepCopy() *MemberCluster
- func (in *MemberCluster) DeepCopyInto(out *MemberCluster)
- func (in *MemberCluster) DeepCopyObject() runtime.Object
- func (m *MemberCluster) GetAgentCondition(agentType AgentType, conditionType AgentConditionType) *metav1.Condition
- func (m *MemberCluster) GetAgentStatus(agentType AgentType) *AgentStatus
- func (m *MemberCluster) GetCondition(conditionType string) *metav1.Condition
- func (m *MemberCluster) RemoveCondition(conditionType string)
- func (m *MemberCluster) SetConditions(conditions ...metav1.Condition)
- type MemberClusterConditionType
- type MemberClusterList
- type MemberClusterSpec
- type MemberClusterStatus
- type PropertyName
- type PropertyValue
- type ResourceUsage
- type Taint
Constants ¶
const ( MemberClusterKind = "MemberCluster" MemberClusterResource = "memberclusters" InternalMemberClusterKind = "InternalMemberCluster" ClusterResourcePlacementResource = "clusterresourceplacements" )
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: "cluster.kubernetes-fleet.io", Version: "v1beta1"} // 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 AgentConditionType ¶
type AgentConditionType string
AgentConditionType identifies a specific condition on the Agent.
const ( // AgentJoined indicates the join condition of the given member agent. // Its condition status can be one of the following: // - "True" means the member agent has joined. // - "False" means the member agent has left. // - "Unknown" means the member agent is joining or leaving or in an unknown status. AgentJoined AgentConditionType = "Joined" // AgentHealthy indicates the health condition of the given member agent. // Its condition status can be one of the following: // - "True" means the member agent is healthy. // - "False" means the member agent is unhealthy. // - "Unknown" means the member agent has an unknown health status. AgentHealthy AgentConditionType = "Healthy" )
type AgentStatus ¶
type AgentStatus struct { // Type of the member agent. // +required Type AgentType `json:"type"` // Conditions is an array of current observed conditions for the member agent. // +optional Conditions []metav1.Condition `json:"conditions,omitempty"` // Last time we received a heartbeat from the member agent. // +optional LastReceivedHeartbeat metav1.Time `json:"lastReceivedHeartbeat,omitempty"` }
AgentStatus defines the observed status of the member agent of the given type.
func (*AgentStatus) DeepCopy ¶
func (in *AgentStatus) DeepCopy() *AgentStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentStatus.
func (*AgentStatus) DeepCopyInto ¶
func (in *AgentStatus) DeepCopyInto(out *AgentStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentType ¶
type AgentType string
AgentType defines a type of agent/binary running in a member cluster.
const ( // MemberAgent (core) handles member cluster joining/leaving as well as k8s object placement from hub to member clusters. MemberAgent AgentType = "MemberAgent" // MultiClusterServiceAgent (networking) is responsible for exposing multi-cluster services via L4 load // balancer. MultiClusterServiceAgent AgentType = "MultiClusterServiceAgent" // ServiceExportImportAgent (networking) is responsible for export or import services across multi-clusters. ServiceExportImportAgent AgentType = "ServiceExportImportAgent" )
type ClusterState ¶
type ClusterState string
const ( ClusterStateJoin ClusterState = "Join" ClusterStateLeave ClusterState = "Leave" )
type ConditionedAgentObj ¶
type ConditionedAgentObj interface { client.Object ConditionedWithType }
A ConditionedAgentObj is for kubernetes resources where multiple agents can set and update conditions within AgentStatus. +kubebuilder:object:generate=false
type ConditionedWithType ¶
type ConditionedWithType interface { SetConditionsWithType(AgentType, ...metav1.Condition) GetConditionWithType(AgentType, string) *metav1.Condition }
A ConditionedWithType may have conditions set or retrieved based on agent type. Conditions typically indicate the status of both a resource and its reconciliation process. +kubebuilder:object:generate=false
type InternalMemberCluster ¶
type InternalMemberCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // The desired state of InternalMemberCluster. // +required Spec InternalMemberClusterSpec `json:"spec"` // The observed status of InternalMemberCluster. // +optional Status InternalMemberClusterStatus `json:"status,omitempty"` }
InternalMemberCluster is used by hub agent to notify the member agents about the member cluster state changes, and is used by the member agents to report their status.
func (*InternalMemberCluster) DeepCopy ¶
func (in *InternalMemberCluster) DeepCopy() *InternalMemberCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalMemberCluster.
func (*InternalMemberCluster) DeepCopyInto ¶
func (in *InternalMemberCluster) DeepCopyInto(out *InternalMemberCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*InternalMemberCluster) DeepCopyObject ¶
func (in *InternalMemberCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*InternalMemberCluster) GetAgentStatus ¶
func (m *InternalMemberCluster) GetAgentStatus(agentType AgentType) *AgentStatus
GetAgentStatus is used to retrieve agent status from internal member cluster, if it doesn't exist it creates the expected agent status and returns it.
func (*InternalMemberCluster) GetConditionWithType ¶
func (m *InternalMemberCluster) GetConditionWithType(agentType AgentType, conditionType string) *metav1.Condition
GetConditionWithType is used to retrieve the desired condition from AgentStatus for given agentType
func (*InternalMemberCluster) SetConditionsWithType ¶
func (m *InternalMemberCluster) SetConditionsWithType(agentType AgentType, conditions ...metav1.Condition)
SetConditionsWithType is used to add condition to AgentStatus for a given agentType.
type InternalMemberClusterList ¶
type InternalMemberClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []InternalMemberCluster `json:"items"` }
InternalMemberClusterList contains a list of InternalMemberCluster.
func (*InternalMemberClusterList) DeepCopy ¶
func (in *InternalMemberClusterList) DeepCopy() *InternalMemberClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalMemberClusterList.
func (*InternalMemberClusterList) DeepCopyInto ¶
func (in *InternalMemberClusterList) DeepCopyInto(out *InternalMemberClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*InternalMemberClusterList) DeepCopyObject ¶
func (in *InternalMemberClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type InternalMemberClusterSpec ¶
type InternalMemberClusterSpec struct { // The desired state of the member cluster. Possible values: Join, Leave. // +required State ClusterState `json:"state"` // How often (in seconds) for the member cluster to send a heartbeat to the hub cluster. Default: 60 seconds. Min: 1 second. Max: 10 minutes. // +optional HeartbeatPeriodSeconds int32 `json:"heartbeatPeriodSeconds,omitempty"` }
InternalMemberClusterSpec defines the desired state of InternalMemberCluster. Set by the hub agent.
func (*InternalMemberClusterSpec) DeepCopy ¶
func (in *InternalMemberClusterSpec) DeepCopy() *InternalMemberClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalMemberClusterSpec.
func (*InternalMemberClusterSpec) DeepCopyInto ¶
func (in *InternalMemberClusterSpec) DeepCopyInto(out *InternalMemberClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type InternalMemberClusterStatus ¶
type InternalMemberClusterStatus struct { // Conditions is an array of current observed conditions for the member cluster. // +optional Conditions []metav1.Condition `json:"conditions"` // Properties is an array of properties observed for the member cluster. // // This field is beta-level; it is for the property-based scheduling feature and is only // populated when a property provider is enabled in the deployment. // +optional Properties map[PropertyName]PropertyValue `json:"properties,omitempty"` // The current observed resource usage of the member cluster. It is populated by the member agent. // +optional ResourceUsage ResourceUsage `json:"resourceUsage,omitempty"` // AgentStatus is an array of current observed status, each corresponding to one member agent running in the member cluster. // +optional AgentStatus []AgentStatus `json:"agentStatus,omitempty"` }
InternalMemberClusterStatus defines the observed state of InternalMemberCluster.
func (*InternalMemberClusterStatus) DeepCopy ¶
func (in *InternalMemberClusterStatus) DeepCopy() *InternalMemberClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalMemberClusterStatus.
func (*InternalMemberClusterStatus) DeepCopyInto ¶
func (in *InternalMemberClusterStatus) DeepCopyInto(out *InternalMemberClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MemberCluster ¶
type MemberCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // The desired state of MemberCluster. // +required Spec MemberClusterSpec `json:"spec"` // The observed status of MemberCluster. // +optional Status MemberClusterStatus `json:"status,omitempty"` }
MemberCluster is a resource created in the hub cluster to represent a member cluster within a fleet. +kubebuilder:validation:XValidation:rule="size(self.metadata.name) < 64",message="metadata.name max length is 63"
func (*MemberCluster) DeepCopy ¶
func (in *MemberCluster) DeepCopy() *MemberCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberCluster.
func (*MemberCluster) DeepCopyInto ¶
func (in *MemberCluster) DeepCopyInto(out *MemberCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MemberCluster) DeepCopyObject ¶
func (in *MemberCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MemberCluster) GetAgentCondition ¶
func (m *MemberCluster) GetAgentCondition(agentType AgentType, conditionType AgentConditionType) *metav1.Condition
GetAgentCondition queries the conditions in an agent status for a specific condition type.
func (*MemberCluster) GetAgentStatus ¶
func (m *MemberCluster) GetAgentStatus(agentType AgentType) *AgentStatus
GetAgentStatus retrieves the status of a specific member agent from the MemberCluster object.
If the specified agent does not exist, or it has not updated its status with the hub cluster yet, this function returns nil.
func (*MemberCluster) GetCondition ¶
func (m *MemberCluster) GetCondition(conditionType string) *metav1.Condition
func (*MemberCluster) RemoveCondition ¶
func (m *MemberCluster) RemoveCondition(conditionType string)
func (*MemberCluster) SetConditions ¶
func (m *MemberCluster) SetConditions(conditions ...metav1.Condition)
type MemberClusterConditionType ¶
type MemberClusterConditionType string
MemberClusterConditionType defines a specific condition of a member cluster.
const ( // ConditionTypeMemberClusterReadyToJoin indicates the readiness condition of the given member cluster for joining the hub cluster. // Its condition status can be one of the following: // - "True" means the hub cluster is ready for the member cluster to join. // - "False" means the hub cluster is not ready for the member cluster to join. // - "Unknown" means it is unknown whether the hub cluster is ready for the member cluster to join. ConditionTypeMemberClusterReadyToJoin MemberClusterConditionType = "ReadyToJoin" // ConditionTypeMemberClusterJoined indicates the join condition of the given member cluster. // Its condition status can be one of the following: // - "True" means all the agents on the member cluster have joined. // - "False" means all the agents on the member cluster have left. // - "Unknown" means not all the agents have joined or left. ConditionTypeMemberClusterJoined MemberClusterConditionType = "Joined" // ConditionTypeMemberClusterHealthy indicates the health condition of the given member cluster. // Its condition status can be one of the following: // - "True" means the member cluster is healthy. // - "False" means the member cluster is unhealthy. // - "Unknown" means the member cluster has an unknown health status. // NOTE: This condition type is currently unused. ConditionTypeMemberClusterHealthy MemberClusterConditionType = "Healthy" // ConditionTypeClusterPropertyProviderStarted indicates the startup condition of the configured // cluster property provider (if any). // Its condition status can be one of the following: // - "True" means the cluster property provider has started. // - "False" means the cluster property provider has failed to start. // - "Unknown" means it is unknown whether the cluster property provider has started or not. ConditionTypeClusterPropertyProviderStarted MemberClusterConditionType = "ClusterPropertyProviderStarted" // ConditionTypeClusterPropertyCollectionSucceeded indicates the // condition of the latest attempt to collect cluster properties from the configured // cluster property provider (if any). // Its condition status can be one of the following: // - "True" means the cluster property collection has succeeded. // - "False" means the cluster property collection has failed. // - "Unknown" means it is unknown whether the cluster property collection has succeeded or not. ConditionTypeClusterPropertyCollectionSucceeded MemberClusterConditionType = "ClusterPropertyCollectionSucceeded" )
type MemberClusterList ¶
type MemberClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []MemberCluster `json:"items"` }
MemberClusterList contains a list of MemberCluster.
func (*MemberClusterList) DeepCopy ¶
func (in *MemberClusterList) DeepCopy() *MemberClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberClusterList.
func (*MemberClusterList) DeepCopyInto ¶
func (in *MemberClusterList) DeepCopyInto(out *MemberClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MemberClusterList) DeepCopyObject ¶
func (in *MemberClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MemberClusterSpec ¶
type MemberClusterSpec struct { // The identity used by the member cluster to access the hub cluster. // The hub agents deployed on the hub cluster will automatically grant the minimal required permissions to this identity for the member agents deployed on the member cluster to access the hub cluster. // +required Identity rbacv1.Subject `json:"identity"` // How often (in seconds) for the member cluster to send a heartbeat to the hub cluster. Default: 60 seconds. Min: 1 second. Max: 10 minutes. // +optional HeartbeatPeriodSeconds int32 `json:"heartbeatPeriodSeconds,omitempty"` // If specified, the MemberCluster's taints. // // This field is beta-level and is for the taints and tolerations feature. // +kubebuilder:validation:MaxItems=100 // +optional Taints []Taint `json:"taints,omitempty"` }
MemberClusterSpec defines the desired state of MemberCluster.
func (*MemberClusterSpec) DeepCopy ¶
func (in *MemberClusterSpec) DeepCopy() *MemberClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberClusterSpec.
func (*MemberClusterSpec) DeepCopyInto ¶
func (in *MemberClusterSpec) DeepCopyInto(out *MemberClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MemberClusterStatus ¶
type MemberClusterStatus struct { // Conditions is an array of current observed conditions for the member cluster. // +optional Conditions []metav1.Condition `json:"conditions"` // Properties is an array of properties observed for the member cluster. // // This field is beta-level; it is for the property-based scheduling feature and is only // populated when a property provider is enabled in the deployment. // +optional Properties map[PropertyName]PropertyValue `json:"properties,omitempty"` // The current observed resource usage of the member cluster. It is copied from the corresponding InternalMemberCluster object. // +optional ResourceUsage ResourceUsage `json:"resourceUsage,omitempty"` // AgentStatus is an array of current observed status, each corresponding to one member agent running in the member cluster. // +optional AgentStatus []AgentStatus `json:"agentStatus,omitempty"` }
MemberClusterStatus defines the observed status of MemberCluster.
func (*MemberClusterStatus) DeepCopy ¶
func (in *MemberClusterStatus) DeepCopy() *MemberClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemberClusterStatus.
func (*MemberClusterStatus) DeepCopyInto ¶
func (in *MemberClusterStatus) DeepCopyInto(out *MemberClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PropertyName ¶ added in v0.9.2
type PropertyName string
PropertyName is the name of a cluster property; it should be a Kubernetes label name.
type PropertyValue ¶ added in v0.9.2
type PropertyValue struct { // Value is the value of the cluster property. // // Currently, it should be a valid Kubernetes quantity. // For more information, see // https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity. // // +required Value string `json:"value"` // ObservationTime is when the cluster property is observed. // +required ObservationTime metav1.Time `json:"observationTime"` }
PropertyValue is the value of a cluster property.
func (*PropertyValue) DeepCopy ¶ added in v0.9.2
func (in *PropertyValue) DeepCopy() *PropertyValue
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropertyValue.
func (*PropertyValue) DeepCopyInto ¶ added in v0.9.2
func (in *PropertyValue) DeepCopyInto(out *PropertyValue)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceUsage ¶
type ResourceUsage struct { // Capacity represents the total resource capacity of all the nodes on a member cluster. // // A node's total capacity is the amount of resource installed on the node. // +optional Capacity corev1.ResourceList `json:"capacity,omitempty"` // Allocatable represents the total allocatable resources of all the nodes on a member cluster. // // A node's allocatable capacity is the amount of resource that can actually be used // for user workloads, i.e., // allocatable capacity = total capacity - capacities reserved for the OS, kubelet, etc. // // For more information, see // https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/. // +optional Allocatable corev1.ResourceList `json:"allocatable,omitempty"` // Available represents the total available resources of all the nodes on a member cluster. // // A node's available capacity is the amount of resource that has not been used yet, i.e., // available capacity = allocatable capacity - capacity that has been requested by workloads. // // This field is beta-level; it is for the property-based scheduling feature and is only // populated when a property provider is enabled in the deployment. // +optional Available corev1.ResourceList `json:"available,omitempty"` // When the resource usage is observed. // +optional ObservationTime metav1.Time `json:"observationTime,omitempty"` }
ResourceUsage contains the observed resource usage of a member cluster.
func (*ResourceUsage) DeepCopy ¶
func (in *ResourceUsage) DeepCopy() *ResourceUsage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsage.
func (*ResourceUsage) DeepCopyInto ¶
func (in *ResourceUsage) DeepCopyInto(out *ResourceUsage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Taint ¶ added in v0.8.7
type Taint struct { // The taint key to be applied to a MemberCluster. // +required Key string `json:"key"` // The taint value corresponding to the taint key. // +optional Value string `json:"value,omitempty"` // The effect of the taint on ClusterResourcePlacements that do not tolerate the taint. // Only NoSchedule is supported. // +kubebuilder:validation:Enum=NoSchedule // +required Effect corev1.TaintEffect `json:"effect"` }
Taint attached to MemberCluster has the "effect" on any ClusterResourcePlacement that does not tolerate the Taint.
func (*Taint) DeepCopy ¶ added in v0.8.9
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Taint.
func (*Taint) DeepCopyInto ¶ added in v0.8.9
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.