Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the sharding v1alpha1 API group +kubebuilder:object:generate=true +groupName=sharding.timebertt.dev
Index ¶
- Constants
- Variables
- func LabelDrain(kind string, namespace, name string) string
- func LabelShard(kind string, namespace, name string) string
- func RingSuffix(kind string, namespace, name string) string
- type ClusterRing
- func (in *ClusterRing) DeepCopy() *ClusterRing
- func (in *ClusterRing) DeepCopyInto(out *ClusterRing)
- func (in *ClusterRing) DeepCopyObject() runtime.Object
- func (c *ClusterRing) LabelDrain() string
- func (c *ClusterRing) LabelShard() string
- func (c *ClusterRing) LeaseSelector() labels.Selector
- func (c *ClusterRing) RingResources() []RingResource
- type ClusterRingList
- type ClusterRingSpec
- type ClusterRingStatus
- type RingResource
Constants ¶
const ( // NamespaceSystem is the namespace where the sharding system components run. NamespaceSystem = "sharding-system" // AppControllerSharding is the value for the "app.kubernetes.io/name" label used for objects related to controller // sharding. AppControllerSharding = "controller-sharding" // LabelClusterRing is the label on objects that identifies the ClusterRing that the object belongs to. LabelClusterRing = alphaPrefix + "clusterring" // LabelState is the label on Lease objects that reflects the state of a shard for observability purposes. // This label is maintained by the shardlease controller. LabelState = alphaPrefix + "state" // LabelShardPrefix is the qualified prefix for a label on sharded objects that holds the name of the responsible // shard within a ring. Use LabelShard to compute the full label key for a ring. LabelShardPrefix = "shard." + alphaPrefix // LabelDrainPrefix is the qualified prefix for a label on sharded objects that instructs the responsible shard within // a ring to stop reconciling the object and remove both the shard and drain label. Use LabelDrain to compute the full // label key for a ring. LabelDrainPrefix = "drain." + alphaPrefix // IdentityShardLeaseController is the identity that the shardlease controller uses to acquire leases of unavailable // shards. IdentityShardLeaseController = "shardlease-controller" // KindClusterRing is the kind string for ClusterRings used in label keys. KindClusterRing = "clusterring" )
const (
// ClusterRingReady is the condition type for the "Ready" condition on ClusterRings.
ClusterRingReady = "Ready"
)
const GroupName = "sharding.timebertt.dev"
GroupName is the group name used in this package.
Variables ¶
var ( // SchemeBuilder is a new Scheme Builder which registers our API. SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme is a reference to the Scheme Builder's AddToScheme function. AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func LabelDrain ¶
LabelDrain returns the label on sharded objects that instructs the responsible shard within a ring to stop reconciling the object and remove both the shard and drain label.
func LabelShard ¶
LabelShard returns the label on sharded objects that holds the name of the responsible shard within a ring.
func RingSuffix ¶
RingSuffix returns the label key for a given ring kind and key that is appended to a qualified prefix.
Types ¶
type ClusterRing ¶
type ClusterRing struct { metav1.TypeMeta `json:",inline"` // Standard object's metadata. // +optional metav1.ObjectMeta `json:"metadata,omitempty"` // Spec contains the specification of the desired behavior of the ClusterRing. // +optional Spec ClusterRingSpec `json:"spec,omitempty"` // Status contains the most recently observed status of the ClusterRing. // +optional Status ClusterRingStatus `json:"status,omitempty"` }
ClusterRing declares a virtual ring of sharded controller instances. The specified objects are distributed across shards of this ring on the cluster-scope (i.e., objects in all namespaces). Hence, the "Cluster" prefix.
func (*ClusterRing) DeepCopy ¶
func (in *ClusterRing) DeepCopy() *ClusterRing
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRing.
func (*ClusterRing) DeepCopyInto ¶
func (in *ClusterRing) DeepCopyInto(out *ClusterRing)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterRing) DeepCopyObject ¶
func (in *ClusterRing) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterRing) LabelDrain ¶
func (c *ClusterRing) LabelDrain() string
LabelDrain returns the label on sharded objects that instructs the responsible shard within this ClusterRing to stop reconciling the object and remove both the shard and drain label.
func (*ClusterRing) LabelShard ¶
func (c *ClusterRing) LabelShard() string
LabelShard returns the label on sharded objects that holds the name of the responsible shard within this ClusterRing.
func (*ClusterRing) LeaseSelector ¶
func (c *ClusterRing) LeaseSelector() labels.Selector
LeaseSelector returns a label selector for selecting shard Lease objects belonging to this ClusterRing.
func (*ClusterRing) RingResources ¶
func (c *ClusterRing) RingResources() []RingResource
RingResources returns the the list of resources that are distributed across shards in this ClusterRing.
type ClusterRingList ¶
type ClusterRingList struct { metav1.TypeMeta `json:",inline"` // Standard list metadata. // +optional metav1.ListMeta `json:"metadata,omitempty"` // Items is the list of ClusterRings. Items []ClusterRing `json:"items"` }
ClusterRingList contains a list of ClusterRings.
func (*ClusterRingList) DeepCopy ¶
func (in *ClusterRingList) DeepCopy() *ClusterRingList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRingList.
func (*ClusterRingList) DeepCopyInto ¶
func (in *ClusterRingList) DeepCopyInto(out *ClusterRingList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterRingList) DeepCopyObject ¶
func (in *ClusterRingList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterRingSpec ¶
type ClusterRingSpec struct { // Resources specifies the list of resources that are distributed across shards in this ClusterRing. // +optional // +listType=map // +listMapKey=group // +listMapKey=resource Resources []RingResource `json:"resources,omitempty"` // NamespaceSelector overwrites the webhook configs' namespaceSelector. // If set, this selector should exclude the kube-system and sharding-system namespaces. // If omitted, the default namespaceSelector from the SharderConfig is used. // Note: changing/unsetting this selector will not remove labels from objects in namespaces that were previously // included. // +optional NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty"` }
ClusterRingSpec defines the desired state of a ClusterRing.
func (*ClusterRingSpec) DeepCopy ¶
func (in *ClusterRingSpec) DeepCopy() *ClusterRingSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRingSpec.
func (*ClusterRingSpec) DeepCopyInto ¶
func (in *ClusterRingSpec) DeepCopyInto(out *ClusterRingSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterRingStatus ¶
type ClusterRingStatus struct { // The generation observed by the ClusterRing controller. // +optional ObservedGeneration int64 `json:"observedGeneration,omitempty"` // Shards is the total number of shards of this ring. Shards int32 `json:"shards"` // AvailableShards is the total number of available shards of this ring. AvailableShards int32 `json:"availableShards"` // Conditions represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +listType=map // +listMapKey=type // +optional Conditions []metav1.Condition `json:"conditions,omitempty"` }
ClusterRingStatus defines the observed state of a ClusterRing.
func (*ClusterRingStatus) DeepCopy ¶
func (in *ClusterRingStatus) DeepCopy() *ClusterRingStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRingStatus.
func (*ClusterRingStatus) DeepCopyInto ¶
func (in *ClusterRingStatus) DeepCopyInto(out *ClusterRingStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RingResource ¶
type RingResource struct { // GroupResource specifies the resource that is distributed across shards in a ring. // This resource is the controller's main resource, i.e., the resource of which it updates the object status. metav1.GroupResource `json:",inline"` // ControlledResources are additional resources that are distributed across shards in the ClusterRing. // These resources are controlled by the controller's main resource, i.e., they have an owner reference with // controller=true back to the GroupResource of this RingResource. // Typically, the controller also watches objects of this resource and enqueues the owning object (of the main // resource) whenever the status of a controlled object changes. // +optional // +listType=map // +listMapKey=group // +listMapKey=resource ControlledResources []metav1.GroupResource `json:"controlledResources,omitempty"` }
RingResource specifies a resource along with controlled resources that is distributed across shards in a ring.
func (*RingResource) DeepCopy ¶
func (in *RingResource) DeepCopy() *RingResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RingResource.
func (*RingResource) DeepCopyInto ¶
func (in *RingResource) DeepCopyInto(out *RingResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.