v1

package
v0.0.0-...-b301d66 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2024 License: Apache-2.0 Imports: 35 Imported by: 1

Documentation

Overview

Package v1 contains API Schema definitions for the asdb v1 API group +kubebuilder:object:generate=true +groupName=asdb.aerospike.com

Index

Constants

View Source
const (

	// AdminUsername for aerospike cluster
	AdminUsername = "admin"

	// DefaultAdminPassword si default admin user password.
	DefaultAdminPassword = "admin"

	// Version6 server version 6 tag
	Version6 = "6.0.0.0"
)
View Source
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 the block volume should be zeroed using blkdiscard command.
	AerospikeVolumeMethodBlkdiscard AerospikeVolumeMethod = "blkdiscard"

	// 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
)
View Source
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"
)
View Source
const (
	AerospikeServerContainerName                   = "aerospike-server"
	AerospikeInitContainerName                     = "aerospike-init"
	AerospikeInitContainerRegistryEnvVar           = "AEROSPIKE_KUBERNETES_INIT_REGISTRY"
	AerospikeInitContainerDefaultRegistry          = "docker.io"
	AerospikeInitContainerDefaultRegistryNamespace = "aerospike"
	AerospikeInitContainerDefaultRepoAndTag        = "aerospike-kubernetes-init:2.2.0-dev3"
	AerospikeAppLabel                              = "app"
	AerospikeCustomResourceLabel                   = "aerospike.com/cr"
	AerospikeRackIDLabel                           = "aerospike.com/rack-id"
	AerospikeAPIVersionLabel                       = "aerospike.com/api-version"
	AerospikeAPIVersion                            = "v1"
)
View Source
const (

	// Defaults.
	DefaultWorkDirectory = "/opt/aerospike"
)

Variables

View Source
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
)
View Source
var Post6PredefinedRoles = map[string]struct{}{
	"truncate":     {},
	"sindex-admin": {},
	"udf-admin":    {},
}

Post6PredefinedRoles are roles predefined post version 6.0 in Aerospike server.

View Source
var Post6Privileges = map[string][]PrivilegeScope{
	"truncate":     {Global, NamespaceSet},
	"sindex-admin": {Global},
	"udf-admin":    {Global},
}

Post6Privileges are post version 6.0 privilege strings allowed in the spec and associated scopes.

View Source
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.

View Source
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 ContainsString

func ContainsString(list []string, ele string) bool

ContainsString check whether list contains given string

func GetAerospikeInitContainerImage

func GetAerospikeInitContainerImage(aeroCluster *AerospikeCluster) string

func GetBool

func GetBool(boolPtr *bool) bool

GetBool returns the value of the given bool pointer. If the pointer is nil, it returns false.

func GetBoolConfig

func GetBoolConfig(configMap map[string]interface{}, key string) (bool, error)

func GetConfigContext

func GetConfigContext(
	aerospikeConfigSpec *AerospikeConfigSpec, context string,
) (map[string]interface{}, error)

func GetConfiguredWorkDirectory

func GetConfiguredWorkDirectory(aerospikeConfigSpec AerospikeConfigSpec) string

GetConfiguredWorkDirectory returns the Aerospike work directory configured in aerospikeConfig.

func GetDigestLogFile

func GetDigestLogFile(aerospikeConfigSpec AerospikeConfigSpec) (
	*string, error,
)

GetDigestLogFile returns the xdr digest file path if configured.

func GetFabricPort

func GetFabricPort(aeroConf *AerospikeConfigSpec) *int

func GetFabricTLSNameAndPort

func GetFabricTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int)

func GetHeartbeatPort

func GetHeartbeatPort(aeroConf *AerospikeConfigSpec) *int

func GetHeartbeatTLSNameAndPort

func GetHeartbeatTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int)

func GetImageVersion

func GetImageVersion(imageStr string) (string, error)

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

func GetIntType(value interface{}) (int, error)

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,
) *int

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) *int

func GetServiceTLSNameAndPort

