Documentation
¶
Overview ¶
Package v1alpha1 is the v1alpha1 version of the API. +groupName=operator.m3db.io
Index ¶
- Variables
- func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition
- func Resource(resource string) schema.GroupResource
- type ClusterCondition
- type ClusterConditionType
- type ClusterSpec
- type IndexOptions
- type IsolationGroup
- type IsolationGroups
- func (in IsolationGroups) DeepCopy() IsolationGroups
- func (in IsolationGroups) DeepCopyInto(out *IsolationGroups)
- func (g IsolationGroups) GetByName(name string) (IsolationGroup, bool)
- func (g IsolationGroups) Len() int
- func (g IsolationGroups) Less(i, j int) bool
- func (g IsolationGroups) Swap(i, j int)
- type M3DBCluster
- type M3DBClusterList
- type M3DBState
- type M3DBStatus
- func (in *M3DBStatus) DeepCopy() *M3DBStatus
- func (in *M3DBStatus) DeepCopyInto(out *M3DBStatus)
- func (s *M3DBStatus) GetCondition(checkCond ClusterConditionType) (ClusterCondition, bool)
- func (s *M3DBStatus) HasInitializedPlacement() bool
- func (s *M3DBStatus) HasPodBootstrapping() bool
- func (s *M3DBStatus) UpdateCondition(newCond ClusterCondition)
- type Namespace
- type NamespaceOptions
- type NodeAffinityTerm
- type PodIdentity
- type PodIdentityConfig
- type PodIdentitySource
- type RetentionOptions
Constants ¶
This section is empty.
Variables ¶
var ( // SchemeBuilder provides the schemebuilder SchemeBuilder runtime.SchemeBuilder // AddToScheme will provide the addtoscheme function AddToScheme = localSchemeBuilder.AddToScheme )
localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
var SchemeGroupVersion = schema.GroupVersion{Group: m3dboperator.GroupName, Version: m3dboperator.Version}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func GetOpenAPIDefinitions ¶ added in v0.3.0
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type ClusterCondition ¶
type ClusterCondition struct { // Type of cluster condition. Type ClusterConditionType `json:"type,omitempty"` // Status of the condition (True, False, Unknown). Status corev1.ConditionStatus `json:"status,omitempty"` // Last time this condition was updated. LastUpdateTime string `json:"lastUpdateTime,omitempty"` // Last time this condition transitioned from one status to another. LastTransitionTime string `json:"lastTransitionTime,omitempty"` // Reason this condition last changed. Reason string `json:"reason,omitempty"` // Human-friendly message about this condition. Message string `json:"message,omitempty"` }
ClusterCondition represents various conditions the cluster can be in. +k8s:openapi-gen=true
func (*ClusterCondition) DeepCopy ¶
func (in *ClusterCondition) DeepCopy() *ClusterCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCondition.
func (*ClusterCondition) DeepCopyInto ¶
func (in *ClusterCondition) DeepCopyInto(out *ClusterCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ClusterConditionType ¶
type ClusterConditionType string
ClusterConditionType represents the various type of cluster conditions.
const ( // ClusterConditionPlacementInitialized indicates an initial placement has // been created for the cluster. ClusterConditionPlacementInitialized ClusterConditionType = "PlacementInitialized" // ClusterConditionPodBootstrapping indicates there is a pod bootstrapping. ClusterConditionPodBootstrapping ClusterConditionType = "PodBootstrapping" )
type ClusterSpec ¶
type ClusterSpec struct { // Image specifies which docker image to use with the cluster Image string `json:"image,omitempty"` // ReplicationFactor defines how many replicas ReplicationFactor int32 `json:"replicationFactor,omitempty"` // NumberOfShards defines how many shards in total NumberOfShards int32 `json:"numberOfShards,omitempty"` // IsolationGroups specifies a map of key-value pairs. Defines which isolation groups // to deploy persistent volumes for data nodes IsolationGroups []IsolationGroup `json:"isolationGroups,omitempty"` // Namespaces specifies the namespaces this cluster will hold. Namespaces []Namespace `json:"namespaces,omitempty"` // EtcdEndpoints defines the etcd endpoints to use for service discovery. Must // be set if no custom configmap is defined. If set, etcd endpoints will be // templated in to the default configmap template. // +optional EtcdEndpoints []string `json:"etcdEndpoints,omitempty"` // KeepEtcdDataOnDelete determines whether the operator will remove cluster // metadata (placement + namespaces) in etcd when the cluster is deleted. // Unless true, etcd data will be cleared when the cluster is deleted. // +optional KeepEtcdDataOnDelete bool `json:"keepEtcdDataOnDelete,omitempty"` // EnableCarbonIngester enables the listener port for the carbon ingester // +optional EnableCarbonIngester bool `json:"enableCarbonIngester,omitempty"` // ConfigMapName specifies the ConfigMap to use for this cluster. If unset a // default configmap with template variables for etcd endpoints will be used. // See "Configuring M3DB" in the docs for more. // +optional ConfigMapName *string `json:"configMapName,omitempty"` // PodIdentityConfig sets the configuration for pod identity. If unset only // pod name and UID will be used. // +optional PodIdentityConfig *PodIdentityConfig `json:"podIdentityConfig,omitempty"` // Resources defines memory / cpu constraints for each container in the // cluster. // +optional ContainerResources corev1.ResourceRequirements `json:"containerResources,omitempty"` // DataDirVolumeClaimTemplate is the volume claim template for an M3DB // instance's data. It claims PersistentVolumes for cluster storage, volumes // are dynamically provisioned by when the StorageClass is defined. // +optional DataDirVolumeClaimTemplate *corev1.PersistentVolumeClaim `json:"dataDirVolumeClaimTemplate,omitempty"` // PodSecurityContext allows the user to specify an optional security context // for pods. PodSecurityContext *corev1.PodSecurityContext `json:"podSecurityContext,omitempty"` // SecurityContext allows the user to specify a container-level security // context. SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"` // ImagePullSecrets will be added to every pod. ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"` // EnvVars defines custom environment variables to be passed to M3DB // containers. // // +optional EnvVars []corev1.EnvVar `json:"envVars,omitempty"` // Labels sets the base labels that will be applied to resources created by // the cluster. // TODO(schallert): design doc on labeling scheme. Labels map[string]string `json:"labels,omitempty"` // Annotations sets the base annotations that will be applied to resources created by // the cluster. Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations"` // Tolerations sets the tolerations that will be applied to all M3DB pods. // +optional Tolerations []corev1.Toleration `json:"tolerations,omitempty"` // PriorityClassName sets the priority class for all M3DB pods. // +optional PriorityClassName string `json:"priorityClassName,omitempty"` // NodeEndpointFormat allows overriding of the endpoint used for a node in the // M3DB placement. Defaults to "{{ .PodName }}.{{ .M3DBService }}:{{ .Port }}". // Useful if access to the cluster from other namespaces is desired. See "Node // Endpoint" docs for full variables available. // +optional NodeEndpointFormat string `json:"nodeEndpointFormat,omitempty"` // HostNetwork indicates whether M3DB pods should run in the same network // namespace as the node its on. This option should be used sparingly due to // security concerns outlined in the linked documentation. // https://kubernetes.io/docs/concepts/policy/pod-security-policy/#host-namespaces // +optional HostNetwork bool `json:"hostNetwork,omitEmpty"` // DNSPolicy allows the user to set the pod's DNSPolicy. This is often used in // conjunction with HostNetwork.+optional // +optional DNSPolicy *corev1.DNSPolicy `json:"dnsPolicy,omitEmpty"` }
ClusterSpec defines the desired state for a M3 cluster to be converge to. +k8s:openapi-gen=true
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 IndexOptions ¶
type IndexOptions struct { // Enabled controls whether metric indexing is enabled. Enabled bool `json:"enabled,omitempty"` // BlockSize controls the index block size. BlockSize string `json:"blockSize,omitempty"` }
IndexOptions defines parameters for indexing.
func (*IndexOptions) DeepCopy ¶
func (in *IndexOptions) DeepCopy() *IndexOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexOptions.
func (*IndexOptions) DeepCopyInto ¶
func (in *IndexOptions) DeepCopyInto(out *IndexOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IsolationGroup ¶
type IsolationGroup struct { // Name is the value that will be used in StatefulSet labels, pod labels, and // M3DB placement "isolationGroup" fields. Name string `json:"name"` // NodeAffinityTerms is an array of NodeAffinityTerm requirements, which are // ANDed together to indicate what nodes an isolation group can be assigned // to. NodeAffinityTerms []NodeAffinityTerm `json:"nodeAffinityTerms,omitempty"` // NumInstances defines the number of instances. NumInstances int32 `json:"numInstances"` // StorageClassName is the name of the StorageClass to use for this isolation // group. This allows ensuring that PVs will be created in the same zone as // the pinned statefulset on Kubernetes < 1.12 (when topology aware volume // scheduling was introduced). Only has effect if the clusters // `dataDirVolumeClaimTemplate` is non-nil. If set, the volume claim template // will have its storageClassName field overridden per-isolationgroup. If // unset the storageClassName of the volumeClaimTemplate will be used. // +optional StorageClassName string `json:"storageClassName,omitempty"` }
IsolationGroup defines the name of zone as well attributes for the zone configuration +k8s:openapi-gen=true
func (*IsolationGroup) DeepCopy ¶
func (in *IsolationGroup) DeepCopy() *IsolationGroup
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IsolationGroup.
func (*IsolationGroup) DeepCopyInto ¶
func (in *IsolationGroup) DeepCopyInto(out *IsolationGroup)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IsolationGroups ¶
type IsolationGroups []IsolationGroup
IsolationGroups is a slice of IsolationGroup. IsolationGroups satisfies the sort.Sort interface, sorting by name.
func (IsolationGroups) DeepCopy ¶
func (in IsolationGroups) DeepCopy() IsolationGroups
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IsolationGroups.
func (IsolationGroups) DeepCopyInto ¶
func (in IsolationGroups) DeepCopyInto(out *IsolationGroups)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (IsolationGroups) GetByName ¶
func (g IsolationGroups) GetByName(name string) (IsolationGroup, bool)
GetByName fetches an IsolationGroup by name.
func (IsolationGroups) Len ¶
func (g IsolationGroups) Len() int
func (IsolationGroups) Less ¶
func (g IsolationGroups) Less(i, j int) bool
func (IsolationGroups) Swap ¶
func (g IsolationGroups) Swap(i, j int)
type M3DBCluster ¶
type M3DBCluster struct { metav1.TypeMeta `json:",inline"` // +k8s:openapi-gen=false metav1.ObjectMeta `json:"metadata,omitempty"` Type string `json:"type"` Spec ClusterSpec `json:"spec"` Status M3DBStatus `json:"status,omitempty"` }
M3DBCluster defines the cluster +genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +k8s:openapi-gen=true
func (*M3DBCluster) DeepCopy ¶
func (in *M3DBCluster) DeepCopy() *M3DBCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new M3DBCluster.
func (*M3DBCluster) DeepCopyInto ¶
func (in *M3DBCluster) DeepCopyInto(out *M3DBCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*M3DBCluster) DeepCopyObject ¶
func (in *M3DBCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type M3DBClusterList ¶
type M3DBClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []M3DBCluster `json:"items"` }
M3DBClusterList represents a list of M3DB Clusters +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +k8s:openapi-gen=true
func (*M3DBClusterList) DeepCopy ¶
func (in *M3DBClusterList) DeepCopy() *M3DBClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new M3DBClusterList.
func (*M3DBClusterList) DeepCopyInto ¶
func (in *M3DBClusterList) DeepCopyInto(out *M3DBClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*M3DBClusterList) DeepCopyObject ¶
func (in *M3DBClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type M3DBStatus ¶
type M3DBStatus struct { // State is a enum of green, yellow, and red denoting the health of the // cluster State M3DBState `json:"state,omitempty"` // Various conditions about the cluster. Conditions []ClusterCondition `json:"conditions,omitempty"` // Message is a human readable message indicating why the cluster is in it's // current state Message string `json:"message,omitempty"` // ObservedGeneration is the last generation of the cluster the controller // observed. Kubernetes will automatically increment metadata.Generation every // time the cluster spec is changed. ObservedGeneration int64 `json:"observedGeneration,omitempty"` }
M3DBStatus contains the current state the M3DB cluster along with a human readable message +k8s:openapi-gen=true
func (*M3DBStatus) DeepCopy ¶
func (in *M3DBStatus) DeepCopy() *M3DBStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new M3DBStatus.
func (*M3DBStatus) DeepCopyInto ¶
func (in *M3DBStatus) DeepCopyInto(out *M3DBStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*M3DBStatus) GetCondition ¶
func (s *M3DBStatus) GetCondition(checkCond ClusterConditionType) (ClusterCondition, bool)
GetCondition returns the specified cluster condition if it exists with a bool indicating whether it was found.
func (*M3DBStatus) HasInitializedPlacement ¶
func (s *M3DBStatus) HasInitializedPlacement() bool
HasInitializedPlacement returns true if the conditions indicate an initial placement has been created.
func (*M3DBStatus) HasPodBootstrapping ¶
func (s *M3DBStatus) HasPodBootstrapping() bool
HasPodBootstrapping returns true if conditions indicate a pod is currently bootstrapping.
func (*M3DBStatus) UpdateCondition ¶
func (s *M3DBStatus) UpdateCondition(newCond ClusterCondition)
UpdateCondition updates one of the status's conditions, replacing the state of cond.Type if it exists or adding the condition if it doesn't exist.
type Namespace ¶
type Namespace struct { // Name is the namespace name. Name string `json:"name,omitempty"` // Preset indicates preset namespace options. Preset string `json:"preset,omitempty"` // Options points to optional custom namespace configuration. // +optional Options *NamespaceOptions `json:"options,omitempty"` }
Namespace defines an M3DB namespace or points to a preset M3DB namespace.
func (*Namespace) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Namespace.
func (*Namespace) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NamespaceOptions ¶
type NamespaceOptions struct { // BootstrapEnabled control if bootstrapping is enabled. BootstrapEnabled bool `json:"bootstrapEnabled,omitempty"` // FlushEnabled controls whether flushing is enabled. FlushEnabled bool `json:"flushEnabled,omitempty"` // WritesToCommitLog controls whether commit log writes are enabled. WritesToCommitLog bool `json:"writesToCommitLog,omitempty"` // CleanupEnabled controls whether cleanups are enabled. CleanupEnabled bool `json:"cleanupEnabled,omitempty"` // RepairEnabled controls whether repairs are enabled. RepairEnabled bool `json:"repairEnabled,omitempty"` // SnapshotEnabled controls whether snapshotting is enabled. SnapshotEnabled bool `json:"snapshotEnabled,omitempty"` // RetentionOptions sets the retention parameters. RetentionOptions RetentionOptions `json:"retentionOptions,omitempty"` // IndexOptions sets the indexing parameters. IndexOptions IndexOptions `json:"indexOptions,omitempty"` }
NamespaceOptions defines parameters for an M3DB namespace. See https://m3db.github.io/m3/operational_guide/namespace_configuration/ for more details.
func (*NamespaceOptions) DeepCopy ¶
func (in *NamespaceOptions) DeepCopy() *NamespaceOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceOptions.
func (*NamespaceOptions) DeepCopyInto ¶
func (in *NamespaceOptions) DeepCopyInto(out *NamespaceOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NodeAffinityTerm ¶ added in v0.2.0
type NodeAffinityTerm struct { // Key is the label of the node. Key string `json:"key"` // Values is an array of values, any of which a node can have for a pod to be // assigned to it. Values []string `json:"values"` }
NodeAffinityTerm represents a node label and a set of label values, any of which can be matched to assign a pod to a node. +k8s:openapi-gen=true
func (*NodeAffinityTerm) DeepCopy ¶ added in v0.2.0
func (in *NodeAffinityTerm) DeepCopy() *NodeAffinityTerm
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAffinityTerm.
func (*NodeAffinityTerm) DeepCopyInto ¶ added in v0.2.0
func (in *NodeAffinityTerm) DeepCopyInto(out *NodeAffinityTerm)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodIdentity ¶
type PodIdentity struct { Name string `json:"name,omitempty"` UID string `json:"uid,omitempty"` NodeName string `json:"nodeName,omitempty"` NodeExternalID string `json:"nodeExternalID,omitempty"` NodeProviderID string `json:"nodeProviderID,omitempty"` }
PodIdentity contains all the fields that may be used to identify a pod's identity in the M3DB placement. Any non-empty fields will be used to identity uniqueness of a pod for the purpose of M3DB replace operations.
func (*PodIdentity) DeepCopy ¶
func (in *PodIdentity) DeepCopy() *PodIdentity
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodIdentity.
func (*PodIdentity) DeepCopyInto ¶
func (in *PodIdentity) DeepCopyInto(out *PodIdentity)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodIdentityConfig ¶
type PodIdentityConfig struct { // Sources enumerates the sources from which to derive pod identity. Note that // a pod's name will always be used. If empty, defaults to pod name and // UID. Sources []PodIdentitySource `json:"sources"` }
PodIdentityConfig contains cluster-level configuration for deriving pod identity.
func (*PodIdentityConfig) DeepCopy ¶
func (in *PodIdentityConfig) DeepCopy() *PodIdentityConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodIdentityConfig.
func (*PodIdentityConfig) DeepCopyInto ¶
func (in *PodIdentityConfig) DeepCopyInto(out *PodIdentityConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodIdentitySource ¶
type PodIdentitySource string
PodIdentitySource indicates a pre-defined source for deriving pod identity.
const ( // PodIdentitySourcePodUID derives identity from UID of the pod. PodIdentitySourcePodUID PodIdentitySource = "PodUID" // PodIdentitySourceNodeSpecExternalID derives identity from the 'externalID' // spec field of the node. Note this field was deprecated after Kubernetes // 1.11. PodIdentitySourceNodeSpecExternalID PodIdentitySource = "NodeSpecExternalID" // PodIdentitySourceNodeSpecProviderID derives identity from the 'providerID' // spec field of the node. PodIdentitySourceNodeSpecProviderID PodIdentitySource = "NodeSpecProviderID" // PodIdentitySourceNodeName derives identity from the node's name. PodIdentitySourceNodeName PodIdentitySource = "NodeName" )
type RetentionOptions ¶
type RetentionOptions struct { // RetentionPeriod controls how long data for the namespace is retained. RetentionPeriod string `json:"retentionPeriod,omitempty"` // BlockSize controls the block size for the namespace. BlockSize string `json:"blockSize,omitempty"` // BufferFuture controls how far in the future metrics can be written. BufferFuture string `json:"bufferFuture,omitempty"` // BufferPast controls how far in the past metrics can be written. BufferPast string `json:"bufferPast,omitempty"` // BlockDataExpiry controls the block expiry. BlockDataExpiry bool `json:"blockDataExpiry,omitempty"` // BlockDataExpiry controls the not after access period for expiration. BlockDataExpiryAfterNotAccessPeriod string `json:"blockDataExpiryAfterNotAccessPeriod,omitempty"` }
RetentionOptions defines parameters for data retention.
func (*RetentionOptions) DeepCopy ¶
func (in *RetentionOptions) DeepCopy() *RetentionOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionOptions.
func (*RetentionOptions) DeepCopyInto ¶
func (in *RetentionOptions) DeepCopyInto(out *RetentionOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.