Documentation
¶
Overview ¶
Package v1 contains API Schema definitions for the asdb v1 API group +kubebuilder:object:generate=true +groupName=asdb.aerospike.com
Index ¶
- Constants
- Variables
- func ClusterNamespacedName(aeroCluster *AerospikeCluster) string
- func DistributeItems(totalItems, totalGroups int32) []int32
- func GetAerospikeInitContainerImage(aeroCluster *AerospikeCluster) string
- func GetAllPodNames(pods map[string]AerospikePodStatus) sets.Set[string]
- func GetBool(boolPtr *bool) bool
- func GetBoolConfig(configMap map[string]interface{}, key string) (bool, error)
- func GetConfigContext(aerospikeConfig map[string]interface{}, context string) (map[string]interface{}, error)
- func GetConfiguredWorkDirectory(aerospikeConfigSpec AerospikeConfigSpec) string
- func GetDefaultPasswordFilePath(aerospikeConfigSpec *AerospikeConfigSpec) *string
- func GetDigestLogFile(aerospikeConfigSpec AerospikeConfigSpec) (*string, error)
- func GetFabricPort(aeroConf *AerospikeConfigSpec) *int32
- func GetFabricTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int32)
- func GetHeartbeatPort(aeroConf *AerospikeConfigSpec) *int32
- func GetHeartbeatTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int32)
- func GetImageVersion(imageStr string) (string, error)
- func GetIntType(value interface{}) (int, error)
- func GetMigrateFillDelay(asConfig *AerospikeConfigSpec) (int, error)
- func GetPortFromConfig(aeroConf *AerospikeConfigSpec, connectionType string, paramName string) *int32
- func GetRolesFromSpec(spec *AerospikeClusterSpec) map[string]AerospikeRoleSpec
- func GetServicePort(aeroConf *AerospikeConfigSpec) *int32
- func GetServiceTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int32)
- func GetTLSNameAndPort(aeroConf *AerospikeConfigSpec, connectionType string) (tlsName string, port *int32)
- func GetUsersFromSpec(spec *AerospikeClusterSpec) map[string]AerospikeUserSpec
- func GetWorkDirectory(aerospikeConfigSpec AerospikeConfigSpec) string
- func IsAerospikeAccessControlValid(aerospikeClusterSpec *AerospikeClusterSpec) (bool, error)
- func IsAerospikeNamespacePresent(aerospikeConfigSpec AerospikeConfigSpec, namespaceName string) bool
- func IsAttributeEnabled(aerospikeConfig map[string]interface{}, context, key string) (bool, error)
- func IsClientCertConfigured(certSpec *AerospikeOperatorClientCertSpec) bool
- func IsClusterSCEnabled(aeroCluster *AerospikeCluster) bool
- func IsNSSCEnabled(nsConf map[string]interface{}) bool
- func IsPathParentOrSame(dir1, dir2 string) bool
- func IsSecurityEnabled(aerospikeConfig map[string]interface{}) (bool, error)
- func IsServiceTLSEnabled(aerospikeConfigSpec *AerospikeConfigSpec) bool
- func IsXdrEnabled(aerospikeConfigSpec AerospikeConfigSpec) bool
- func NamespacedName(namespace, name string) string
- func ParseDockerImageTag(tag string) (registry string, name string, version string)
- func ReadTLSAuthenticateClient(serviceConf map[string]interface{}) ([]string, error)
- type AerospikeAccessControlSpec
- type AerospikeCertPathInOperatorSource
- type AerospikeClientAdminPolicy
- type AerospikeCluster
- type AerospikeClusterList
- type AerospikeClusterPhase
- type AerospikeClusterSpec
- type AerospikeClusterStatus
- type AerospikeClusterStatusSpec
- type AerospikeConfigSpec
- type AerospikeContainerSpec
- type AerospikeInitContainerSpec
- type AerospikeInstanceSummary
- type AerospikeNetworkPolicy
- type AerospikeNetworkType
- type AerospikeObjectMeta
- type AerospikeOperatorCertSource
- type AerospikeOperatorClientCertSpec
- type AerospikePersistentVolumePolicySpec
- type AerospikePodSpec
- type AerospikePodStatus
- type AerospikeRoleSpec
- type AerospikeSecretCertSource
- type AerospikeServerVolumeAttachment
- type AerospikeStorageSpec
- type AerospikeUserSpec
- type AerospikeVolumeMethod
- type AttachmentOptions
- type CaCertsSource
- type DynamicConfigUpdateStatus
- type LoadBalancerSpec
- type MountOptions
- type OperationKind
- type OperationSpec
- type PersistentVolumeSpec
- type PrivilegeScope
- type Rack
- type RackConfig
- type RackPodSpec
- type SchedulingPolicy
- type SeedsFinderServices
- type ServiceSpec
- type ValidationPolicySpec
- type VolumeAttachment
- type VolumeSource
- type VolumeSpec
Constants ¶
const ( // AdminUsername for aerospike cluster AdminUsername = "admin" // DefaultAdminPassword si default admin user password. DefaultAdminPassword = "admin" )
const ( // AerospikeVolumeMethodNone specifies the block volume should not be initialized. AerospikeVolumeMethodNone AerospikeVolumeMethod = "none" // AerospikeVolumeMethodDD specifies the block volume should be zeroed using dd command. AerospikeVolumeMethodDD AerospikeVolumeMethod = "dd" // AerospikeVolumeMethodBlkdiscard specifies that block volume should be discarded using the blkdiscard command. AerospikeVolumeMethodBlkdiscard AerospikeVolumeMethod = "blkdiscard" // AerospikeVolumeMethodBlkdiscardWithHeaderCleanup specifies that the block volume // should be discarded using the blkdiscard command, along with an 8MiB header cleanup. // Use this method only if the underlying device does not contain old Aerospike data. AerospikeVolumeMethodBlkdiscardWithHeaderCleanup AerospikeVolumeMethod = "blkdiscardWithHeaderCleanup" // AerospikeVolumeMethodDeleteFiles specifies the filesystem volume // should be initialized by deleting files. AerospikeVolumeMethodDeleteFiles AerospikeVolumeMethod = "deleteFiles" // AerospikeVolumeSingleCleanupThread specifies the single thread // for disks cleanup in init container. AerospikeVolumeSingleCleanupThread int = 1 )
const ( // DefaultRackID is the ID for the default rack created when no racks are specified. DefaultRackID = 0 MaxRackID = 1000000 MinRackID = 1 ServiceTLSPortName = "tls-service" ServicePortName = "service" HeartbeatTLSPortName = "tls-heartbeat" HeartbeatPortName = "heartbeat" FabricTLSPortName = "tls-fabric" FabricPortName = "fabric" InfoPortName = "info" )
const ( ConfKeyTLSName = "tls-name" ConfKeyStorageEngine = "storage-engine" // Network section keys. ConfKeyNetwork = "network" ConfKeyNetworkService = "service" // Defaults. DefaultWorkDirectory = "/opt/aerospike" )
const ( AerospikeServerContainerName = "aerospike-server" AerospikeInitContainerName = "aerospike-init" AerospikeInitContainerRegistryEnvVar = "AEROSPIKE_KUBERNETES_INIT_REGISTRY" AerospikeInitContainerRegistryNamespaceEnvVar = "AEROSPIKE_KUBERNETES_INIT_REGISTRY_NAMESPACE" AerospikeInitContainerNameTagEnvVar = "AEROSPIKE_KUBERNETES_INIT_NAME_TAG" AerospikeInitContainerDefaultRegistry = "docker.io" AerospikeInitContainerDefaultRegistryNamespace = "aerospike" AerospikeInitContainerDefaultNameAndTag = "aerospike-kubernetes-init:2.3.0-dev3" AerospikeAppLabel = "app" AerospikeAppLabelValue = "aerospike-cluster" AerospikeCustomResourceLabel = "aerospike.com/cr" AerospikeRackIDLabel = "aerospike.com/rack-id" AerospikeAPIVersionLabel = "aerospike.com/api-version" AerospikeAPIVersion = "v1" )
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "asdb.aerospike.com", Version: "v1"} // 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 )
var PredefinedRoles = map[string]struct{}{
"user-admin": {},
"sys-admin": {},
"data-admin": {},
"read": {},
"read-write": {},
"read-write-udf": {},
"write": {},
"truncate": {},
"sindex-admin": {},
"udf-admin": {},
}
PredefinedRoles are all roles predefined in Aerospike server.
var Privileges = map[string][]PrivilegeScope{ "read": {Global, NamespaceSet}, "write": {Global, NamespaceSet}, "read-write": {Global, NamespaceSet}, "read-write-udf": {Global, NamespaceSet}, "data-admin": {Global}, "sys-admin": {Global}, "user-admin": {Global}, "truncate": {Global, NamespaceSet}, "sindex-admin": {Global}, "udf-admin": {Global}, }
Privileges are all privilege string allowed in the spec and associated scopes.
Functions ¶
func ClusterNamespacedName ¶
func ClusterNamespacedName(aeroCluster *AerospikeCluster) string
func DistributeItems ¶
func GetAerospikeInitContainerImage ¶
func GetAerospikeInitContainerImage(aeroCluster *AerospikeCluster) string
func GetAllPodNames ¶
func GetAllPodNames(pods map[string]AerospikePodStatus) sets.Set[string]
func GetBool ¶
GetBool returns the value of the given bool pointer. If the pointer is nil, it returns false.
func GetConfigContext ¶
func GetConfiguredWorkDirectory ¶
func GetConfiguredWorkDirectory(aerospikeConfigSpec AerospikeConfigSpec) string
GetConfiguredWorkDirectory returns the Aerospike work directory configured in aerospikeConfig.
func GetDefaultPasswordFilePath ¶
func GetDefaultPasswordFilePath(aerospikeConfigSpec *AerospikeConfigSpec) *string
GetDefaultPasswordFilePath returns the default-password-fille path if configured.
func GetDigestLogFile ¶
func GetDigestLogFile(aerospikeConfigSpec AerospikeConfigSpec) ( *string, error, )
GetDigestLogFile returns the xdr digest file path if configured.
func GetFabricPort ¶
func GetFabricPort(aeroConf *AerospikeConfigSpec) *int32
func GetFabricTLSNameAndPort ¶
func GetFabricTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int32)
func GetHeartbeatPort ¶
func GetHeartbeatPort(aeroConf *AerospikeConfigSpec) *int32
func GetHeartbeatTLSNameAndPort ¶
func GetHeartbeatTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int32)
func GetImageVersion ¶
GetImageVersion extracts the Aerospike version from a container image. The implementation extracts the image tag and find the longest string from it that is a version string. Note: The behaviour should match the operator's python implementation in init container extracting version.
func GetIntType ¶
GetIntType typecasts the numeric value to the supported type
func GetMigrateFillDelay ¶
func GetMigrateFillDelay(asConfig *AerospikeConfigSpec) (int, error)
GetMigrateFillDelay returns the migrate-fill-delay from the Aerospike configuration
func GetPortFromConfig ¶
func GetPortFromConfig( aeroConf *AerospikeConfigSpec, connectionType string, paramName string, ) *int32
func GetRolesFromSpec ¶
func GetRolesFromSpec(spec *AerospikeClusterSpec) map[string]AerospikeRoleSpec
GetRolesFromSpec returns roles or an empty map from the spec.
func GetServicePort ¶
func GetServicePort(aeroConf *AerospikeConfigSpec) *int32
func GetServiceTLSNameAndPort ¶
func GetServiceTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int32)
func GetTLSNameAndPort ¶
func GetTLSNameAndPort( aeroConf *AerospikeConfigSpec, connectionType string, ) (tlsName string, port *int32)
func GetUsersFromSpec ¶
func GetUsersFromSpec(spec *AerospikeClusterSpec) map[string]AerospikeUserSpec
GetUsersFromSpec returns users or an empty map from the spec.
func GetWorkDirectory ¶
func GetWorkDirectory(aerospikeConfigSpec AerospikeConfigSpec) string
GetWorkDirectory returns the Aerospike work directory to be used for aerospikeConfig.
func IsAerospikeAccessControlValid ¶
func IsAerospikeAccessControlValid(aerospikeClusterSpec *AerospikeClusterSpec) ( bool, error, )
IsAerospikeAccessControlValid validates the accessControl specification in the clusterSpec.
Asserts that the AerospikeAccessControlSpec
has correct references to other objects like namespaces follows rules defined https://www.aerospike.com/docs/guide/limitations.html follows rules found through server code inspection for e.g. predefined roles meets operator requirements. For e.g. the necessity to have at least one sys-admin and user-admin user.
func IsAerospikeNamespacePresent ¶
func IsAerospikeNamespacePresent( aerospikeConfigSpec AerospikeConfigSpec, namespaceName string, ) bool
IsAerospikeNamespacePresent indicates if the namespace is present in aerospikeConfig. Assumes the namespace section is validated.
func IsAttributeEnabled ¶
func IsClientCertConfigured ¶
func IsClientCertConfigured(certSpec *AerospikeOperatorClientCertSpec) bool
func IsClusterSCEnabled ¶
func IsClusterSCEnabled(aeroCluster *AerospikeCluster) bool
IsClusterSCEnabled returns true if cluster has a sc namespace
func IsNSSCEnabled ¶
func IsPathParentOrSame ¶
IsPathParentOrSame indicates if dir1 is a parent or same as dir2.
func IsSecurityEnabled ¶
IsSecurityEnabled tells if security is enabled in cluster TODO: can an invalid map come here
func IsServiceTLSEnabled ¶
func IsServiceTLSEnabled(aerospikeConfigSpec *AerospikeConfigSpec) bool
IsServiceTLSEnabled tells if service is tls enabled.
func IsXdrEnabled ¶
func IsXdrEnabled(aerospikeConfigSpec AerospikeConfigSpec) bool
IsXdrEnabled indicates if XDR is enabled in aerospikeConfig.
func NamespacedName ¶
NamespacedName return namespaced name
func ParseDockerImageTag ¶
ParseDockerImageTag parses input tag into registry, name and version.
Types ¶
type AerospikeAccessControlSpec ¶
type AerospikeAccessControlSpec struct {
// +optional
AdminPolicy *AerospikeClientAdminPolicy `json:"adminPolicy,omitempty"`
// Roles is the set of roles to allow on the Aerospike cluster.
// +patchMergeKey=name
// +patchStrategy=merge
// +listType=map
// +listMapKey=name
// +optional
Roles []AerospikeRoleSpec `json:"roles,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
// Users is the set of users to allow on the Aerospike cluster.
// +patchMergeKey=name
// +patchStrategy=merge
// +listType=map
// +listMapKey=name
Users []AerospikeUserSpec `json:"users" patchStrategy:"merge" patchMergeKey:"name"`
}
AerospikeAccessControlSpec specifies the roles and users to set up on the database fo access control.
func (*AerospikeAccessControlSpec) DeepCopy ¶
func (in *AerospikeAccessControlSpec) DeepCopy() *AerospikeAccessControlSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeAccessControlSpec.
func (*AerospikeAccessControlSpec) DeepCopyInto ¶
func (in *AerospikeAccessControlSpec) DeepCopyInto(out *AerospikeAccessControlSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeCertPathInOperatorSource ¶
type AerospikeCertPathInOperatorSource struct {
// +optional
CaCertsPath string `json:"caCertsPath,omitempty"`
// +optional
ClientCertPath string `json:"clientCertPath,omitempty"`
// +optional
ClientKeyPath string `json:"clientKeyPath,omitempty"`
}
AerospikeCertPathInOperatorSource contain configuration for certificates used by operator to connect to aerospike cluster. All paths are on operator's filesystem.
func (*AerospikeCertPathInOperatorSource) DeepCopy ¶
func (in *AerospikeCertPathInOperatorSource) DeepCopy() *AerospikeCertPathInOperatorSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeCertPathInOperatorSource.
func (*AerospikeCertPathInOperatorSource) DeepCopyInto ¶
func (in *AerospikeCertPathInOperatorSource) DeepCopyInto(out *AerospikeCertPathInOperatorSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeClientAdminPolicy ¶
type AerospikeClientAdminPolicy struct {
// Timeout for admin client policy in milliseconds.
Timeout int `json:"timeout"`
}
AerospikeClientAdminPolicy specify the aerospike client admin policy for access control operations.
func (*AerospikeClientAdminPolicy) DeepCopy ¶
func (in *AerospikeClientAdminPolicy) DeepCopy() *AerospikeClientAdminPolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClientAdminPolicy.
func (*AerospikeClientAdminPolicy) DeepCopyInto ¶
func (in *AerospikeClientAdminPolicy) DeepCopyInto(out *AerospikeClientAdminPolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeCluster ¶
type AerospikeCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AerospikeClusterSpec `json:"spec,omitempty"`
Status AerospikeClusterStatus `json:"status,omitempty"`
}
AerospikeCluster is the schema for the AerospikeCluster API +operator-sdk:csv:customresourcedefinitions:displayName="Aerospike Cluster",resources={{Service, v1},{Pod,v1},{StatefulSet,v1}} +kubebuilder:metadata:annotations="aerospike-kubernetes-operator/version=4.1.0-preview"
func (*AerospikeCluster) DeepCopy ¶
func (in *AerospikeCluster) DeepCopy() *AerospikeCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeCluster.
func (*AerospikeCluster) DeepCopyInto ¶
func (in *AerospikeCluster) DeepCopyInto(out *AerospikeCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AerospikeCluster) DeepCopyObject ¶
func (in *AerospikeCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AerospikeClusterList ¶
type AerospikeClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []AerospikeCluster `json:"items"`
}
AerospikeClusterList contains a list of AerospikeCluster
func (*AerospikeClusterList) DeepCopy ¶
func (in *AerospikeClusterList) DeepCopy() *AerospikeClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClusterList.
func (*AerospikeClusterList) DeepCopyInto ¶
func (in *AerospikeClusterList) DeepCopyInto(out *AerospikeClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AerospikeClusterList) DeepCopyObject ¶
func (in *AerospikeClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AerospikeClusterPhase ¶
type AerospikeClusterPhase string
+kubebuilder:validation:Enum=InProgress;Completed;Error
const ( // AerospikeClusterInProgress means the Aerospike cluster CR is being reconciled and operations are in-progress state. // This phase denotes that changes are gradually rolling out to the cluster. // For example, when the Aerospike server version is upgraded in CR, then InProgress phase is set until the upgrade // is completed. AerospikeClusterInProgress AerospikeClusterPhase = "InProgress" // AerospikeClusterCompleted means the Aerospike cluster CR has been reconciled. This phase denotes that the cluster // has been deployed/upgraded successfully and is ready to use. // For example, when the Aerospike server version is upgraded in CR, then Completed phase is set after the upgrade is // completed. AerospikeClusterCompleted AerospikeClusterPhase = "Completed" // AerospikeClusterError means the Aerospike cluster operation is in error state because of some reason like // misconfiguration, infra issues, etc. // For example, when the Aerospike server version is upgraded in CR, then Error phase is set if the upgrade fails // due to the wrong image issue, etc. AerospikeClusterError AerospikeClusterPhase = "Error" )
These are the valid phases of Aerospike cluster.
type AerospikeClusterSpec ¶
type AerospikeClusterSpec struct {
// Aerospike cluster size
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Cluster Size"
Size int32 `json:"size"`
// Aerospike server image
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Server Image"
Image string `json:"image"`
// disruption. This value is used to create PodDisruptionBudget. Defaults to 1.
// Refer Aerospike documentation for more details.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Max Unavailable"
// +optional
MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
// Disable the PodDisruptionBudget creation for the Aerospike cluster.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Disable PodDisruptionBudget"
// +optional
DisablePDB *bool `json:"disablePDB,omitempty"`
// Storage specify persistent storage to use for the Aerospike pods
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Storage"
// +optional
Storage AerospikeStorageSpec `json:"storage,omitempty"`
// Has the Aerospike roles and users definitions. Required if aerospike cluster security is enabled.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Access Control"
// +optional
AerospikeAccessControl *AerospikeAccessControlSpec `json:"aerospikeAccessControl,omitempty"`
// Sets config in aerospike.conf file. Other configs are taken as default
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Aerospike Server Configuration"
// +kubebuilder:pruning:PreserveUnknownFields
AerospikeConfig *AerospikeConfigSpec `json:"aerospikeConfig"`
// EnableDynamicConfigUpdate enables dynamic config update flow of the operator.
// If enabled, operator will try to update the Aerospike config dynamically.
// In case of inconsistent state during dynamic config update, operator falls back to rolling restart.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Enable Dynamic Config Update"
// +optional
EnableDynamicConfigUpdate *bool `json:"enableDynamicConfigUpdate,omitempty"`
// ValidationPolicy controls validation of the Aerospike cluster resource.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Validation Policy"
// +optional
ValidationPolicy *ValidationPolicySpec `json:"validationPolicy,omitempty"`
// RackConfig Configures the operator to deploy rack aware Aerospike cluster.
// Pods will be deployed in given racks based on given configuration
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Rack Config"
// +optional
RackConfig RackConfig `json:"rackConfig,omitempty"`
// AerospikeNetworkPolicy specifies how clients and tools access the Aerospike cluster.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Aerospike Network Policy"
// +optional
AerospikeNetworkPolicy AerospikeNetworkPolicy `json:"aerospikeNetworkPolicy,omitempty"`
// Certificates to connect to Aerospike.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Operator Client Cert"
// +optional
OperatorClientCertSpec *AerospikeOperatorClientCertSpec `json:"operatorClientCert,omitempty"`
// Specify additional configuration for the Aerospike pods
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Pod Configuration"
// +optional
PodSpec AerospikePodSpec `json:"podSpec,omitempty"`
// SeedsFinderServices creates additional Kubernetes service that allow
// clients to discover Aerospike cluster nodes.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Seeds Finder Services"
// +optional
SeedsFinderServices SeedsFinderServices `json:"seedsFinderServices,omitempty"`
// HeadlessService defines additional configuration parameters for the headless service created to discover
// Aerospike Cluster nodes
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Headless Service"
// +optional
HeadlessService ServiceSpec `json:"headlessService,omitempty"`
// PodService defines additional configuration parameters for the pod service created to expose the
// Aerospike Cluster nodes outside the Kubernetes cluster. This service is created only created when
// `multiPodPerHost` is set to `true` and `aerospikeNetworkPolicy` has one of the network types:
// 'hostInternal', 'hostExternal', 'configuredIP'
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Pod Service"
// +optional
PodService ServiceSpec `json:"podService,omitempty"`
// RosterNodeBlockList is a list of blocked nodeIDs from roster in a strong-consistency setup
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Roster Node BlockList"
// +optional
RosterNodeBlockList []string `json:"rosterNodeBlockList,omitempty"`
// K8sNodeBlockList is a list of Kubernetes nodes which are not used for Aerospike pods. Pods are not scheduled on
// these nodes. Pods are migrated from these nodes if already present. This is useful for the maintenance of
// Kubernetes nodes.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Kubernetes Node BlockList"
// +kubebuilder:validation:MinItems:=1
// +optional
K8sNodeBlockList []string `json:"k8sNodeBlockList,omitempty"`
// Paused flag is used to pause the reconciliation for the AerospikeCluster.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Pause Reconcile"
// +optional
Paused *bool `json:"paused,omitempty"`
// Operations is a list of on-demand operations to be performed on the Aerospike cluster.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Operations"
// +kubebuilder:validation:MaxItems:=1
// +optional
Operations []OperationSpec `json:"operations,omitempty"`
}
AerospikeClusterSpec defines the desired state of AerospikeCluster +k8s:openapi-gen=true
func CopyStatusToSpec ¶
func CopyStatusToSpec(status *AerospikeClusterStatusSpec) (*AerospikeClusterSpec, error)
CopyStatusToSpec copy status in spec. Status to Spec DeepCopy doesn't work. It fails in reflect lib.
func (*AerospikeClusterSpec) DeepCopy ¶
func (in *AerospikeClusterSpec) DeepCopy() *AerospikeClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClusterSpec.
func (*AerospikeClusterSpec) DeepCopyInto ¶
func (in *AerospikeClusterSpec) DeepCopyInto(out *AerospikeClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeClusterStatus ¶
type AerospikeClusterStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Add custom validation
// using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html
// +nullable
// The current state of Aerospike cluster.
AerospikeClusterStatusSpec `json:",inline"`
// Pods has Aerospike specific status of the pods.
// This is map instead of the conventional map as list convention to allow each pod to patch update its own
// status. The map key is the name of the pod.
// +patchStrategy=strategic
// +optional
Pods map[string]AerospikePodStatus `json:"pods" patchStrategy:"strategic"`
// Phase denotes the current phase of Aerospike cluster operation.
// +optional
Phase AerospikeClusterPhase `json:"phase,omitempty"`
// Selector specifies the label selector for the Aerospike pods.
// +optional
Selector string `json:"selector,omitempty"`
}
AerospikeClusterStatus defines the observed state of AerospikeCluster +k8s:openapi-gen=true
func (*AerospikeClusterStatus) DeepCopy ¶
func (in *AerospikeClusterStatus) DeepCopy() *AerospikeClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClusterStatus.
func (*AerospikeClusterStatus) DeepCopyInto ¶
func (in *AerospikeClusterStatus) DeepCopyInto(out *AerospikeClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeClusterStatusSpec ¶
type AerospikeClusterStatusSpec struct {
// Aerospike cluster size
// +optional
Size int32 `json:"size,omitempty"`
// Aerospike server image
// +optional
Image string `json:"image,omitempty"`
// disruption. This value is used to create PodDisruptionBudget. Defaults to 1.
// +optional
MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
// Disable the PodDisruptionBudget creation for the Aerospike cluster.
// +optional
DisablePDB *bool `json:"disablePDB,omitempty"`
// If set true then multiple pods can be created per Kubernetes Node.
// This will create a NodePort service for each Pod.
// NodePort, as the name implies, opens a specific port on all the Kubernetes Nodes ,
// and any traffic that is sent to this port is forwarded to the service.
// Here service picks a random port in range (30000-32767), so these port should be open.
//
// If set false then only single pod can be created per Kubernetes Node.
// This will create Pods using hostPort setting.
// The container port will be exposed to the external network at <hostIP>:<hostPort>,
// where the hostIP is the IP address of the Kubernetes Node where the container is running and
// the hostPort is the port requested by the user.
// Deprecated: MultiPodPerHost is now part of podSpec
// +optional
MultiPodPerHost *bool `json:"multiPodPerHost,omitempty"`
// Storage specify persistent storage to use for the Aerospike pods.
// +optional
Storage AerospikeStorageSpec `json:"storage,omitempty"`
// AerospikeAccessControl has the Aerospike roles and users definitions.
// Required if aerospike cluster security is enabled.
// +optional
AerospikeAccessControl *AerospikeAccessControlSpec `json:"aerospikeAccessControl,omitempty"`
// AerospikeConfig sets config in aerospike.conf file. Other configs are taken as default
// +kubebuilder:pruning:PreserveUnknownFields
// +nullable
// +optional
AerospikeConfig *AerospikeConfigSpec `json:"aerospikeConfig,omitempty"`
// EnableDynamicConfigUpdate enables dynamic config update flow of the operator.
// If enabled, operator will try to update the Aerospike config dynamically.
// In case of inconsistent state during dynamic config update, operator falls back to rolling restart.
// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Enable Dynamic Config Update"
// +optional
EnableDynamicConfigUpdate *bool `json:"enableDynamicConfigUpdate,omitempty"`
// IsReadinessProbeEnabled tells whether the readiness probe is present in all pods or not.
// Moreover, PodDisruptionBudget should be created for the Aerospike cluster only when this field is enabled.
// +optional
IsReadinessProbeEnabled bool `json:"isReadinessProbeEnabled"`
// Define resources requests and limits for Aerospike Server Container.
// Please contact aerospike for proper sizing exercise
// Only Memory and Cpu resources can be given
// Deprecated: Resources field is now part of containerSpec
// +optional
Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
// ValidationPolicy controls validation of the Aerospike cluster resource.
// +optional
ValidationPolicy *ValidationPolicySpec `json:"validationPolicy,omitempty"`
// RackConfig Configures the operator to deploy rack aware Aerospike cluster.
// Pods will be deployed in given racks based on given configuration
// +nullable
// +optional
RackConfig RackConfig `json:"rackConfig,omitempty"`
// AerospikeNetworkPolicy specifies how clients and tools access the Aerospike cluster.
// +optional
AerospikeNetworkPolicy AerospikeNetworkPolicy `json:"aerospikeNetworkPolicy,omitempty"`
// Certificates to connect to Aerospike. If omitted then certs are taken from the secret 'aerospike-secret'.
// +optional
OperatorClientCertSpec *AerospikeOperatorClientCertSpec `json:"operatorClientCertSpec,omitempty"`
// Additional configuration for create Aerospike pods.
// +optional
PodSpec AerospikePodSpec `json:"podSpec,omitempty"`
// SeedsFinderServices describes services which are used for seeding Aerospike nodes.
// +optional
SeedsFinderServices SeedsFinderServices `json:"seedsFinderServices,omitempty"`
// HeadlessService defines additional configuration parameters for the headless service created to discover
// Aerospike Cluster nodes
// +optional
HeadlessService ServiceSpec `json:"headlessService,omitempty"`
// PodService defines additional configuration parameters for the pod service created to expose the
// Aerospike Cluster nodes outside the Kubernetes cluster. This service is created only created when
// `multiPodPerHost` is set to `true` and `aerospikeNetworkPolicy` has one of the network types:
// 'hostInternal', 'hostExternal', 'configuredIP'
// +optional
PodService ServiceSpec `json:"podService,omitempty"`
// RosterNodeBlockList is a list of blocked nodeIDs from roster in a strong-consistency setup
// +optional
RosterNodeBlockList []string `json:"rosterNodeBlockList,omitempty"`
// K8sNodeBlockList is a list of Kubernetes nodes which are not used for Aerospike pods.
// +optional
K8sNodeBlockList []string `json:"k8sNodeBlockList,omitempty"`
// Operations is a list of on-demand operation to be performed on the Aerospike cluster.
// +optional
Operations []OperationSpec `json:"operations,omitempty"`
}
AerospikeClusterStatusSpec captures the current status of the cluster.
func CopySpecToStatus ¶
func CopySpecToStatus(spec *AerospikeClusterSpec) (*AerospikeClusterStatusSpec, error)
CopySpecToStatus copy spec in status. Spec to Status DeepCopy doesn't work. It fails in reflect lib.
func (*AerospikeClusterStatusSpec) DeepCopy ¶
func (in *AerospikeClusterStatusSpec) DeepCopy() *AerospikeClusterStatusSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClusterStatusSpec.
func (*AerospikeClusterStatusSpec) DeepCopyInto ¶
func (in *AerospikeClusterStatusSpec) DeepCopyInto(out *AerospikeClusterStatusSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeConfigSpec ¶
type AerospikeConfigSpec struct {
Value map[string]interface{} `json:"-"`
}
AerospikeConfigSpec container for unstructured Aerospike server config.
func (*AerospikeConfigSpec) DeepCopy ¶
func (c *AerospikeConfigSpec) DeepCopy() *AerospikeConfigSpec
func (*AerospikeConfigSpec) DeepCopyInto ¶
func (in *AerospikeConfigSpec) DeepCopyInto(out *AerospikeConfigSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AerospikeConfigSpec) MarshalJSON ¶
func (c *AerospikeConfigSpec) MarshalJSON() ([]byte, error)
MarshalJSON ensures that the unstructured object produces proper Json when passed to Go's standard Json library.
func (*AerospikeConfigSpec) UnmarshalJSON ¶
func (c *AerospikeConfigSpec) UnmarshalJSON(b []byte) error
UnmarshalJSON ensures that the unstructured object properly decodes Json when passed to Go's standard Json library.
type AerospikeContainerSpec ¶
type AerospikeContainerSpec struct {
// SecurityContext that will be added to aerospike-server container created by operator.
// +optional
SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`
// Define resources requests and limits for Aerospike Server Container.
// Please contact aerospike for proper sizing exercise
// Only Memory and Cpu resources can be given
// Resources.Limits should be more than Resources.Requests.
// +optional
Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
}
func (*AerospikeContainerSpec) DeepCopy ¶
func (in *AerospikeContainerSpec) DeepCopy() *AerospikeContainerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeContainerSpec.
func (*AerospikeContainerSpec) DeepCopyInto ¶
func (in *AerospikeContainerSpec) DeepCopyInto(out *AerospikeContainerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeInitContainerSpec ¶
type AerospikeInitContainerSpec struct {
// ImageRegistry is the name of image registry for aerospike-init container image
// ImageRegistry, e.g. docker.io, redhat.access.com
// +optional
ImageRegistry string `json:"imageRegistry,omitempty"`
// ImageRegistryNamespace is the name of namespace in registry for aerospike-init container image
// +optional
ImageRegistryNamespace *string `json:"imageRegistryNamespace,omitempty"`
// ImageNameAndTag is the name:tag of aerospike-init container image
// +optional
ImageNameAndTag string `json:"imageNameAndTag,omitempty"`
// SecurityContext that will be added to aerospike-init container created by operator.
// +optional
SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`
// Define resources requests and limits for Aerospike init Container.
// Only Memory and Cpu resources can be given
// Resources.Limits should be more than Resources.Requests.
// +optional
Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
}
func (*AerospikeInitContainerSpec) DeepCopy ¶
func (in *AerospikeInitContainerSpec) DeepCopy() *AerospikeInitContainerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeInitContainerSpec.
func (*AerospikeInitContainerSpec) DeepCopyInto ¶
func (in *AerospikeInitContainerSpec) DeepCopyInto(out *AerospikeInitContainerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeInstanceSummary ¶
type AerospikeInstanceSummary struct {
// ClusterName is the name of the Aerospike cluster this pod belongs to.
ClusterName string `json:"clusterName"`
// NodeID is the unique Aerospike ID for this pod.
NodeID string `json:"nodeID"`
// RackID of rack to which this node belongs
// +optional
RackID int `json:"rackID,omitempty"`
// TLSName is the TLS name of this pod in the Aerospike cluster.
// +optional
TLSName string `json:"tlsName,omitempty"`
// AccessEndpoints are the access endpoints for this pod.
// +optional
AccessEndpoints []string `json:"accessEndpoints,omitempty"`
// AlternateAccessEndpoints are the alternate access endpoints for this pod.
// +optional
AlternateAccessEndpoints []string `json:"alternateAccessEndpoints,omitempty"`
// TLSAccessEndpoints are the TLS access endpoints for this pod.
// +optional
TLSAccessEndpoints []string `json:"tlsAccessEndpoints,omitempty"`
// TLSAlternateAccessEndpoints are the alternate TLS access endpoints for this pod.
// +optional
TLSAlternateAccessEndpoints []string `json:"tlsAlternateAccessEndpoints,omitempty"`
}
AerospikeInstanceSummary defines the observed state of a pod's Aerospike Server Instance. +k8s:openapi-gen=true
func (*AerospikeInstanceSummary) DeepCopy ¶
func (in *AerospikeInstanceSummary) DeepCopy() *AerospikeInstanceSummary
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeInstanceSummary.
func (*AerospikeInstanceSummary) DeepCopyInto ¶
func (in *AerospikeInstanceSummary) DeepCopyInto(out *AerospikeInstanceSummary)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeNetworkPolicy ¶
type AerospikeNetworkPolicy struct {
// AccessType is the type of network address to use for Aerospike access address.
// Defaults to hostInternal.
// +kubebuilder:validation:Enum=pod;hostInternal;hostExternal;configuredIP;customInterface
// +optional
AccessType AerospikeNetworkType `json:"access,omitempty"`
// CustomAccessNetworkNames is the list of the pod's network interfaces used for Aerospike access address.
// Each element in the list is specified with a namespace and the name of a NetworkAttachmentDefinition,
// separated by a forward slash (/).
// These elements must be defined in the pod annotation k8s.v1.cni.cncf.io/networks in order to assign
// network interfaces to the pod.
// Required with 'customInterface' access type.
// +kubebuilder:validation:MinItems:=1
// +optional
CustomAccessNetworkNames []string `json:"customAccessNetworkNames,omitempty"`
// AlternateAccessType is the type of network address to use for Aerospike alternate access address.
// Defaults to hostExternal.
// +kubebuilder:validation:Enum=pod;hostInternal;hostExternal;configuredIP;customInterface
// +optional
AlternateAccessType AerospikeNetworkType `json:"alternateAccess,omitempty"`
// CustomAlternateAccessNetworkNames is the list of the pod's network interfaces used for Aerospike
// alternate access address.
// Each element in the list is specified with a namespace and the name of a NetworkAttachmentDefinition,
// separated by a forward slash (/).
// These elements must be defined in the pod annotation k8s.v1.cni.cncf.io/networks in order to assign
// network interfaces to the pod.
// Required with 'customInterface' alternateAccess type
// +kubebuilder:validation:MinItems:=1
// +optional
CustomAlternateAccessNetworkNames []string `json:"customAlternateAccessNetworkNames,omitempty"`
// TLSAccessType is the type of network address to use for Aerospike TLS access address.
// Defaults to hostInternal.
// +kubebuilder:validation:Enum=pod;hostInternal;hostExternal;configuredIP;customInterface
// +optional
TLSAccessType AerospikeNetworkType `json:"tlsAccess,omitempty"`
// CustomTLSAccessNetworkNames is the list of the pod's network interfaces used for Aerospike TLS access address.
// Each element in the list is specified with a namespace and the name of a NetworkAttachmentDefinition,
// separated by a forward slash (/).
// These elements must be defined in the pod annotation k8s.v1.cni.cncf.io/networks in order to assign
// network interfaces to the pod.
// Required with 'customInterface' tlsAccess type
// +kubebuilder:validation:MinItems:=1
// +optional
CustomTLSAccessNetworkNames []string `json:"customTLSAccessNetworkNames,omitempty"`
// TLSAlternateAccessType is the type of network address to use for Aerospike TLS alternate access address.
// Defaults to hostExternal.
// +kubebuilder:validation:Enum=pod;hostInternal;hostExternal;configuredIP;customInterface
// +optional
TLSAlternateAccessType AerospikeNetworkType `json:"tlsAlternateAccess,omitempty"`
// CustomTLSAlternateAccessNetworkNames is the list of the pod's network interfaces used for Aerospike TLS
// alternate access address.
// Each element in the list is specified with a namespace and the name of a NetworkAttachmentDefinition,
// separated by a forward slash (/).
// These elements must be defined in the pod annotation k8s.v1.cni.cncf.io/networks in order to assign
// network interfaces to the pod.
// Required with 'customInterface' tlsAlternateAccess type
// +kubebuilder:validation:MinItems:=1
// +optional
CustomTLSAlternateAccessNetworkNames []string `json:"customTLSAlternateAccessNetworkNames,omitempty"`
// FabricType is the type of network address to use for Aerospike fabric address.
// Defaults is empty meaning all interfaces 'any'.
// +kubebuilder:validation:Enum:=customInterface
// +optional
FabricType AerospikeNetworkType `json:"fabric,omitempty"`
// CustomFabricNetworkNames is the list of the pod's network interfaces used for Aerospike fabric address.
// Each element in the list is specified with a namespace and the name of a NetworkAttachmentDefinition,
// separated by a forward slash (/).
// These elements must be defined in the pod annotation k8s.v1.cni.cncf.io/networks in order to assign
// network interfaces to the pod.
// Required with 'customInterface' fabric type
// +kubebuilder:validation:MinItems:=1
// +optional
CustomFabricNetworkNames []string `json:"customFabricNetworkNames,omitempty"`
// TLSFabricType is the type of network address to use for Aerospike TLS fabric address.
// Defaults is empty meaning all interfaces 'any'.
// +kubebuilder:validation:Enum:=customInterface
// +optional
TLSFabricType AerospikeNetworkType `json:"tlsFabric,omitempty"`
// CustomTLSFabricNetworkNames is the list of the pod's network interfaces used for Aerospike TLS fabric address.
// Each element in the list is specified with a namespace and the name of a NetworkAttachmentDefinition,
// separated by a forward slash (/).
// These elements must be defined in the pod annotation k8s.v1.cni.cncf.io/networks in order to assign network
// interfaces to the pod.
// Required with 'customInterface' tlsFabric type
// +kubebuilder:validation:MinItems:=1
// +optional
CustomTLSFabricNetworkNames []string `json:"customTLSFabricNetworkNames,omitempty"`
}
AerospikeNetworkPolicy specifies how clients and tools access the Aerospike cluster.
func (*AerospikeNetworkPolicy) DeepCopy ¶
func (in *AerospikeNetworkPolicy) DeepCopy() *AerospikeNetworkPolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeNetworkPolicy.
func (*AerospikeNetworkPolicy) DeepCopyInto ¶
func (in *AerospikeNetworkPolicy) DeepCopyInto(out *AerospikeNetworkPolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeNetworkType ¶
type AerospikeNetworkType string
AerospikeNetworkType specifies the type of network address to use. +k8s:openapi-gen=true
const ( // AerospikeNetworkTypeUnspecified implies using default access. AerospikeNetworkTypeUnspecified AerospikeNetworkType = "" // AerospikeNetworkTypePod specifies access using the PodIP and actual Aerospike service port. AerospikeNetworkTypePod AerospikeNetworkType = "pod" // AerospikeNetworkTypeHostInternal specifies access using the Kubernetes host's internal IP. // If the cluster runs single pod per Kubernetes host, // the access port will the actual aerospike port else it will be a mapped port. AerospikeNetworkTypeHostInternal AerospikeNetworkType = "hostInternal" // AerospikeNetworkTypeHostExternal specifies access using the Kubernetes host's external IP. // If the cluster runs single pod per Kubernetes host, // the access port will the actual aerospike port else it will be a mapped port. AerospikeNetworkTypeHostExternal AerospikeNetworkType = "hostExternal" // AerospikeNetworkTypeConfigured specifies access/alternateAccess using the user configuredIP. // label "aerospike.com/configured-access-address" in k8s node will be used as `accessAddress` // label "aerospike.com/configured-alternate-access-address" in k8s node will be used as `alternateAccessAddress` AerospikeNetworkTypeConfigured AerospikeNetworkType = "configuredIP" // AerospikeNetworkTypeCustomInterface specifies any other custom interface to be used with Aerospike AerospikeNetworkTypeCustomInterface AerospikeNetworkType = "customInterface" )
type AerospikeObjectMeta ¶
type AerospikeObjectMeta struct {
// Key - Value pair that may be set by external tools to store and retrieve arbitrary metadata
// +optional
Annotations map[string]string `json:"annotations,omitempty"`
// Key - Value pairs that can be used to organize and categorize scope and select objects
// +optional
Labels map[string]string `json:"labels,omitempty"`
}
func (*AerospikeObjectMeta) DeepCopy ¶
func (in *AerospikeObjectMeta) DeepCopy() *AerospikeObjectMeta
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeObjectMeta.
func (*AerospikeObjectMeta) DeepCopyInto ¶
func (in *AerospikeObjectMeta) DeepCopyInto(out *AerospikeObjectMeta)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeOperatorCertSource ¶
type AerospikeOperatorCertSource struct {
// +optional
SecretCertSource *AerospikeSecretCertSource `json:"secretCertSource,omitempty"`
// +optional
CertPathInOperator *AerospikeCertPathInOperatorSource `json:"certPathInOperator,omitempty"`
}
AerospikeOperatorCertSource Represents the source of Aerospike ClientCert for Operator. Only one of its members may be specified.
func (*AerospikeOperatorCertSource) DeepCopy ¶
func (in *AerospikeOperatorCertSource) DeepCopy() *AerospikeOperatorCertSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeOperatorCertSource.
func (*AerospikeOperatorCertSource) DeepCopyInto ¶
func (in *AerospikeOperatorCertSource) DeepCopyInto(out *AerospikeOperatorCertSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeOperatorClientCertSpec ¶
type AerospikeOperatorClientCertSpec struct {
// If specified, this name will be added to tls-authenticate-client list by the operator
// +optional
TLSClientName string `json:"tlsClientName,omitempty"`
AerospikeOperatorCertSource `json:",inline"`
}
func (*AerospikeOperatorClientCertSpec) DeepCopy ¶
func (in *AerospikeOperatorClientCertSpec) DeepCopy() *AerospikeOperatorClientCertSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeOperatorClientCertSpec.
func (*AerospikeOperatorClientCertSpec) DeepCopyInto ¶
func (in *AerospikeOperatorClientCertSpec) DeepCopyInto(out *AerospikeOperatorClientCertSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikePersistentVolumePolicySpec ¶
type AerospikePersistentVolumePolicySpec struct {
// InitMethod determines how volumes attached to Aerospike server pods are initialized when the pods come up the
// first time. Defaults to "none".
// +optional
InputInitMethod *AerospikeVolumeMethod `json:"initMethod,omitempty"`
// WipeMethod determines how volumes attached to Aerospike server pods are wiped for dealing with storage format
// changes.
// +optional
InputWipeMethod *AerospikeVolumeMethod `json:"wipeMethod,omitempty"`
// CascadeDelete determines if the persistent volumes are deleted after the pod this volume binds to is
// terminated and removed from the cluster.
// +optional
InputCascadeDelete *bool `json:"cascadeDelete,omitempty"`
// Effective/operative value to use as the volume init method after applying defaults.
// +optional
InitMethod AerospikeVolumeMethod `json:"effectiveInitMethod,omitempty"`
// Effective/operative value to use as the volume wipe method after applying defaults.
// +optional
WipeMethod AerospikeVolumeMethod `json:"effectiveWipeMethod,omitempty"`
// Effective/operative value to use for cascade delete after applying defaults.
// +optional
CascadeDelete bool `json:"effectiveCascadeDelete,omitempty"`
}
AerospikePersistentVolumePolicySpec contains policies to manage persistent volumes.
func (*AerospikePersistentVolumePolicySpec) DeepCopy ¶
func (in *AerospikePersistentVolumePolicySpec) DeepCopy() *AerospikePersistentVolumePolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikePersistentVolumePolicySpec.
func (*AerospikePersistentVolumePolicySpec) DeepCopyInto ¶
func (in *AerospikePersistentVolumePolicySpec) DeepCopyInto(out *AerospikePersistentVolumePolicySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikePodSpec ¶
type AerospikePodSpec struct {
// AerospikeContainerSpec configures the aerospike-server container
// created by the operator.
// +optional
AerospikeContainerSpec AerospikeContainerSpec `json:"aerospikeContainer,omitempty"`
// AerospikeInitContainerSpec configures the aerospike-init container
// created by the operator.
// +optional
AerospikeInitContainerSpec *AerospikeInitContainerSpec `json:"aerospikeInitContainer,omitempty"`
// MetaData to add to the pod.
// +optional
AerospikeObjectMeta AerospikeObjectMeta `json:"metadata,omitempty"`
// Sidecars to add to the pod.
// +optional
Sidecars []corev1.Container `json:"sidecars,omitempty"`
// InitContainers to add to the pods.
// +optional
InitContainers []corev1.Container `json:"initContainers,omitempty"`
// SchedulingPolicy controls pods placement on Kubernetes nodes.
SchedulingPolicy `json:",inline"`
// If set true then multiple pods can be created per Kubernetes Node.
// This will create a NodePort service for each Pod if aerospikeNetworkPolicy defined
// has one of the network types: 'hostInternal', 'hostExternal', 'configuredIP'
// NodePort, as the name implies, opens a specific port on all the Kubernetes Nodes ,
// and any traffic that is sent to this port is forwarded to the service.
// Here service picks a random port in range (30000-32767), so these port should be open.
//
// If set false then only single pod can be created per Kubernetes Node.
// This will create Pods using hostPort setting.
// The container port will be exposed to the external network at <hostIP>:<hostPort>,
// where the hostIP is the IP address of the Kubernetes Node where the container is running and
// the hostPort is the port requested by the user.
// +optional
MultiPodPerHost *bool `json:"multiPodPerHost,omitempty"`
// HostNetwork enables host networking for the pod.
// To enable hostNetwork multiPodPerHost must be false.
// +optional
HostNetwork bool `json:"hostNetwork,omitempty"`
// DnsPolicy same as https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy.
// If hostNetwork is true and policy is not specified, it defaults to ClusterFirstWithHostNet
// +optional
InputDNSPolicy *corev1.DNSPolicy `json:"dnsPolicy,omitempty"`
// Effective value of the DNSPolicy
// +optional
DNSPolicy corev1.DNSPolicy `json:"effectiveDNSPolicy,omitempty"`
// DNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.
// This is required field when dnsPolicy is set to `None`
// +optional
DNSConfig *corev1.PodDNSConfig `json:"dnsConfig,omitempty"`
// SecurityContext holds pod-level security attributes and common container settings.
// Optional: Defaults to empty. See type description for default values of each field.
// +optional
SecurityContext *corev1.PodSecurityContext `json:"securityContext,omitempty"`
// ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of
// the images used by this PodSpec.
// More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
// +optional
ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
}
AerospikePodSpec contain configuration for created Aerospike cluster pods.
func (*AerospikePodSpec) DeepCopy ¶
func (in *AerospikePodSpec) DeepCopy() *AerospikePodSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikePodSpec.
func (*AerospikePodSpec) DeepCopyInto ¶
func (in *AerospikePodSpec) DeepCopyInto(out *AerospikePodSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikePodStatus ¶
type AerospikePodStatus struct {
// Image is the Aerospike image this pod is running.
Image string `json:"image"`
// InitImage is the Aerospike init image this pod's init container is running.
// +optional
InitImage string `json:"initImage,omitempty"`
// PodIP in the K8s network.
PodIP string `json:"podIP"`
// HostInternalIP of the K8s host this pod is scheduled on.
// +optional
HostInternalIP string `json:"hostInternalIP,omitempty"`
// HostExternalIP of the K8s host this pod is scheduled on.
// +optional
HostExternalIP string `json:"hostExternalIP,omitempty"`
// PodPort is the port K8s internal Aerospike clients can connect to.
PodPort int `json:"podPort"`
// ServicePort is the port Aerospike clients outside K8s can connect to.
// +optional
ServicePort int32 `json:"servicePort,omitempty"`
// Aerospike server instance summary for this pod.
// +optional
Aerospike AerospikeInstanceSummary `json:"aerospike,omitempty"`
// InitializedVolumes is the list of volume names that have already been
// initialized.
// +optional
InitializedVolumes []string `json:"initializedVolumes,omitempty"`
// DirtyVolumes is the list of volume names that are removed
// from aerospike namespaces and will be cleaned during init
// if they are reused in any namespace.
// +optional
DirtyVolumes []string `json:"dirtyVolumes,omitempty"`
// AerospikeConfigHash is ripemd160 hash of aerospikeConfig used by this pod
AerospikeConfigHash string `json:"aerospikeConfigHash"`
// NetworkPolicyHash is ripemd160 hash of NetworkPolicy used by this pod
NetworkPolicyHash string `json:"networkPolicyHash"`
// PodSpecHash is ripemd160 hash of PodSpec used by this pod
PodSpecHash string `json:"podSpecHash"`
// DynamicConfigUpdateStatus is the status of dynamic config update operation.
// Empty "" status means successful update.
// +optional
DynamicConfigUpdateStatus DynamicConfigUpdateStatus `json:"dynamicConfigUpdateStatus,omitempty"`
}
AerospikePodStatus contains the Aerospike specific status of the Aerospike server pods. +k8s:openapi-gen=true
func (*AerospikePodStatus) DeepCopy ¶
func (in *AerospikePodStatus) DeepCopy() *AerospikePodStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikePodStatus.
func (*AerospikePodStatus) DeepCopyInto ¶
func (in *AerospikePodStatus) DeepCopyInto(out *AerospikePodStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeRoleSpec ¶
type AerospikeRoleSpec struct {
// Name of this role.
Name string `json:"name"`
// Privileges granted to this role.
// +listType=set
Privileges []string `json:"privileges"`
// Whitelist of host address allowed for this role.
// +listType=set
// +optional
Whitelist []string `json:"whitelist,omitempty"`
// ReadQuota specifies permitted rate of read records for current role (the value is in RPS)
// +optional
ReadQuota uint32 `json:"readQuota,omitempty"`
// WriteQuota specifies permitted rate of write records for current role (the value is in RPS)
// +optional
WriteQuota uint32 `json:"writeQuota,omitempty"`
}
AerospikeRoleSpec specifies an Aerospike database role and its associated privileges.
func (*AerospikeRoleSpec) DeepCopy ¶
func (in *AerospikeRoleSpec) DeepCopy() *AerospikeRoleSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeRoleSpec.
func (*AerospikeRoleSpec) DeepCopyInto ¶
func (in *AerospikeRoleSpec) DeepCopyInto(out *AerospikeRoleSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeSecretCertSource ¶
type AerospikeSecretCertSource struct {
// +optional
CaCertsSource *CaCertsSource `json:"caCertsSource,omitempty"`
SecretName string `json:"secretName"`
// +optional
SecretNamespace string `json:"secretNamespace,omitempty"`
// +optional
CaCertsFilename string `json:"caCertsFilename,omitempty"`
// +optional
ClientCertFilename string `json:"clientCertFilename,omitempty"`
// +optional
ClientKeyFilename string `json:"clientKeyFilename,omitempty"`
}
func (*AerospikeSecretCertSource) DeepCopy ¶
func (in *AerospikeSecretCertSource) DeepCopy() *AerospikeSecretCertSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeSecretCertSource.
func (*AerospikeSecretCertSource) DeepCopyInto ¶
func (in *AerospikeSecretCertSource) DeepCopyInto(out *AerospikeSecretCertSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeServerVolumeAttachment ¶
type AerospikeServerVolumeAttachment struct {
// Path to attach the volume on the Aerospike server container.
Path string `json:"path"`
// AttachmentOptions that control how the volume is attached.
AttachmentOptions `json:",inline"`
}
AerospikeServerVolumeAttachment is a volume attachment in the Aerospike server container.
func (*AerospikeServerVolumeAttachment) DeepCopy ¶
func (in *AerospikeServerVolumeAttachment) DeepCopy() *AerospikeServerVolumeAttachment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeServerVolumeAttachment.
func (*AerospikeServerVolumeAttachment) DeepCopyInto ¶
func (in *AerospikeServerVolumeAttachment) DeepCopyInto(out *AerospikeServerVolumeAttachment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeStorageSpec ¶
type AerospikeStorageSpec struct {
// FileSystemVolumePolicy contains default policies for filesystem volumes.
// +optional
FileSystemVolumePolicy AerospikePersistentVolumePolicySpec `json:"filesystemVolumePolicy,omitempty"`
// BlockVolumePolicy contains default policies for block volumes.
// +optional
BlockVolumePolicy AerospikePersistentVolumePolicySpec `json:"blockVolumePolicy,omitempty"`
// CleanupThreads contains the maximum number of cleanup threads(dd or blkdiscard) per init container.
// +optional
CleanupThreads int `json:"cleanupThreads,omitempty"`
// LocalStorageClasses contains a list of storage classes which provisions local volumes.
// +optional
LocalStorageClasses []string `json:"localStorageClasses,omitempty"`
// DeleteLocalStorageOnRestart enables the deletion of local storage PVCs when a pod is restarted or rescheduled
// by AKO. It only considers local storage classes given in the localStorageClasses field.
// +optional
DeleteLocalStorageOnRestart *bool `json:"deleteLocalStorageOnRestart,omitempty"`
// Volumes list to attach to created pods.
// +patchMergeKey=name
// +patchStrategy=merge
// +listType=map
// +listMapKey=name
// +optional
Volumes []VolumeSpec `json:"volumes,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
}
AerospikeStorageSpec lists persistent volumes to claim and attach to Aerospike pods and persistence policies. +k8s:openapi-gen=true
func (*AerospikeStorageSpec) DeepCopy ¶
func (in *AerospikeStorageSpec) DeepCopy() *AerospikeStorageSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeStorageSpec.
func (*AerospikeStorageSpec) DeepCopyInto ¶
func (in *AerospikeStorageSpec) DeepCopyInto(out *AerospikeStorageSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeUserSpec ¶
type AerospikeUserSpec struct {
// Name is the user's username.
Name string `json:"name"`
// SecretName has secret info created by user. User needs to create this secret from password literal.
// eg: kubectl create secret generic dev-db-secret --from-literal=password='password'
SecretName string `json:"secretName"`
// Roles is the list of roles granted to the user.
// +listType=set
Roles []string `json:"roles"`
}
AerospikeUserSpec specifies an Aerospike database user, the secret name for the password and, associated roles.
func (*AerospikeUserSpec) DeepCopy ¶
func (in *AerospikeUserSpec) DeepCopy() *AerospikeUserSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeUserSpec.
func (*AerospikeUserSpec) DeepCopyInto ¶
func (in *AerospikeUserSpec) DeepCopyInto(out *AerospikeUserSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AerospikeVolumeMethod ¶
type AerospikeVolumeMethod string
AerospikeVolumeMethod specifies how block volumes should be initialized. +kubebuilder:validation:Enum=none;dd;blkdiscard;blkdiscardWithHeaderCleanup;deleteFiles +k8s:openapi-gen=true
type AttachmentOptions ¶
type AttachmentOptions struct {
// +optional
MountOptions `json:"mountOptions,omitempty"`
}
AttachmentOptions that control how a volume is mounted or attached.
func (*AttachmentOptions) DeepCopy ¶
func (in *AttachmentOptions) DeepCopy() *AttachmentOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AttachmentOptions.
func (*AttachmentOptions) DeepCopyInto ¶
func (in *AttachmentOptions) DeepCopyInto(out *AttachmentOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CaCertsSource ¶
type CaCertsSource struct {
SecretName string `json:"secretName"`
// +optional
SecretNamespace string `json:"secretNamespace,omitempty"`
}
func (*CaCertsSource) DeepCopy ¶
func (in *CaCertsSource) DeepCopy() *CaCertsSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CaCertsSource.
func (*CaCertsSource) DeepCopyInto ¶
func (in *CaCertsSource) DeepCopyInto(out *CaCertsSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DynamicConfigUpdateStatus ¶
type DynamicConfigUpdateStatus string
+kubebuilder:validation:Enum=Failed;PartiallyFailed;""
const ( Failed DynamicConfigUpdateStatus = "Failed" PartiallyFailed DynamicConfigUpdateStatus = "PartiallyFailed" Empty DynamicConfigUpdateStatus = "" )
type LoadBalancerSpec ¶
type LoadBalancerSpec struct {
// +kubebuilder:validation:Enum=Local;Cluster
// +optional
ExternalTrafficPolicy corev1.ServiceExternalTrafficPolicyType `json:"externalTrafficPolicy,omitempty"`
// +patchStrategy=merge
// +optional
Annotations map[string]string `json:"annotations,omitempty" patchStrategy:"merge"`
// The name of the port exposed on load balancer service.
// +optional
PortName string `json:"portName,omitempty"`
// Port Exposed port on load balancer. If not specified TargetPort is used.
// +kubebuilder:validation:Minimum=1024
// +kubebuilder:validation:Maximum=65535
// +optional
Port int32 `json:"port,omitempty"`
// TargetPort Target port. If not specified the tls-port of network.service stanza is used from Aerospike config.
// If there is no tls port configured then regular port from network.service is used.
// +kubebuilder:validation:Minimum=1024
// +kubebuilder:validation:Maximum=65535
// +optional
TargetPort int32 `json:"targetPort,omitempty"`
// +optional
LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty" patchStrategy:"merge"`
}
LoadBalancerSpec contains specification for Service with type LoadBalancer. +k8s:openapi-gen=true
func (*LoadBalancerSpec) DeepCopy ¶
func (in *LoadBalancerSpec) DeepCopy() *LoadBalancerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerSpec.
func (*LoadBalancerSpec) DeepCopyInto ¶
func (in *LoadBalancerSpec) DeepCopyInto(out *LoadBalancerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MountOptions ¶
type MountOptions struct {
// Mounted read-only if true, read-write otherwise (false or unspecified).
// Defaults to false.
// +optional
ReadOnly bool `json:"readOnly,omitempty"`
// Path within the volume from which the container's volume should be mounted.
// Defaults to "" (volume's root).
// +optional
SubPath string `json:"subPath,omitempty"`
// mountPropagation determines how mounts are propagated from the host
// to container and the other way around.
// When not set, MountPropagationNone is used.
// This field is beta in 1.10.
// +optional
MountPropagation *corev1.MountPropagationMode `json:"mountPropagation,omitempty"`
// Expanded path within the volume from which the container's volume should be mounted.
// Behaves similarly to SubPath but environment variable references $(
// VAR_NAME) are expanded using the container's environment.
// Defaults to "" (volume's root).
// SubPathExpr and SubPath are mutually exclusive.
// +optional
SubPathExpr string `json:"subPathExpr,omitempty"`
}
func (*MountOptions) DeepCopy ¶
func (in *MountOptions) DeepCopy() *MountOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MountOptions.
func (*MountOptions) DeepCopyInto ¶
func (in *MountOptions) DeepCopyInto(out *MountOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OperationKind ¶
type OperationKind string
const ( // OperationWarmRestart is the on-demand operation that leads to the warm restart of the aerospike pods // (Restarting ASD in the pods). https://aerospike.com/docs/cloud/kubernetes/operator/Warm-restart OperationWarmRestart OperationKind = "WarmRestart" // OperationPodRestart is the on-demand operation that leads to the restart of aerospike pods. OperationPodRestart OperationKind = "PodRestart" )
type OperationSpec ¶
type OperationSpec struct {
// Kind is the type of operation to be performed on the Aerospike cluster.
// +kubebuilder:validation:Enum=WarmRestart;PodRestart
Kind OperationKind `json:"kind"`
// ID is the unique identifier for the operation. It is used by the operator to track the operation.
// +kubebuilder:validation:MaxLength=20
// +kubebuilder:validation:MinLength=1
ID string `json:"id"`
// PodList is the list of pods on which the operation is to be performed.
// +optional
PodList []string `json:"podList,omitempty"`
}
func (*OperationSpec) DeepCopy ¶
func (in *OperationSpec) DeepCopy() *OperationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationSpec.
func (*OperationSpec) DeepCopyInto ¶
func (in *OperationSpec) DeepCopyInto(out *OperationSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PersistentVolumeSpec ¶
type PersistentVolumeSpec struct {
AerospikeObjectMeta `json:"metadata,omitempty"`
// StorageClass should be pre-created by user.
StorageClass string `json:"storageClass"`
// VolumeMode specifies if the volume is block/raw or a filesystem.
VolumeMode corev1.PersistentVolumeMode `json:"volumeMode"`
// Size of volume.
Size resource.Quantity `json:"size"`
// AccessModes contains the desired access modes the volume should have.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
// +optional
AccessModes []corev1.PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,1,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` //nolint:lll // for readability
// A label query over volumes to consider for binding.
// +optional
Selector *metav1.LabelSelector `json:"selector,omitempty"`
}
PersistentVolumeSpec describes a persistent volume to claim and attach to Aerospike pods. +k8s:openapi-gen=true
func (*PersistentVolumeSpec) DeepCopy ¶
func (in *PersistentVolumeSpec) DeepCopy() *PersistentVolumeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeSpec.
func (*PersistentVolumeSpec) DeepCopyInto ¶
func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PrivilegeScope ¶
type PrivilegeScope int
PrivilegeScope enumerates valid scopes for privileges.
const ( // Global scoped privileges. Global PrivilegeScope = iota // NamespaceSet is namespace and optional set scoped privilege. NamespaceSet )
type Rack ¶
type Rack struct {
// Identifier for the rack
ID int `json:"id"`
// Zone name for setting rack affinity. Rack pods will be deployed to given Zone
// +optional
Zone string `json:"zone,omitempty"`
// Region name for setting rack affinity. Rack pods will be deployed to given Region
// +optional
Region string `json:"region,omitempty"`
// RackLabel for setting rack affinity.
// Rack pods will be deployed in k8s nodes having rackLabel {aerospike.com/rack-label: <rack-label>}
// +optional
RackLabel string `json:"rackLabel,omitempty"`
// K8s Node name for setting rack affinity. Rack pods will be deployed in given k8s Node
// +optional
NodeName string `json:"nodeName,omitempty"`
// AerospikeConfig overrides the common AerospikeConfig for this Rack. This is merged with global Aerospike config.
// +kubebuilder:pruning:PreserveUnknownFields
// +optional
InputAerospikeConfig *AerospikeConfigSpec `json:"aerospikeConfig,omitempty"`
// Effective/operative Aerospike config. The resultant is a merge of rack Aerospike config and the global
// Aerospike config
// +kubebuilder:pruning:PreserveUnknownFields
// +optional
AerospikeConfig AerospikeConfigSpec `json:"effectiveAerospikeConfig,omitempty"`
// Storage specify persistent storage to use for the pods in this rack. This value overwrites the global storage config
// +optional
InputStorage *AerospikeStorageSpec `json:"storage,omitempty"`
// Effective/operative storage. The resultant is user input if specified else global storage
// +optional
Storage AerospikeStorageSpec `json:"effectiveStorage,omitempty"`
// PodSpec to use for the pods in this rack. This value overwrites the global storage config
// +optional
InputPodSpec *RackPodSpec `json:"podSpec,omitempty"`
// Effective/operative PodSpec. The resultant is user input if specified else global PodSpec
// +optional
PodSpec RackPodSpec `json:"effectivePodSpec,omitempty"`
}
Rack specifies single rack config
func (*Rack) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rack.
func (*Rack) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RackConfig ¶
type RackConfig struct {
// List of Aerospike namespaces for which rack feature will be enabled
// +optional
Namespaces []string `json:"namespaces,omitempty"`
// Racks is the list of all racks
// +nullable
// +optional
Racks []Rack `json:"racks,omitempty"`
// RollingUpdateBatchSize is the percentage/number of rack pods that can be restarted simultaneously
// +optional
RollingUpdateBatchSize *intstr.IntOrString `json:"rollingUpdateBatchSize,omitempty"`
// ScaleDownBatchSize is the percentage/number of rack pods that can be scaled down simultaneously
// +optional
ScaleDownBatchSize *intstr.IntOrString `json:"scaleDownBatchSize,omitempty"`
// MaxIgnorablePods is the maximum number/percentage of pending/failed pods in a rack that are ignored while
// assessing cluster stability. Pods identified using this value are not considered part of the cluster.
// Additionally, in SC mode clusters, these pods are removed from the roster.
// This is particularly useful when some pods are stuck in pending/failed state due to any scheduling issues and
// cannot be fixed by simply updating the CR.
// It enables the operator to perform specific operations on the cluster, like changing Aerospike configurations,
// without being hindered by these problematic pods.
// Remember to set MaxIgnorablePods back to 0 once the required operation is done.
// This makes sure that later on, all pods are properly counted when evaluating the cluster stability.
// +optional
MaxIgnorablePods *intstr.IntOrString `json:"maxIgnorablePods,omitempty"`
}
RackConfig specifies all racks and related policies
func (*RackConfig) DeepCopy ¶
func (in *RackConfig) DeepCopy() *RackConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RackConfig.
func (*RackConfig) DeepCopyInto ¶
func (in *RackConfig) DeepCopyInto(out *RackConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RackPodSpec ¶
type RackPodSpec struct {
// SchedulingPolicy overrides for this rack.
SchedulingPolicy `json:",inline"`
}
RackPodSpec provides rack specific overrides to the global pod spec.
func (*RackPodSpec) DeepCopy ¶
func (in *RackPodSpec) DeepCopy() *RackPodSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RackPodSpec.
func (*RackPodSpec) DeepCopyInto ¶
func (in *RackPodSpec) DeepCopyInto(out *RackPodSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SchedulingPolicy ¶
type SchedulingPolicy struct {
// Affinity rules for pod placement.
// +optional
Affinity *corev1.Affinity `json:"affinity,omitempty"`
// Tolerations for this pod.
// +optional
Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
// NodeSelector constraints for this pod.
// +optional
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
}
SchedulingPolicy controls pod placement on Kubernetes nodes.
func (*SchedulingPolicy) DeepCopy ¶
func (in *SchedulingPolicy) DeepCopy() *SchedulingPolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingPolicy.
func (*SchedulingPolicy) DeepCopyInto ¶
func (in *SchedulingPolicy) DeepCopyInto(out *SchedulingPolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SeedsFinderServices ¶
type SeedsFinderServices struct {
// LoadBalancer created to discover Aerospike Cluster nodes from outside of
// Kubernetes cluster.
// +optional
LoadBalancer *LoadBalancerSpec `json:"loadBalancer,omitempty"`
}
func (*SeedsFinderServices) DeepCopy ¶
func (in *SeedsFinderServices) DeepCopy() *SeedsFinderServices
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SeedsFinderServices.
func (*SeedsFinderServices) DeepCopyInto ¶
func (in *SeedsFinderServices) DeepCopyInto(out *SeedsFinderServices)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceSpec ¶
type ServiceSpec struct {
// +patchStrategy=merge
// +optional
Metadata AerospikeObjectMeta `json:"metadata,omitempty"`
}
ServiceSpec contains specification customizations for a Kubernetes service. +k8s:openapi-gen=true
func (*ServiceSpec) DeepCopy ¶
func (in *ServiceSpec) DeepCopy() *ServiceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSpec.
func (*ServiceSpec) DeepCopyInto ¶
func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ValidationPolicySpec ¶
type ValidationPolicySpec struct {
// skipWorkDirValidate validates that Aerospike work directory is mounted on a persistent file storage.
// Defaults to false.
SkipWorkDirValidate bool `json:"skipWorkDirValidate"`
// ValidateXdrDigestLogFile validates that xdr digest log file is mounted on a persistent file storage.
// Defaults to false.
SkipXdrDlogFileValidate bool `json:"skipXdrDlogFileValidate"`
}
ValidationPolicySpec controls validation of the Aerospike cluster resource.
func (*ValidationPolicySpec) DeepCopy ¶
func (in *ValidationPolicySpec) DeepCopy() *ValidationPolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValidationPolicySpec.
func (*ValidationPolicySpec) DeepCopyInto ¶
func (in *ValidationPolicySpec) DeepCopyInto(out *ValidationPolicySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VolumeAttachment ¶
type VolumeAttachment struct {
// ContainerName is the name of the container to attach this volume to.
ContainerName string `json:"containerName"`
// Path to attach the volume on the container.
Path string `json:"path"`
// AttachmentOptions that control how the volume is attached.
AttachmentOptions `json:",inline"`
}
VolumeAttachment specifies volume attachment to a container.
func (*VolumeAttachment) DeepCopy ¶
func (in *VolumeAttachment) DeepCopy() *VolumeAttachment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeAttachment.
func (*VolumeAttachment) DeepCopyInto ¶
func (in *VolumeAttachment) DeepCopyInto(out *VolumeAttachment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VolumeSource ¶
type VolumeSource struct {
// EmptyDir represents a temporary directory that shares a pod's lifetime.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
// +optional
EmptyDir *corev1.EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"`
// +optional
Secret *corev1.SecretVolumeSource `json:"secret,omitempty" protobuf:"bytes,6,opt,name=secret"`
// ConfigMap represents a configMap that should populate this volume
// +optional
ConfigMap *corev1.ConfigMapVolumeSource `json:"configMap,omitempty" protobuf:"bytes,19,opt,name=configMap"`
// +optional
PersistentVolume *PersistentVolumeSpec `json:"persistentVolume,omitempty"`
}
VolumeSource is the source of a volume to mount. Only one of its members may be specified.
func (*VolumeSource) DeepCopy ¶
func (in *VolumeSource) DeepCopy() *VolumeSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSource.
func (*VolumeSource) DeepCopyInto ¶
func (in *VolumeSource) DeepCopyInto(out *VolumeSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VolumeSpec ¶
type VolumeSpec struct {
// TODO: should this be inside source.PV or other type of source will also need this
// Contains policies for this volume.
AerospikePersistentVolumePolicySpec `json:",inline"`
// Name for this volume, Name or path should be given.
Name string `json:"name"`
// Source of this volume.
// +optional
Source VolumeSource `json:"source,omitempty"`
// Aerospike attachment of this volume on Aerospike server container.
// +optional
Aerospike *AerospikeServerVolumeAttachment `json:"aerospike,omitempty"`
// Sidecars are side containers where this volume will be mounted
// +optional
Sidecars []VolumeAttachment `json:"sidecars,omitempty"`
// InitContainers are additional init containers where this volume will be mounted
// +optional
InitContainers []VolumeAttachment `json:"initContainers,omitempty"`
}
func GetVolumeForAerospikePath ¶
func GetVolumeForAerospikePath(storage *AerospikeStorageSpec, path string) *VolumeSpec
GetVolumeForAerospikePath returns volume defined for given path for Aerospike server container.
func (*VolumeSpec) DeepCopy ¶
func (in *VolumeSpec) DeepCopy() *VolumeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeSpec.
func (*VolumeSpec) DeepCopyInto ¶
func (in *VolumeSpec) DeepCopyInto(out *VolumeSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.