func GetServiceTLSNameAndPort(aeroConf *AerospikeConfigSpec) (tlsName string, port *int)

func GetTLSNameAndPort

func GetTLSNameAndPort(
	aeroConf *AerospikeConfigSpec, connectionType string,
) (tlsName string, port *int)

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 IsAttributeEnabled(
	aerospikeConfigSpec *AerospikeConfigSpec, context, key string,
) (bool, error)

func IsClusterSCEnabled

func IsClusterSCEnabled(aeroCluster *AerospikeCluster) bool

IsClusterSCEnabled returns true if cluster has a sc namespace

func IsNSSCEnabled

func IsNSSCEnabled(nsConf map[string]interface{}) bool

func IsSecurityEnabled

func IsSecurityEnabled(
	version string, aerospikeConfig *AerospikeConfigSpec,
) (bool, error)

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

func NamespacedName(namespace, name string) string

NamespacedName return namespaced name

func ParseDockerImageTag

func ParseDockerImageTag(tag string) (
	registry string, name string, version string,
)

ParseDockerImageTag parses input tag into registry, name and version.

func ReadTLSAuthenticateClient

func ReadTLSAuthenticateClient(serviceConf map[string]interface{}) (
	[]string, error,
)

func ValidateAerospikeObjectMeta

func ValidateAerospikeObjectMeta(aerospikeObjectMeta *AerospikeObjectMeta) error

func ValidateTLSAuthenticateClient

func ValidateTLSAuthenticateClient(serviceConf map[string]interface{}) (
	[]string, error,
)

ValidateTLSAuthenticateClient validate the tls-authenticate-client field in the service configuration.

Types

type AerospikeAccessControlSpec

type AerospikeAccessControlSpec struct {
	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
	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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeAccessControlSpec.

func (*AerospikeAccessControlSpec) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeCertPathInOperatorSource.

func (*AerospikeCertPathInOperatorSource) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClientAdminPolicy.

func (*AerospikeClientAdminPolicy) DeepCopyInto

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=3.2.2"

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.

func (*AerospikeCluster) Default

func (c *AerospikeCluster) Default(operation v1.Operation) admission.Response

Default implements webhook.Defaulter so a webhook will be registered for the type

func (*AerospikeCluster) SetupWebhookWithManager

func (c *AerospikeCluster) SetupWebhookWithManager(mgr ctrl.Manager) error

func (*AerospikeCluster) ValidateCreate

func (c *AerospikeCluster) ValidateCreate() (admission.Warnings, error)

ValidateCreate implements webhook.Validator so a webhook will be registered for the type

func (*AerospikeCluster) ValidateDelete

func (c *AerospikeCluster) ValidateDelete() (admission.Warnings, error)

ValidateDelete implements webhook.Validator so a webhook will be registered for the type

func (*AerospikeCluster) ValidateUpdate

func (c *AerospikeCluster) ValidateUpdate(oldObj runtime.Object) (admission.Warnings, error)

ValidateUpdate validate update

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

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"`
	// MaxUnavailable is the percentage/number of pods that can be allowed to go down or unavailable before application
	// 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"
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
	// Aerospike server image
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Server Image"
	Image string `json:"image"`
	// Storage specify persistent storage to use for the Aerospike pods
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Storage"
	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"
	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"
	EnableDynamicConfigUpdate *bool `json:"enableDynamicConfigUpdate,omitempty"`
	// ValidationPolicy controls validation of the Aerospike cluster resource.
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Validation Policy"
	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"
	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"
	AerospikeNetworkPolicy AerospikeNetworkPolicy `json:"aerospikeNetworkPolicy,omitempty"`
	// Certificates to connect to Aerospike.
	// +optional
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Operator Client Cert"
	OperatorClientCertSpec *AerospikeOperatorClientCertSpec `json:"operatorClientCert,omitempty"`
	// Specify additional configuration for the Aerospike pods
	// +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Pod Configuration"
	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"
	SeedsFinderServices SeedsFinderServices `json:"seedsFinderServices,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"
	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
	K8sNodeBlockList []string `json:"k8sNodeBlockList,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

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.
	Phase AerospikeClusterPhase `json:"phase,omitempty"`
}

