Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the etcd.aenix.io v1alpha1 API group +kubebuilder:object:generate=true +groupName=etcd.aenix.io
Index ¶
- Constants
- Variables
- type EmbeddedMetadataResource
- type EmbeddedObjectMetadata
- type EmbeddedPersistentVolumeClaim
- type EmbeddedPodDisruptionBudget
- type EmbeddedService
- type EtcdCluster
- func (r *EtcdCluster) CalculateQuorumSize() int
- func (in *EtcdCluster) DeepCopy() *EtcdCluster
- func (in *EtcdCluster) DeepCopyInto(out *EtcdCluster)
- func (in *EtcdCluster) DeepCopyObject() runtime.Object
- func (r *EtcdCluster) Default()
- func (c *EtcdCluster) IsClientSecurityEnabled() bool
- func (c *EtcdCluster) IsServerSecurityEnabled() bool
- func (c *EtcdCluster) IsServerTrustedCADefined() bool
- func (r *EtcdCluster) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *EtcdCluster) ValidateCreate() (admission.Warnings, error)
- func (r *EtcdCluster) ValidateDelete() (admission.Warnings, error)
- func (r *EtcdCluster) ValidateUpdate(old runtime.Object) (admission.Warnings, error)
- type EtcdClusterList
- type EtcdClusterSpec
- type EtcdClusterStatus
- type EtcdCondMessage
- type EtcdCondType
- type PodDisruptionBudgetSpec
- type PodTemplate
- type SecuritySpec
- type StorageSpec
- type TLSSpec
Constants ¶
const ( EtcdConditionInitialized = "Initialized" EtcdConditionReady = "Ready" EtcdConditionError = "Error" )
const DefaultEtcdImage = "quay.io/coreos/etcd:v3.5.12"
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "etcd.aenix.io", Version: "v1alpha1"} // 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 EmbeddedMetadataResource ¶ added in v0.2.0
type EmbeddedMetadataResource struct {
// EmbeddedMetadata contains metadata relevant to an EmbeddedResource.
// +optional
EmbeddedObjectMetadata `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
}
func (*EmbeddedMetadataResource) DeepCopy ¶ added in v0.2.0
func (in *EmbeddedMetadataResource) DeepCopy() *EmbeddedMetadataResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedMetadataResource.
func (*EmbeddedMetadataResource) DeepCopyInto ¶ added in v0.2.0
func (in *EmbeddedMetadataResource) DeepCopyInto(out *EmbeddedMetadataResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EmbeddedObjectMetadata ¶ added in v0.0.2
type EmbeddedObjectMetadata struct {
// Name must be unique within a namespace. Is required when creating resources, although
// some resources may allow a client to request the generation of an appropriate name
// automatically. Name is primarily intended for creation idempotence and configuration
// definition.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
// +optional
Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
// Labels 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
// +optional
Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"`
// 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: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
// +optional
Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,12,rep,name=annotations"`
}
EmbeddedObjectMetadata contains a subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta Only fields which are relevant to embedded resources are included.
func (*EmbeddedObjectMetadata) DeepCopy ¶ added in v0.0.2
func (in *EmbeddedObjectMetadata) DeepCopy() *EmbeddedObjectMetadata
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedObjectMetadata.
func (*EmbeddedObjectMetadata) DeepCopyInto ¶ added in v0.0.2
func (in *EmbeddedObjectMetadata) DeepCopyInto(out *EmbeddedObjectMetadata)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*EmbeddedObjectMetadata) ToObjectMeta ¶ added in v0.2.0
func (r *EmbeddedObjectMetadata) ToObjectMeta() metav1.ObjectMeta
ToObjectMeta converts EmbeddedObjectMetadata to metav1.ObjectMeta
type EmbeddedPersistentVolumeClaim ¶ added in v0.0.2
type EmbeddedPersistentVolumeClaim struct {
metav1.TypeMeta `json:",inline"`
// EmbeddedMetadata contains metadata relevant to an EmbeddedResource.
// +optional
EmbeddedObjectMetadata `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Spec defines the desired characteristics of a volume requested by a pod author.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
// +optional
Spec corev1.PersistentVolumeClaimSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
// Status represents the current information/status of a persistent volume claim.
// Read-only.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
// +optional
Status corev1.PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
EmbeddedPersistentVolumeClaim is an embedded version of k8s.io/api/core/v1.PersistentVolumeClaim. It contains TypeMeta and a reduced ObjectMeta.
func (*EmbeddedPersistentVolumeClaim) DeepCopy ¶ added in v0.0.2
func (in *EmbeddedPersistentVolumeClaim) DeepCopy() *EmbeddedPersistentVolumeClaim
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedPersistentVolumeClaim.
func (*EmbeddedPersistentVolumeClaim) DeepCopyInto ¶ added in v0.0.2
func (in *EmbeddedPersistentVolumeClaim) DeepCopyInto(out *EmbeddedPersistentVolumeClaim)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EmbeddedPodDisruptionBudget ¶ added in v0.1.0
type EmbeddedPodDisruptionBudget struct {
// EmbeddedMetadata contains metadata relevant to an EmbeddedResource.
// +optional
EmbeddedObjectMetadata `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Spec defines the desired characteristics of a PDB.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#pod-disruption-budgets
// +optional
Spec PodDisruptionBudgetSpec `json:"spec"`
}
EmbeddedPodDisruptionBudget describes PDB resource for etcd cluster members
func (*EmbeddedPodDisruptionBudget) DeepCopy ¶ added in v0.1.0
func (in *EmbeddedPodDisruptionBudget) DeepCopy() *EmbeddedPodDisruptionBudget
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedPodDisruptionBudget.
func (*EmbeddedPodDisruptionBudget) DeepCopyInto ¶ added in v0.1.0
func (in *EmbeddedPodDisruptionBudget) DeepCopyInto(out *EmbeddedPodDisruptionBudget)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EmbeddedService ¶ added in v0.2.0
type EmbeddedService struct {
// EmbeddedMetadata contains metadata relevant to an EmbeddedResource.
// +optional
EmbeddedObjectMetadata `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Spec defines the behavior of the service.
// +optional
Spec corev1.ServiceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}
func (*EmbeddedService) DeepCopy ¶ added in v0.2.0
func (in *EmbeddedService) DeepCopy() *EmbeddedService
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmbeddedService.
func (*EmbeddedService) DeepCopyInto ¶ added in v0.2.0
func (in *EmbeddedService) DeepCopyInto(out *EmbeddedService)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EtcdCluster ¶
type EtcdCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec EtcdClusterSpec `json:"spec,omitempty"`
Status EtcdClusterStatus `json:"status,omitempty"`
}
EtcdCluster is the Schema for the etcdclusters API
func (*EtcdCluster) CalculateQuorumSize ¶ added in v0.1.0
func (r *EtcdCluster) CalculateQuorumSize() int
CalculateQuorumSize returns minimum quorum size for current number of replicas
func (*EtcdCluster) DeepCopy ¶
func (in *EtcdCluster) DeepCopy() *EtcdCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdCluster.
func (*EtcdCluster) DeepCopyInto ¶
func (in *EtcdCluster) DeepCopyInto(out *EtcdCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*EtcdCluster) DeepCopyObject ¶
func (in *EtcdCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*EtcdCluster) Default ¶
func (r *EtcdCluster) Default()
Default implements webhook.Defaulter so a webhook will be registered for the type
func (*EtcdCluster) IsClientSecurityEnabled ¶ added in v0.3.0
func (c *EtcdCluster) IsClientSecurityEnabled() bool
func (*EtcdCluster) IsServerSecurityEnabled ¶ added in v0.3.0
func (c *EtcdCluster) IsServerSecurityEnabled() bool
func (*EtcdCluster) IsServerTrustedCADefined ¶ added in v0.3.0
func (c *EtcdCluster) IsServerTrustedCADefined() bool
func (*EtcdCluster) SetupWebhookWithManager ¶
func (r *EtcdCluster) SetupWebhookWithManager(mgr ctrl.Manager) error
SetupWebhookWithManager will setup the manager to manage the webhooks
func (*EtcdCluster) ValidateCreate ¶
func (r *EtcdCluster) ValidateCreate() (admission.Warnings, error)
ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (*EtcdCluster) ValidateDelete ¶
func (r *EtcdCluster) ValidateDelete() (admission.Warnings, error)
ValidateDelete implements webhook.Validator so a webhook will be registered for the type
func (*EtcdCluster) ValidateUpdate ¶
ValidateUpdate implements webhook.Validator so a webhook will be registered for the type
type EtcdClusterList ¶
type EtcdClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []EtcdCluster `json:"items"`
}
EtcdClusterList contains a list of EtcdCluster
func (*EtcdClusterList) DeepCopy ¶
func (in *EtcdClusterList) DeepCopy() *EtcdClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdClusterList.
func (*EtcdClusterList) DeepCopyInto ¶
func (in *EtcdClusterList) DeepCopyInto(out *EtcdClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*EtcdClusterList) DeepCopyObject ¶
func (in *EtcdClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type EtcdClusterSpec ¶
type EtcdClusterSpec struct {
// Replicas is the count of etcd instances in cluster.
// +optional
// +kubebuilder:default:=3
// +kubebuilder:validation:Minimum:=0
Replicas *int32 `json:"replicas,omitempty"`
// Options are the extra arguments to pass to the etcd container.
// +optional
// +kubebuilder:example:={enable-v2: "false", debug: "true"}
Options map[string]string `json:"options,omitempty"`
// PodTemplate defines the desired state of PodSpec for etcd members. If not specified, default values will be used.
PodTemplate PodTemplate `json:"podTemplate,omitempty"`
// Service defines the desired state of Service for etcd members. If not specified, default values will be used.
// +optional
ServiceTemplate *EmbeddedService `json:"serviceTemplate,omitempty"`
// HeadlessService defines the desired state of HeadlessService for etcd members. If not specified, default values will be used.
// +optional
HeadlessServiceTemplate *EmbeddedMetadataResource `json:"headlessServiceTemplate,omitempty"`
// PodDisruptionBudgetTemplate describes PDB resource to create for etcd cluster members. Nil to disable.
// +optional
PodDisruptionBudgetTemplate *EmbeddedPodDisruptionBudget `json:"podDisruptionBudgetTemplate,omitempty"`
Storage StorageSpec `json:"storage"`
// Security describes security settings of etcd (authentication, certificates, rbac)
// +optional
Security *SecuritySpec `json:"security,omitempty"`
}
EtcdClusterSpec defines the desired state of EtcdCluster
func (*EtcdClusterSpec) DeepCopy ¶
func (in *EtcdClusterSpec) DeepCopy() *EtcdClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdClusterSpec.
func (*EtcdClusterSpec) DeepCopyInto ¶
func (in *EtcdClusterSpec) DeepCopyInto(out *EtcdClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EtcdClusterStatus ¶
EtcdClusterStatus defines the observed state of EtcdCluster
func (*EtcdClusterStatus) DeepCopy ¶
func (in *EtcdClusterStatus) DeepCopy() *EtcdClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdClusterStatus.
func (*EtcdClusterStatus) DeepCopyInto ¶
func (in *EtcdClusterStatus) DeepCopyInto(out *EtcdClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EtcdCondMessage ¶ added in v0.0.2
type EtcdCondMessage string
const ( EtcdInitCondNegMessage EtcdCondMessage = "Cluster initialization started" EtcdInitCondPosMessage EtcdCondMessage = "Cluster managed resources created" EtcdReadyCondNegMessage EtcdCondMessage = "Cluster StatefulSet is not Ready" EtcdReadyCondPosMessage EtcdCondMessage = "Cluster StatefulSet is Ready" EtcdReadyCondNegWaitingForQuorum EtcdCondMessage = "Waiting for first quorum to be established" EtcdErrorCondSplitbrainMessage EtcdCondMessage = "Etcd endpoints reporting more than one unique cluster ID" )
type EtcdCondType ¶ added in v0.0.1
type EtcdCondType string
const ( EtcdCondTypeInitStarted EtcdCondType = "InitializationStarted" EtcdCondTypeInitComplete EtcdCondType = "InitializationComplete" EtcdCondTypeWaitingForFirstQuorum EtcdCondType = "WaitingForFirstQuorum" EtcdCondTypeStatefulSetReady EtcdCondType = "StatefulSetReady" EtcdCondTypeStatefulSetNotReady EtcdCondType = "StatefulSetNotReady" EtcdCondTypeSplitbrain EtcdCondType = "Splitbrain" )
type PodDisruptionBudgetSpec ¶ added in v0.1.0
type PodDisruptionBudgetSpec struct {
// MinAvailable describes minimum ready replicas. If both are empty, controller will implicitly
// calculate MaxUnavailable based on number of replicas
// Mutually exclusive with MaxUnavailable.
// +optional
MinAvailable *intstr.IntOrString `json:"minAvailable,omitempty"`
// calculate MaxUnavailable based on number of replicas
// Mutually exclusive with MinAvailable
// +optional
MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
}
func (*PodDisruptionBudgetSpec) DeepCopy ¶ added in v0.1.0
func (in *PodDisruptionBudgetSpec) DeepCopy() *PodDisruptionBudgetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudgetSpec.
func (*PodDisruptionBudgetSpec) DeepCopyInto ¶ added in v0.1.0
func (in *PodDisruptionBudgetSpec) DeepCopyInto(out *PodDisruptionBudgetSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodTemplate ¶ added in v0.1.0
type PodTemplate struct {
// EmbeddedObjectMetadata contains metadata relevant to an EmbeddedResource
// +optional
EmbeddedObjectMetadata `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Spec follows the structure of a regular Pod spec. Overrides defined here will be strategically merged with the default pod spec, generated by the operator.
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
Spec corev1.PodSpec `json:"spec,omitempty"`
}
PodTemplate allows overrides, such as sidecars, init containers, changes to the security context, etc to the pod template generated by the operator.
func (*PodTemplate) DeepCopy ¶ added in v0.1.0
func (in *PodTemplate) DeepCopy() *PodTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodTemplate.
func (*PodTemplate) DeepCopyInto ¶ added in v0.1.0
func (in *PodTemplate) DeepCopyInto(out *PodTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecuritySpec ¶ added in v0.1.0
type SecuritySpec struct {
// Section for user-managed tls certificates
// +optional
TLS TLSSpec `json:"tls,omitempty"`
// Section to enable etcd auth
EnableAuth bool `json:"enableAuth,omitempty"`
}
SecuritySpec defines security settings for etcd. +k8s:openapi-gen=true
func (*SecuritySpec) DeepCopy ¶ added in v0.1.0
func (in *SecuritySpec) DeepCopy() *SecuritySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecuritySpec.
func (*SecuritySpec) DeepCopyInto ¶ added in v0.1.0
func (in *SecuritySpec) DeepCopyInto(out *SecuritySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type StorageSpec ¶ added in v0.0.2
type StorageSpec struct {
// EmptyDirVolumeSource to be used by the StatefulSets. If specified, used in place of any volumeClaimTemplate. More
// info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
// +optional
EmptyDir *corev1.EmptyDirVolumeSource `json:"emptyDir,omitempty"`
// A PVC spec to be used by the StatefulSets.
// +optional
VolumeClaimTemplate EmbeddedPersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`
}
StorageSpec defines the configured storage for a etcd members. If neither `emptyDir` nor `volumeClaimTemplate` is specified, then by default an [EmptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) will be used. +k8s:openapi-gen=true
func (*StorageSpec) DeepCopy ¶ added in v0.0.2
func (in *StorageSpec) DeepCopy() *StorageSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageSpec.
func (*StorageSpec) DeepCopyInto ¶ added in v0.0.2
func (in *StorageSpec) DeepCopyInto(out *StorageSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TLSSpec ¶ added in v0.1.0
type TLSSpec struct {
// Trusted CA certificate secret to secure peer-to-peer communication between etcd nodes. It is expected to have ca.crt field in the secret.
// This secret must be created in the namespace with etcdCluster CR.
// +optional
PeerTrustedCASecret string `json:"peerTrustedCASecret,omitempty"`
// Certificate secret to secure peer-to-peer communication between etcd nodes. It is expected to have tls.crt and tls.key fields in the secret.
// This secret must be created in the namespace with etcdCluster CR.
// +optional
PeerSecret string `json:"peerSecret,omitempty"`
// Trusted CA for etcd server certificates for client-server communication. Is necessary to set trust between operator and etcd.
// It is expected to have ca.crt field in the secret. If it is not specified, then insecure communication will be used.
// This secret must be created in the namespace with etcdCluster CR.
// +optional
ServerTrustedCASecret string `json:"serverTrustedCASecret,omitempty"`
// Server certificate secret to secure client-server communication. Is provided to the client who connects to etcd by client port (2379 by default).
// It is expected to have tls.crt and tls.key fields in the secret.
// This secret must be created in the namespace with etcdCluster CR.
// +optional
ServerSecret string `json:"serverSecret,omitempty"`
// Trusted CA for client certificates that are provided by client to etcd. It is expected to have ca.crt field in the secret.
// This secret must be created in the namespace with etcdCluster CR.
// +optional
ClientTrustedCASecret string `json:"clientTrustedCASecret,omitempty"`
// Client certificate for etcd-operator to do maintenance. It is expected to have tls.crt and tls.key fields in the secret.
// This secret must be created in the namespace with etcdCluster CR.
// +optional
ClientSecret string `json:"clientSecret,omitempty"`
}
TLSSpec defines user-managed certificates names.
func (*TLSSpec) DeepCopy ¶ added in v0.1.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSSpec.
func (*TLSSpec) DeepCopyInto ¶ added in v0.1.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.