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(ringName string) string
- func LabelShard(ringName string) string
- type ControllerRing
- func (in *ControllerRing) DeepCopy() *ControllerRing
- func (in *ControllerRing) DeepCopyInto(out *ControllerRing)
- func (in *ControllerRing) DeepCopyObject() runtime.Object
- func (c *ControllerRing) LabelDrain() string
- func (c *ControllerRing) LabelShard() string
- func (c *ControllerRing) LeaseSelector() labels.Selector
- type ControllerRingList
- type ControllerRingSpec
- type ControllerRingStatus
- 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" // LabelControllerRing is the label on objects that identifies the ControllerRing that the object belongs to. LabelControllerRing = alphaPrefix + "controllerring" // 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" )
const (
// ControllerRingReady is the condition type for the "Ready" condition on ControllerRings.
ControllerRingReady = "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.
Types ¶
type ControllerRing ¶ added in v0.9.0
type ControllerRing 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 ControllerRing.
// +optional
Spec ControllerRingSpec `json:"spec,omitempty"`
// Status contains the most recently observed status of the ControllerRing.
// +optional
Status ControllerRingStatus `json:"status,omitempty"`
}
ControllerRing declares a virtual ring of sharded controller instances. Objects of the specified resources are distributed across shards of this ring. Objects in all namespaces are considered unless a namespaceSelector is specified.
func (*ControllerRing) DeepCopy ¶ added in v0.9.0
func (in *ControllerRing) DeepCopy() *ControllerRing
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRing.
func (*ControllerRing) DeepCopyInto ¶ added in v0.9.0
func (in *ControllerRing) DeepCopyInto(out *ControllerRing)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ControllerRing) DeepCopyObject ¶ added in v0.9.0
func (in *ControllerRing) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ControllerRing) LabelDrain ¶ added in v0.9.0
func (c *ControllerRing) LabelDrain() string
LabelDrain returns the label on sharded objects that instructs the responsible shard within this ControllerRing to stop reconciling the object and remove both the shard and drain label.
func (*ControllerRing) LabelShard ¶ added in v0.9.0
func (c *ControllerRing) LabelShard() string
LabelShard returns the label on sharded objects that holds the name of the responsible shard within this ControllerRing.
func (*ControllerRing) LeaseSelector ¶ added in v0.9.0
func (c *ControllerRing) LeaseSelector() labels.Selector
LeaseSelector returns a label selector for selecting shard Lease objects belonging to this ControllerRing.
type ControllerRingList ¶ added in v0.9.0
type ControllerRingList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata.
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
// Items is the list of ControllerRings.
Items []ControllerRing `json:"items"`
}
ControllerRingList contains a list of ControllerRings.
func (*ControllerRingList) DeepCopy ¶ added in v0.9.0
func (in *ControllerRingList) DeepCopy() *ControllerRingList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRingList.
func (*ControllerRingList) DeepCopyInto ¶ added in v0.9.0
func (in *ControllerRingList) DeepCopyInto(out *ControllerRingList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ControllerRingList) DeepCopyObject ¶ added in v0.9.0
func (in *ControllerRingList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ControllerRingSpec ¶ added in v0.9.0
type ControllerRingSpec struct {
// Resources specifies the list of resources that are distributed across shards in this ControllerRing.
// +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"`
}
ControllerRingSpec defines the desired state of a ControllerRing.
func (*ControllerRingSpec) DeepCopy ¶ added in v0.9.0
func (in *ControllerRingSpec) DeepCopy() *ControllerRingSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRingSpec.
func (*ControllerRingSpec) DeepCopyInto ¶ added in v0.9.0
func (in *ControllerRingSpec) DeepCopyInto(out *ControllerRingSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ControllerRingStatus ¶ added in v0.9.0
type ControllerRingStatus struct {
// The generation observed by the ControllerRing 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"`
}
ControllerRingStatus defines the observed state of a ControllerRing.
func (*ControllerRingStatus) DeepCopy ¶ added in v0.9.0
func (in *ControllerRingStatus) DeepCopy() *ControllerRingStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerRingStatus.
func (*ControllerRingStatus) DeepCopyInto ¶ added in v0.9.0
func (in *ControllerRingStatus) DeepCopyInto(out *ControllerRingStatus)
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 ControllerRing.
// 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.