AerospikeClusterStatus defines the observed state of AerospikeCluster +k8s:openapi-gen=true

func (*AerospikeClusterStatus) DeepCopy

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
	Size int32 `json:"size,omitempty"`
	// Aerospike server image
	Image string `json:"image,omitempty"`
	// MaxUnavailable is the percentage/number of pods that can be allowed to go down or unavailable before application
	// disruption. This value is used to create PodDisruptionBudget. Defaults to 1.
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,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
	MultiPodPerHost *bool `json:"multiPodPerHost,omitempty"`
	// Storage specify persistent storage to use for the Aerospike pods.
	Storage AerospikeStorageSpec `json:"storage,omitempty"`
	// AerospikeAccessControl has the Aerospike roles and users definitions.
	// Required if aerospike cluster security is enabled.
	AerospikeAccessControl *AerospikeAccessControlSpec `json:"aerospikeAccessControl,omitempty"`
	// AerospikeConfig sets config in aerospike.conf file. Other configs are taken as default
	// +kubebuilder:pruning:PreserveUnknownFields
	// +nullable
	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"
	EnableDynamicConfigUpdate *bool `json:"enableDynamicConfigUpdate,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
	// Deprecated: Resources field is now part of containerSpec
	Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
	// ValidationPolicy controls validation of the Aerospike cluster resource.
	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.
	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.
	PodSpec AerospikePodSpec `json:"podSpec,omitempty"`
	// SeedsFinderServices describes services which are used for seeding Aerospike nodes.
	SeedsFinderServices SeedsFinderServices `json:"seedsFinderServices,omitempty"`
	// RosterNodeBlockList is a list of blocked nodeIDs from roster in a strong-consistency setup
	RosterNodeBlockList []string `json:"rosterNodeBlockList,omitempty"`
	// K8sNodeBlockList is a list of Kubernetes nodes which are not used for Aerospike pods.
	K8sNodeBlockList []string `json:"k8sNodeBlockList,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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeClusterStatusSpec.

func (*AerospikeClusterStatusSpec) DeepCopyInto

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 (*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.
	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.
	Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
}

func (*AerospikeContainerSpec) DeepCopy

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
	ImageRegistry string `json:"imageRegistry,omitempty"`
	// SecurityContext that will be added to aerospike-init container created by operator.
	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.
	Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
}

func (*AerospikeInitContainerSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeInitContainerSpec.

func (*AerospikeInitContainerSpec) DeepCopyInto

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
	RackID int `json:"rackID,omitempty"`
	// TLSName is the TLS name of this pod in the Aerospike cluster.
	TLSName string `json:"tlsName,omitempty"`

	// AccessEndpoints are the access endpoints for this pod.
	AccessEndpoints []string `json:"accessEndpoints,omitempty"`
	// AlternateAccessEndpoints are the alternate access endpoints for this pod.
	AlternateAccessEndpoints []string `json:"alternateAccessEndpoints,omitempty"`
	// TLSAccessEndpoints are the TLS access endpoints for this pod.
	TLSAccessEndpoints []string `json:"tlsAccessEndpoints,omitempty"`
	// TLSAlternateAccessEndpoints are the alternate TLS access endpoints for this pod.
	TLSAlternateAccessEndpoints []string `json:"tlsAlternateAccessEndpoints,omitempty"`
}

AerospikeInstanceSummary defines the observed state of a pod's Aerospike Server Instance. +k8s:openapi-gen=true

func (*AerospikeInstanceSummary) DeepCopy

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
	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
	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
	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
	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
	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
	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
	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
	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
	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
	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
	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
	CustomTLSFabricNetworkNames []string `json:"customTLSFabricNetworkNames,omitempty"`
}

AerospikeNetworkPolicy specifies how clients and tools access the Aerospike cluster.

