This Document documents the types introduced by the FoundationDB Operator to be consumed by users.
Note this document is generated from code comments. When contributing a change to this document please do so by changing the code comments.
- AutomaticReplacementOptions
- BuggifyConfig
- ClusterGenerationStatus
- ClusterHealth
- ConnectionString
- ContainerOverrides
- CoordinatorSelectionSetting
- CrashLoopContainerObject
- FoundationDBCluster
- FoundationDBClusterAutomationOptions
- FoundationDBClusterFaultDomain
- FoundationDBClusterList
- FoundationDBClusterSpec
- FoundationDBClusterStatus
- LabelConfig
- LockDenyListEntry
- LockOptions
- LockSystemStatus
- MaintenanceModeInfo
- MaintenanceModeOptions
- ProcessGroupCondition
- ProcessGroupStatus
- ProcessSettings
- RequiredAddressSet
- RoutingConfig
- TaintReplacementOption
- DataCenter
- DatabaseConfiguration
- ExcludedServers
- ProcessCounts
- Region
- RoleCounts
- VersionFlags
- ImageConfig
AutomaticReplacementOptions controls options for automatically replacing failed processes.
Field | Description | Scheme | Required |
---|---|---|---|
enabled | Enabled controls whether automatic replacements are enabled. The default is false. | *bool | false |
faultDomainBasedReplacements | FaultDomainBasedReplacements controls whether automatic replacements are targeting all failed process groups in a fault domain or only specific Process Groups. If this setting is enabled, the number of different fault domains that can have all their failed process groups replaced at the same time will be equal to MaxConcurrentReplacements. e.g. MaxConcurrentReplacements = 2 would mean that at most 2 different fault domains can have their failed process groups replaced at the same time. The default is false. | *bool | false |
failureDetectionTimeSeconds | FailureDetectionTimeSeconds controls how long a process must be failed or missing before it is automatically replaced. The default is 7200 seconds, or 2 hours. | *int | false |
taintReplacementTimeSeconds | TaintReplacementTimeSeconds controls how long a pod stays in NodeTaintReplacing condition before it is automatically replaced. The default is 1800 seconds, i.e., 30min | *int | false |
maxConcurrentReplacements | MaxConcurrentReplacements controls how many automatic replacements are allowed to take part. This will take the list of current replacements and then calculate the difference between maxConcurrentReplacements and the size of the list. e.g. if currently 3 replacements are queued (e.g. in the processGroupsToRemove list) and maxConcurrentReplacements is 5 the operator is allowed to replace at most 2 process groups. Setting this to 0 will basically disable the automatic replacements. | *int | false |
taintReplacementOptions | TaintReplacementOption controls which taint label the operator will react to. | []TaintReplacementOption | false |
maxFaultDomainsWithTaintedProcessGroups | MaxFaultDomainsWithTaintedProcessGroups defines how many fault domains in the cluster can have process groups with the NodeTaintReplacing condition and still allow the operator to automatically replace those process groups. If more fault domains contain process groups with the NodeTaintReplacing condition, the operator will not automatically replace those process groups. This is a safeguard in addition to MaxConcurrentReplacements to make sure the operator is not replacing too many process groups if a large number of nodes are tainted. A absolute number of fault domains or a percentage can be provided. Defaults to 10% of the fault domains or at least 1. | *intstr.IntOrString | false |
BuggifyConfig provides options for injecting faults into a cluster for testing.
Field | Description | Scheme | Required |
---|---|---|---|
noSchedule | NoSchedule defines a list of process group IDs that should fail to schedule. | []ProcessGroupID | false |
crashLoop | CrashLoops defines a list of process group IDs that should be put into a crash looping state. Deprecated: use CrashLoopContainers instead. | []ProcessGroupID | false |
crashLoopContainers | CrashLoopContainers defines a list of process group IDs and containers that should be put into a crash looping state. | []CrashLoopContainerObject | false |
emptyMonitorConf | EmptyMonitorConf instructs the operator to update all of the fdbmonitor.conf files to have zero fdbserver processes configured. | bool | false |
ignoreDuringRestart | IgnoreDuringRestart instructs the operator to ignore the provided process groups IDs during the restart command. This can be useful to simulate cases where the kill command is not restarting all processes. IgnoreDuringRestart does not support the wildcard option to ignore all of this specific cluster processes. | []ProcessGroupID | false |
blockRemoval | BlockRemoval defines a list of process group IDs that will not be removed, even if they are marked for removal. The operator will trigger the exclusion but the removal of the resources will be blocked until they are removed from this list. This setting can be used to simulate cases where a process group is marked for removal but the resources are not yet removed. | []ProcessGroupID | false |
ClusterGenerationStatus stores information on which generations have reached different stages in reconciliation for the cluster.
Field | Description | Scheme | Required |
---|---|---|---|
reconciled | Reconciled provides the last generation that was fully reconciled. | int64 | false |
needsConfigurationChange | NeedsConfigurationChange provides the last generation that is pending a change to configuration. | int64 | false |
needsCoordinatorChange | NeedsCoordinatorChange provides the last generation that is pending a change to its coordinators. | int64 | false |
needsBounce | NeedsBounce provides the last generation that is pending a bounce of fdbserver. | int64 | false |
needsPodDeletion | NeedsPodDeletion provides the last generation that is pending pods being deleted and recreated. | int64 | false |
needsShrink | NeedsShrink provides the last generation that is pending pods being excluded and removed. | int64 | false |
needsGrow | NeedsGrow provides the last generation that is pending pods being added. | int64 | false |
needsMonitorConfUpdate | NeedsMonitorConfUpdate provides the last generation that needs an update through the fdbmonitor conf. | int64 | false |
missingDatabaseStatus | DatabaseUnavailable provides the last generation that could not complete reconciliation due to the database being unavailable. | int64 | false |
hasExtraListeners | HasExtraListeners provides the last generation that could not complete reconciliation because it has more listeners than it is supposed to. | int64 | false |
needsServiceUpdate | NeedsServiceUpdate provides the last generation that needs an update to the service config. | int64 | false |
hasPendingRemoval | HasPendingRemoval provides the last generation that has pods that have been excluded but are pending being removed. A cluster in this state is considered reconciled, but we track this in the status to allow users of the operator to track when the removal is fully complete. | int64 | false |
hasUnhealthyProcess | HasUnhealthyProcess provides the last generation that has at least one process group with a negative condition. | int64 | false |
needsLockConfigurationChanges | NeedsLockConfigurationChanges provides the last generation that is pending a change to the configuration of the locking system. | int64 | false |
ClusterHealth represents different views into health in the cluster status.
Field | Description | Scheme | Required |
---|---|---|---|
available | Available reports whether the database is accepting reads and writes. | bool | false |
healthy | Healthy reports whether the database is in a fully healthy state. | bool | false |
fullReplication | FullReplication reports whether all data are fully replicated according to the current replication policy. | bool | false |
dataMovementPriority | DataMovementPriority reports the priority of the highest-priority data movement in the cluster. | int | false |
ConnectionString models the contents of a cluster file in a structured way
Field | Description | Scheme | Required |
---|---|---|---|
databaseName | DatabaseName provides an identifier for the database which persists across coordinator changes. | string | false |
generationID | GenerationID provides a unique ID for the current generation of coordinators. | string | false |
coordinators | Coordinators provides the addresses of the current coordinators. | []string | false |
ContainerOverrides provides options for customizing a container created by the operator.
Field | Description | Scheme | Required |
---|---|---|---|
enableLivenessProbe | EnableLivenessProbe defines if the sidecar should have a livenessProbe. This setting will be ignored on the main container. | *bool | false |
enableReadinessProbe | EnableReadinessProbe defines if the sidecar should have a readinessProbe. This setting will be ignored on the main container. Deprecated: Will be removed in the next major release. | *bool | false |
enableTls | EnableTLS controls whether we should be listening on a TLS connection. | bool | false |
peerVerificationRules | PeerVerificationRules provides the rules for what client certificates the process should accept. | string | false |
imageConfigs | ImageConfigs allows customizing the image that we use for a container. | []ImageConfig | false |
CoordinatorSelectionSetting defines the process class and the priority of it. A higher priority means that the process class is preferred over another.
Field | Description | Scheme | Required |
---|---|---|---|
processClass | ProcessClass defines the process class to associate with priority with. | ProcessClass | false |
priority | Priority defines the ordering of different process classes. | int | false |
CrashLoopContainerObject specifies crash-loop target for specific container.
Field | Description | Scheme | Required |
---|---|---|---|
containerName | Name of the target container. | string | false |
targets | Target processes to kill inside the container. | []ProcessGroupID | false |
FaultDomain represents the FaultDomain of a process group
FoundationDBCluster is the Schema for the foundationdbclusters API
Field | Description | Scheme | Required |
---|---|---|---|
metadata | metav1.ObjectMeta | false | |
spec | FoundationDBClusterSpec | false | |
status | FoundationDBClusterStatus | false |
FoundationDBClusterAutomationOptions provides flags for enabling or disabling operations that can be performed on a cluster.
Field | Description | Scheme | Required |
---|---|---|---|
configureDatabase | ConfigureDatabase defines whether the operator is allowed to reconfigure the database. | *bool | false |
killProcesses | KillProcesses defines whether the operator is allowed to bounce fdbserver processes. | *bool | false |
cacheDatabaseStatusForReconciliation | CacheDatabaseStatusForReconciliation defines whether the operator is using the same FoundationDB machine-readable status for all sub-reconcilers or if the machine-readable status should be fetched by ever sub-reconciler if required. Enabling this setting might improve the operator reconciliation speed for large clusters. | *bool | false |
replacements | Replacements contains options for automatically replacing failed processes. | AutomaticReplacementOptions | false |
ignorePendingPodsDuration | IgnorePendingPodsDuration defines how long a Pod has to be in the Pending Phase before ignore it during reconciliation. This prevents Pod that are stuck in Pending to block further reconciliation. | time.Duration | false |
useNonBlockingExcludes | UseNonBlockingExcludes defines whether the operator is allowed to use non blocking exclude commands. The default is false. | *bool | false |
useLocalitiesForExclusion | UseLocalitiesForExclusion defines whether the exclusions are done using localities instead of IP addresses. This feature requires at least FDB 7.1.42 or 7.3.26. The default is false. | *bool | false |
ignoreTerminatingPodsSeconds | IgnoreTerminatingPodsSeconds defines how long a Pod has to be in the Terminating Phase before we ignore it during reconciliation. This prevents Pod that are stuck in Terminating to block further reconciliation. | *int | false |
ignoreMissingProcessesSeconds | IgnoreMissingProcessesSeconds defines how long a process group has to be in the MissingProcess condition until it will be ignored during reconciliation. This prevents that a process will block reconciliation. | *int | false |
failedPodDurationSeconds | FailedPodDurationSeconds defines the duration a Pod can stay in the deleted state (deletionTimestamp != 0) before it gets marked as PodFailed. This is important in cases where a fdbserver process is still reporting but the Pod resource is marked for deletion. This can happen when the kubelet or a node fails. Setting this condition will ensure that the operator is replacing affected Pods. | *int | false |
maxConcurrentReplacements | MaxConcurrentReplacements defines how many process groups can be concurrently replaced if they are misconfigured. If the value will be set to 0 this will block replacements and these misconfigured Pods must be replaced manually or by another process. For each reconcile loop the operator calculates the maximum number of possible replacements by taken this value as the upper limit and removes all ongoing replacements that have not finished. Which means if the value is set to 5 and we have 4 ongoing replacements (process groups marked with remove but not excluded) the operator is allowed to replace on further process group. | *int | false |
deletionMode | DeletionMode defines the deletion mode for this cluster. This can be PodUpdateModeNone, PodUpdateModeAll, PodUpdateModeZone or PodUpdateModeProcessGroup. The DeletionMode defines how Pods are deleted in order to update them or when they are removed. | PodUpdateMode | false |
removalMode | RemovalMode defines the removal mode for this cluster. This can be PodUpdateModeNone, PodUpdateModeAll, PodUpdateModeZone or PodUpdateModeProcessGroup. The RemovalMode defines how process groups are deleted in order when they are marked for removal. | PodUpdateMode | false |
waitBetweenRemovalsSeconds | WaitBetweenRemovalsSeconds defines how long to wait between the last removal and the next removal. This is only an upper limit if the process group and the according resources are deleted faster than the provided duration the operator will move on with the next removal. The idea is to prevent a race condition were the operator deletes a resource but the Kubernetes API is slower to trigger the actual deletion, and we are running into a situation where the fault tolerance check still includes the already deleted processes. Defaults to 60. | *int | false |
podUpdateStrategy | PodUpdateStrategy defines how Pod spec changes are rolled out either by replacing Pods or by deleting Pods. The default for this is ReplaceTransactionSystem. | PodUpdateStrategy | false |
useManagementAPI | UseManagementAPI defines if the operator should make use of the management API instead of using fdbcli to interact with the FoundationDB cluster. | *bool | false |
maintenanceModeOptions | MaintenanceModeOptions contains options for maintenance mode related settings. | MaintenanceModeOptions | false |
ignoreLogGroupsForUpgrade | IgnoreLogGroupsForUpgrade defines the list of LogGroups that should be ignored during fdb version upgrade. The default is a list that includes "fdb-kubernetes-operator". | []LogGroup | false |
FoundationDBClusterFaultDomain describes the fault domain that a cluster is replicated across.
Field | Description | Scheme | Required |
---|---|---|---|
key | Key provides a topology key for the fault domain to replicate across. | string | false |
value | Value provides a harcoded value to use for the zoneid for the pods. | string | false |
valueFrom | ValueFrom provides a field selector to use as the source of the fault domain. | string | false |
zoneCount | ZoneCount provides the number of fault domains in the data center where these processes are running. This is only used in the kubernetes-cluster fault domain strategy. |
int | false |
zoneIndex | ZoneIndex provides the index of this Kubernetes cluster in the list of KCs in the data center. This is only used in the kubernetes-cluster fault domain strategy. |
int | false |
FoundationDBClusterList contains a list of FoundationDBCluster objects
Field | Description | Scheme | Required |
---|---|---|---|
metadata | metav1.ListMeta | false | |
items | []FoundationDBCluster | true |
FoundationDBClusterSpec defines the desired state of a cluster.
Field | Description | Scheme | Required |
---|---|---|---|
version | Version defines the version of FoundationDB the cluster should run. | string | true |
databaseConfiguration | DatabaseConfiguration defines the database configuration. | DatabaseConfiguration | false |
processes | Processes defines process-level settings. | map[ProcessClass]ProcessSettings | false |
processCounts | ProcessCounts defines the number of processes to configure for each process class. You can generally omit this, to allow the operator to infer the process counts based on the database configuration. | ProcessCounts | false |
seedConnectionString | SeedConnectionString provides an additional connection string. This connection string will be used in addition to the connection string defined under cluster.Status.ConnectionString to connect to the cluster. This setting can be used to create a multi-region cluster or to recover a cluster if it is out of sync. | string | false |
partialConnectionString | PartialConnectionString provides a way to specify part of the connection string (e.g. the database name and coordinator generation) without specifying the entire string. This does not allow for setting the coordinator IPs. If SeedConnectionString is set, PartialConnectionString will have no effect. They cannot be used together. |
ConnectionString | false |
faultDomain | FaultDomain defines the rules for what fault domain to replicate across. | FoundationDBClusterFaultDomain | false |
processGroupsToRemove | ProcessGroupsToRemove defines the process groups that we should remove from the cluster. This list contains the process group IDs. | []ProcessGroupID | false |
processGroupsToRemoveWithoutExclusion | ProcessGroupsToRemoveWithoutExclusion defines the process groups that we should remove from the cluster without excluding them. This list contains the process group IDs. This should be used for cases where a pod does not have an IP address and you want to remove it and destroy its volume without confirming the data is fully replicated. | []ProcessGroupID | false |
configMap | ConfigMap allows customizing the config map the operator creates. | *corev1.ConfigMap | false |
mainContainer | MainContainer defines customization for the foundationdb container. | ContainerOverrides | false |
sidecarContainer | SidecarContainer defines customization for the foundationdb-kubernetes-sidecar container. | ContainerOverrides | false |
trustedCAs | TrustedCAs defines a list of root CAs the cluster should trust, in PEM format. | []string | false |
sidecarVariables | SidecarVariables defines Custom variables that the sidecar should make available for substitution in the monitor conf file. | []string | false |
logGroup | LogGroup defines the log group to use for the trace logs for the cluster. | string | false |
dataCenter | DataCenter defines the data center where these processes are running. | string | false |
dataHall | DataHall defines the data hall where these processes are running. | string | false |
automationOptions | AutomationOptions defines customization for enabling or disabling certain operations in the operator. | FoundationDBClusterAutomationOptions | false |
processGroupIDPrefix | ProcessGroupIDPrefix defines a prefix to append to the process group IDs in the locality fields. This must be a valid Kubernetes label value. See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set for more details on that. | string | false |
lockOptions | LockOptions allows customizing how we manage locks for global operations. | LockOptions | false |
routing | Routing defines the configuration for routing to our pods. | RoutingConfig | false |
ignoreUpgradabilityChecks | IgnoreUpgradabilityChecks determines whether we should skip the check for client compatibility when performing an upgrade. | bool | false |
buggify | Buggify defines settings for injecting faults into a cluster for testing. | BuggifyConfig | false |
storageServersPerPod | StorageServersPerPod defines how many Storage Servers should run in a single process group (Pod). This number defines the number of processes running in one Pod whereas the ProcessCounts defines the number of Pods created. This means that you end up with ProcessCounts["storage"] * StorageServersPerPod storage processes. | int | false |
logServersPerPod | LogServersPerPod defines how many Log Servers should run in a single process group (Pod). This number defines the number of processes running in one Pod whereas the ProcessCounts defines the number of Pods created. This means that you end up with ProcessCounts["Log"] * LogServersPerPod log processes. This also affects processes with the transaction class. | int | false |
minimumUptimeSecondsForBounce | MinimumUptimeSecondsForBounce defines the minimum time, in seconds, that the processes in the cluster must have been up for before the operator can execute a bounce. | int | false |
replaceInstancesWhenResourcesChange | ReplaceInstancesWhenResourcesChange defines if an instance should be replaced when the resource requirements are increased. This can be useful with the combination of local storage. | *bool | false |
skip | Skip defines if the cluster should be skipped for reconciliation. This can be useful for investigating in issues or if the environment is unstable. | bool | false |
coordinatorSelection | CoordinatorSelection defines which process classes are eligible for coordinator selection. If empty all stateful processes classes are equally eligible. A higher priority means that a process class is preferred over another process class. If the FoundationDB cluster is spans across multiple Kubernetes clusters or DCs the CoordinatorSelection must match in all FoundationDB cluster resources otherwise the coordinator selection process could conflict. | []CoordinatorSelectionSetting | false |
labels | LabelConfig allows customizing labels used by the operator. | LabelConfig | false |
useExplicitListenAddress | UseExplicitListenAddress determines if we should add a listen address that is separate from the public address. Deprecated: This setting will be removed in the next major release. | *bool | false |
imageType | ImageType defines the image type that should be used for the FoundationDBCluster deployment. When the type is set to "unified" the deployment will use the new fdb-kubernetes-monitor. Otherwise the main container and the sidecar container will use different images. Default: split | *ImageType | false |
maxZonesWithUnavailablePods | MaxZonesWithUnavailablePods defines the maximum number of zones that can have unavailable pods during the update process. When unset, there is no limit to the number of zones with unavailable pods. | *int | false |
FoundationDBClusterStatus defines the observed state of FoundationDBCluster
Field | Description | Scheme | Required |
---|---|---|---|
databaseConfiguration | DatabaseConfiguration provides the running configuration of the database. | DatabaseConfiguration | false |
generations | Generations provides information about the latest generation to be reconciled, or to reach other stages at which reconciliation can halt. | ClusterGenerationStatus | false |
health | Health provides information about the health of the database. | ClusterHealth | false |
requiredAddresses | RequiredAddresses define that addresses that we need to enable for the processes in the cluster. | RequiredAddressSet | false |
hasIncorrectConfigMap | HasIncorrectConfigMap indicates whether the latest config map is out of date with the cluster spec. | bool | false |
hasIncorrectServiceConfig | HasIncorrectServiceConfig indicates whether the cluster has service config that is out of date with the cluster spec. | bool | false |
needsNewCoordinators | NeedsNewCoordinators indicates whether the cluster needs to recruit new coordinators to fulfill its fault tolerance requirements. | bool | false |
runningVersion | RunningVersion defines the version of FoundationDB that the cluster is currently running. | string | false |
connectionString | ConnectionString defines the contents of the cluster file. | string | false |
configured | Configured defines whether we have configured the database yet. | bool | false |
hasListenIPsForAllPods | HasListenIPsForAllPods defines whether every pod has an environment variable for its listen address. | bool | false |
storageServersPerDisk | StorageServersPerDisk defines the storageServersPerPod observed in the cluster. If there are more than one value in the slice the reconcile phase is not finished. | []int | false |
logServersPerDisk | LogServersPerDisk defines the LogServersPerDisk observed in the cluster. If there are more than one value in the slice the reconcile phase is not finished. | []int | false |
imageTypes | ImageTypes defines the kinds of images that are in use in the cluster. If there is more than one value in the slice the reconcile phase is not finished. | []ImageType | false |
processGroups | ProcessGroups contain information about a process group. This information is used in multiple places to trigger the according action. | []*ProcessGroupStatus | false |
locks | Locks contains information about the locking system. | LockSystemStatus | false |
maintenanceModeInfo | MaintenenanceModeInfo contains information regarding process groups in maintenance mode Deprecated: This setting is not used anymore. | MaintenanceModeInfo | false |
desiredProcessGroups | DesiredProcessGroups reflects the number of expected running process groups. | int | false |
reconciledProcessGroups | ReconciledProcessGroups reflects the number of process groups that have no condition and are not marked for removal. | int | false |
ImageType defines a single kind of images used in the cluster.
LabelConfig allows customizing labels used by the operator.
Field | Description | Scheme | Required |
---|---|---|---|
matchLabels | MatchLabels provides the labels that the operator should use to identify resources owned by the cluster. These will automatically be applied to all resources the operator creates. | map[string]string | false |
resourceLabels | ResourceLabels provides additional labels that the operator should apply to resources it creates. | map[string]string | false |
processGroupIDLabels | ProcessGroupIDLabels provides the labels that we use for the process group ID field. The first label will be used by the operator when filtering resources. | []string | false |
processClassLabels | ProcessClassLabels provides the labels that we use for the process class field. The first label will be used by the operator when filtering resources. | []string | false |
filterOnOwnerReference | FilterOnOwnerReferences determines whether we should check that resources are owned by the cluster object, in addition to the constraints provided by the match labels. Deprecated: This setting will be removed in the next major release. | *bool | false |
LockDenyListEntry models an entry in the deny list for the locking system.
Field | Description | Scheme | Required |
---|---|---|---|
id | The ID of the operator instance this entry is targeting. | string | false |
allow | Whether the instance is allowed to take locks. | bool | false |
LockOptions provides customization for locking global operations.
Field | Description | Scheme | Required |
---|---|---|---|
disableLocks | DisableLocks determines whether we should disable locking entirely. | *bool | false |
lockKeyPrefix | LockKeyPrefix provides a custom prefix for the keys in the database we use to store locks. | string | false |
lockDurationMinutes | LockDurationMinutes determines the duration that locks should be valid for. | *int | false |
denyList | DenyList manages configuration for whether an instance of the operator should be denied from taking locks. | []LockDenyListEntry | false |
LockSystemStatus provides a summary of the status of the locking system.
Field | Description | Scheme | Required |
---|---|---|---|
lockDenyList | DenyList contains a list of operator instances that are prevented from taking locks. | []string | false |
LogGroup represents a LogGroup used by a FoundationDB process to log trace events. The LogGroup can be used to filter clients during an upgrade.
MaintenanceModeInfo contains information regarding the zone and process groups that are put into maintenance mode by the operator
Field | Description | Scheme | Required |
---|---|---|---|
startTimestamp | StartTimestamp provides the timestamp when this zone is put into maintenance mode Deprecated: This setting is not used anymore. | *metav1.Time | false |
zoneID | ZoneID that is placed in maintenance mode Deprecated: This setting is not used anymore. | FaultDomain | false |
processGroups | ProcessGroups that are placed in maintenance mode Deprecated: This setting is not used anymore. | []string | false |
MaintenanceModeOptions controls options for placing zones in maintenance mode.
Field | Description | Scheme | Required |
---|---|---|---|
UseMaintenanceModeChecker | UseMaintenanceModeChecker defines whether the operator is allowed to use maintenance mode before updating pods. If this setting is set to true the operator will set and reset the maintenance mode when updating pods. If this setting is set to true, then ResetMaintenanceMode will also be enabled to make sure the operator is able to reset the maintenance mode again. Default is false. | *bool | false |
resetMaintenanceMode | ResetMaintenanceMode defines whether the operator should reset the maintenance mode if all storage processes under the maintenance zone have been restarted. The default is false. For more details see: https://github.com/FoundationDB/fdb-kubernetes-operator/blob/improve-maintenance-mode-integration/docs/manual/operations.md#maintenance Default is false. | *bool | false |
maintenanceModeTimeSeconds | MaintenanceModeTimeSeconds provides the duration for the zone to be in maintenance. It will automatically be switched off after the time elapses. Default is 600. | *int | false |
PodUpdateMode defines the deletion mode for the cluster
PodUpdateStrategy defines how Pod spec changes should be applied.
ProcessGroupCondition represents a degraded condition that a process group is in.
Field | Description | Scheme | Required |
---|---|---|---|
type | Name of the condition | ProcessGroupConditionType | false |
timestamp | Timestamp when the Condition was observed | int64 | false |
ProcessGroupConditionType represents a concrete ProcessGroupCondition.
ProcessGroupID represents the ID of the process group
ProcessGroupStatus represents the status of a ProcessGroup.
Field | Description | Scheme | Required |
---|---|---|---|
processGroupID | ProcessGroupID represents the ID of the process group | ProcessGroupID | false |
processClass | ProcessClass represents the class the process group has. | ProcessClass | false |
addresses | Addresses represents the list of addresses the process group has been known to have. | []string | false |
removalTimestamp | RemoveTimestamp if not empty defines when the process group was marked for removal. | *metav1.Time | false |
exclusionTimestamp | ExclusionTimestamp defines when the process group has been fully excluded. This is only used within the reconciliation process, and should not be considered authoritative. | *metav1.Time | false |
exclusionSkipped | ExclusionSkipped determines if exclusion has been skipped for a process, which will allow the process group to be removed without exclusion. | bool | false |
processGroupConditions | ProcessGroupConditions represents a list of degraded conditions that the process group is in. | []*ProcessGroupCondition | false |
faultDomain | FaultDomain represents the last seen fault domain from the cluster status. This can be used if a Pod or process is not running and would be missing in the cluster status. | FaultDomain | false |
ProcessSettings defines process-level settings.
Field | Description | Scheme | Required |
---|---|---|---|
podTemplate | PodTemplate allows customizing the pod. If a container image with a tag is specified the operator will throw an error and stop processing the cluster. | *corev1.PodTemplateSpec | false |
volumeClaimTemplate | VolumeClaimTemplate allows customizing the persistent volume claim for the pod. This will be ignored by the operator for stateless processes. | *corev1.PersistentVolumeClaim | false |
customParameters | CustomParameters defines additional parameters to pass to the fdbserver process. Only parameters for the [fdbserver] section are supported. Parameters from the [general] and [fdbmonitor] section are not supported. For more Information see: https://apple.github.io/foundationdb/configuration.html#general-section | FoundationDBCustomParameters | false |
PublicIPSource models options for how a pod gets its public IP.
RequiredAddressSet provides settings for which addresses we need to listen on.
Field | Description | Scheme | Required |
---|---|---|---|
tls | TLS defines whether we need to listen on a TLS address. | bool | false |
nonTLS | NonTLS defines whether we need to listen on a non-TLS address. | bool | false |
RoutingConfig allows configuring routing to our pods, and services that sit in front of them.
Field | Description | Scheme | Required |
---|---|---|---|
headlessService | Headless determines whether we want to run a headless service for the cluster. | *bool | false |
publicIPSource | PublicIPSource specifies what source a process should use to get its public IPs. This supports the values pod and service . |
*PublicIPSource | false |
podIPFamily | PodIPFamily tells the pod which family of IP addresses to use. You can use 4 to represent IPv4, and 6 to represent IPv6. This feature is only supported in FDB 7.0 or later, and requires dual-stack support in your Kubernetes environment. | *int | false |
useDNSInClusterFile | UseDNSInClusterFile determines whether to use DNS names rather than IP addresses to identify coordinators in the cluster file. This requires FoundationDB 7.0+. | *bool | false |
defineDNSLocalityFields | DefineDNSLocalityFields determines whether to define pod DNS names on pod specs and provide them in the locality arguments to fdbserver. This is ignored if UseDNSInCluster is true. | *bool | false |
dnsDomain | DNSDomain defines the cluster domain used in a DNS name generated for a service. The default is cluster.local . |
*string | false |
TaintReplacementOption defines the taint key and taint duration the operator will react to a tainted node Example of TaintReplacementOption - key: "example.org/maintenance" durationInSeconds: 7200 # Ensure the taint is present for at least 2 hours before replacing Pods on a node with this taint. - key: "*" # The wildcard would allow to define a catch all configuration durationInSeconds: 3600 # Ensure the taint is present for at least 1 hour before replacing Pods on a node with this taint Setting durationInSeconds to the maximum of int64 will practically disable the taint key. When a Node taint key matches both an exact TaintReplacementOption key and a wildcard key, the exact matched key will be used.
Field | Description | Scheme | Required |
---|---|---|---|
key | Tainted key | *string | false |
durationInSeconds | The tainted key must be present for DurationInSeconds before operator replaces pods on the node with this taint; DurationInSeconds cannot be a negative number. | *int64 | false |
FoundationDBCustomParameter defines a single custom knob
DataCenter represents a data center in the region configuration
Field | Description | Scheme | Required |
---|---|---|---|
id | The ID of the data center. This must match the dcid locality field. | string | false |
priority | The priority of this data center when we have to choose a location. Higher priorities are preferred over lower priorities. | int | false |
satellite | Satellite indicates whether the data center is serving as a satellite for the region. A value of 1 indicates that it is a satellite, and a value of 0 indicates that it is not a satellite. | int | false |
DatabaseConfiguration represents the configuration of the database
Field | Description | Scheme | Required |
---|---|---|---|
redundancy_mode | RedundancyMode defines the core replication factor for the database. | RedundancyMode | false |
storage_engine | StorageEngine defines the storage engine the database uses. | StorageEngine | false |
usable_regions | UsableRegions defines how many regions the database should store data in. | int | false |
regions | Regions defines the regions that the database can replicate in. | []Region | false |
excluded_servers | ExcludedServers defines the list of excluded servers form the database. | []ExcludedServers | false |
RoleCounts | RoleCounts defines how many processes the database should recruit for each role. | RoleCounts | true |
VersionFlags | VersionFlags defines internal flags for testing new features in the database. | VersionFlags | true |
storage_migration_type | StorageMigrationType defines the storage migration type. | *StorageMigrationType | false |
perpetual_storage_wiggle | PerpetualStorageWiggle defines the wiggle speed. If set to 0 this feature is disabled. When setting StorageMigrationType to StorageMigrationTypeGradual, this value must be greater than 0. | *int | false |
perpetual_storage_wiggle_locality | PerpetualStorageWiggleLocality if defined the specified locality will be migrated. Format is: <<LOCALITY_KEY>:<LOCALITY_VALUE>|0> | *string | false |
perpetual_storage_wiggle_engine | PerpetualStorageWiggleEngine defines the perpetual storage engine type. | *StorageEngine | false |
ExcludedServers represents the excluded servers in the database configuration
Field | Description | Scheme | Required |
---|---|---|---|
address | The Address of the excluded server. | string | false |
locality | The Locality of the excluded server. | string | false |
ProcessCounts represents the number of processes we have for each valid process class. If one of the counts in the spec is set to 0, we will infer the process count for that class from the role counts. If one of the counts in the spec is set to -1, we will not create any processes for that class. See GetProcessCountsWithDefaults for more information on the rules for inferring process counts.
Field | Description | Scheme | Required |
---|---|---|---|
unset | int | false | |
storage | int | false | |
transaction | int | false | |
resolution | int | false | |
tester | Deprecated: This setting will be removed in the next major release. use Test | int | false |
test | int | false | |
proxy | int | false | |
commit_proxy | int | false | |
grv_proxy | int | false | |
master | int | false | |
stateless | int | false | |
log | int | false | |
cluster_controller | int | false | |
router | int | false | |
fast_restore | int | false | |
data_distributor | int | false | |
coordinator | int | false | |
ratekeeper | int | false | |
storage_cache | int | false | |
backup | int | false |
RedundancyMode defines the core replication factor for the database
Region represents a region in the database configuration
Field | Description | Scheme | Required |
---|---|---|---|
datacenters | The data centers in this region. | []DataCenter | false |
satellite_logs | The number of satellite logs that we should recruit. | int | false |
satellite_redundancy_mode | The replication strategy for satellite logs. | RedundancyMode | false |
RoleCounts represents the roles whose counts can be customized.
Field | Description | Scheme | Required |
---|---|---|---|
storage | int | false | |
logs | int | false | |
proxies | int | false | |
commit_proxies | int | false | |
grv_proxies | int | false | |
resolvers | int | false | |
log_routers | int | false | |
remote_logs | int | false |
StorageEngine defines the storage engine for the database
StorageMigrationType defines the storage migration type.
VersionFlags defines internal flags for new features in the database.
Field | Description | Scheme | Required |
---|---|---|---|
log_spill | int | false | |
log_version | int | false |
ProcessClass models the class of a pod
ImageConfig provides a policy for customizing an image. When multiple image configs are provided, they will be merged into a single config that will be used to define the final image. For each field, we select the value from the first entry in the config list that defines a value for that field, and matches the version of FoundationDB the image is for. Any config that specifies a different version than the one under consideration will be ignored for the purposes of defining that image.
Field | Description | Scheme | Required |
---|---|---|---|
version | Version is the version of FoundationDB this policy applies to. If this is blank, the policy applies to all FDB versions. | string | false |
baseImage | BaseImage specifies the part of the image before the tag. | string | false |
tag | Tag specifies a full image tag. | string | false |
tagSuffix | TagSuffix specifies a suffix that will be added after the version to form the full tag. | string | false |