func (*AerospikeNetworkPolicy) DeepCopy

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
	Annotations map[string]string `json:"annotations,omitempty"`
	// Key - Value pairs that can be used to organize and categorize scope and select objects
	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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeOperatorCertSource.

func (*AerospikeOperatorCertSource) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeOperatorClientCertSpec.

func (*AerospikeOperatorClientCertSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AerospikeOperatorClientCertSpec) IsClientCertConfigured

func (c *AerospikeOperatorClientCertSpec) IsClientCertConfigured() bool

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".
	InputInitMethod *AerospikeVolumeMethod `json:"initMethod,omitempty"`

	// WipeMethod determines how volumes attached to Aerospike server pods are wiped for dealing with storage format
	// changes.
	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.
	InputCascadeDelete *bool `json:"cascadeDelete,omitempty"`

	// Effective/operative value to use as the volume init method after applying defaults.
	InitMethod AerospikeVolumeMethod `json:"effectiveInitMethod,omitempty"`

	// Effective/operative value to use as the volume wipe method after applying defaults.
	WipeMethod AerospikeVolumeMethod `json:"effectiveWipeMethod,omitempty"`

	// Effective/operative value to use for cascade delete after applying defaults.
	CascadeDelete bool `json:"effectiveCascadeDelete,omitempty"`
}

AerospikePersistentVolumePolicySpec contains policies to manage persistent volumes.

func (*AerospikePersistentVolumePolicySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikePersistentVolumePolicySpec.

func (*AerospikePersistentVolumePolicySpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AerospikePersistentVolumePolicySpec) SetDefaults

SetDefaults applies default values to unset fields of the policy using corresponding fields from defaultPolicy

type AerospikePodSpec

type AerospikePodSpec struct {
	// AerospikeContainerSpec configures the aerospike-server container
	// created by the operator.
	AerospikeContainerSpec AerospikeContainerSpec `json:"aerospikeContainer,omitempty"`
	// AerospikeInitContainerSpec configures the aerospike-init container
	// created by the operator.
	AerospikeInitContainerSpec *AerospikeInitContainerSpec `json:"aerospikeInitContainer,omitempty"`
	// MetaData to add to the pod.
	AerospikeObjectMeta AerospikeObjectMeta `json:"metadata,omitempty"`
	// Sidecars to add to the pod.
	Sidecars []corev1.Container `json:"sidecars,omitempty"`

	// InitContainers to add to the pods.
	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.
	MultiPodPerHost *bool `json:"multiPodPerHost,omitempty"`

	// HostNetwork enables host networking for the pod.
	// To enable hostNetwork multiPodPerHost must be false.
	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
	InputDNSPolicy *corev1.DNSPolicy `json:"dnsPolicy,omitempty"`

	// Effective value of the DNSPolicy
	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`
	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.

func (*AerospikePodSpec) SetDefaults

func (p *AerospikePodSpec) SetDefaults() error

SetDefaults applies defaults to the pod spec.

type AerospikePodStatus

type AerospikePodStatus struct {
	// Image is the Aerospike image this pod is running.
	Image string `json:"image"`
	// PodIP in the K8s network.
	PodIP string `json:"podIP"`
	// HostInternalIP of the K8s host this pod is scheduled on.
	HostInternalIP string `json:"hostInternalIP,omitempty"`
	// HostExternalIP of the K8s host this pod is scheduled on.
	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.
	ServicePort int32 `json:"servicePort,omitempty"`

	// Aerospike server instance summary for this pod.
	Aerospike AerospikeInstanceSummary `json:"aerospike,omitempty"`

	// InitializedVolumes is the list of volume names that have already been
	// initialized.
	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.
	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.
	DynamicConfigUpdateStatus DynamicConfigUpdateStatus `json:"dynamicConfigUpdateStatus,omitempty"`

	// IsSecurityEnabled is true if security is enabled in the pod
	IsSecurityEnabled bool `json:"isSecurityEnabled"`
}

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
	Whitelist []string `json:"whitelist,omitempty"`

	// ReadQuota specifies permitted rate of read records for current role (the value is in RPS)
	ReadQuota uint32 `json:"readQuota,omitempty"`

	// WriteQuota specifies permitted rate of write records for current role (the value is in RPS)
	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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeSecretCertSource.

func (*AerospikeSecretCertSource) DeepCopyInto

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AerospikeServerVolumeAttachment.

func (*AerospikeServerVolumeAttachment) DeepCopyInto

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.
	FileSystemVolumePolicy AerospikePersistentVolumePolicySpec `json:"filesystemVolumePolicy,omitempty"`

	// BlockVolumePolicy contains default policies for block volumes.
	BlockVolumePolicy AerospikePersistentVolumePolicySpec `json:"blockVolumePolicy,omitempty"`

	// CleanupThreads contains the maximum number of cleanup threads(dd or blkdiscard) per init container.
	CleanupThreads int `json:"cleanupThreads,omitempty"`

	// LocalStorageClasses contains a list of storage classes which provisions local volumes.
	LocalStorageClasses []string `json:"localStorageClasses,omitempty"`

	// Volumes list to attach to created pods.
	// +patchMergeKey=name
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=name
	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

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.

func (*AerospikeStorageSpec) GetNonPVs

func (s *AerospikeStorageSpec) GetNonPVs() (nonPVs []VolumeSpec)

GetNonPVs returns the non PV volumes from the storage spec.

func (*AerospikeStorageSpec) GetPVs

func (s *AerospikeStorageSpec) GetPVs() (pVs []VolumeSpec)

GetPVs returns the PV volumes from the storage spec.

func (*AerospikeStorageSpec) GetVolumeForAerospikePath

func (s *AerospikeStorageSpec) GetVolumeForAerospikePath(path string) *VolumeSpec

GetVolumeForAerospikePath returns volume defined for given path for Aerospike server container.

func (*AerospikeStorageSpec) SetDefaults

func (s *AerospikeStorageSpec) SetDefaults()

SetDefaults sets default values for storage spec fields.

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;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 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"`

	// Name for creating PVC for this volume, Name or path should be given
	// Name string `json:"name"`
	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

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
	Zone string `json:"zone,omitempty"`
	// Region name for setting rack affinity. Rack pods will be deployed to given Region
	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>}
	RackLabel string `json:"rackLabel,omitempty"`
	// K8s Node name for setting rack affinity. Rack pods will be deployed in given k8s Node
	NodeName string `json:"nodeName,omitempty"`
	// AerospikeConfig overrides the common AerospikeConfig for this Rack. This is merged with global Aerospike config.
	// +kubebuilder:pruning:PreserveUnknownFields
	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
	AerospikeConfig AerospikeConfigSpec `json:"effectiveAerospikeConfig,omitempty"`
	// Storage specify persistent storage to use for the pods in this rack. This value overwrites the global storage config
	InputStorage *AerospikeStorageSpec `json:"storage,omitempty"`
	// Effective/operative storage. The resultant is user input if specified else global storage
	Storage AerospikeStorageSpec `json:"effectiveStorage,omitempty"`
	// PodSpec to use for the pods in this rack. This value overwrites the global storage config
	InputPodSpec *RackPodSpec `json:"podSpec,omitempty"`
	// Effective/operative PodSpec. The resultant is user input if specified else global PodSpec
	PodSpec RackPodSpec `json:"effectivePodSpec,omitempty"`
}

Rack specifies single rack config

func (*Rack) DeepCopy

func (in *Rack) DeepCopy() *Rack

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rack.

func (*Rack) DeepCopyInto

func (in *Rack) DeepCopyInto(out *Rack)

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
	Namespaces []string `json:"namespaces,omitempty"`
	// Racks is the list of all racks
	// +nullable
	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.
	Affinity *corev1.Affinity `json:"affinity,omitempty"`
	// Tolerations for this pod.
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
	// NodeSelector constraints for this pod.
	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.
	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 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

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.
	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 (*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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL