Skip to content

WekaCluster

WekaCluster

kubectl explain wekacluster
Field Description Default Validation
apiVersion string weka.weka.io/v1alpha1
kind string WekaCluster
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec WekaClusterSpec
status WekaClusterStatus

WekaClusterSpec

kubectl explain wekacluster.spec

WekaClusterSpec defines the desired state of WekaCluster

Appears in: - WekaCluster

Field Description Default Validation
template string A template/strategy of how to build a cluster, right now only "dynamic" supported, explicitly specifying config of a cluster dynamic
image string full container image name in format of quay.io/weka.io/weka-in-container:VERSION Pattern: ^.+:\d+\.\d+\.\d+.*$
imagePullSecret string image pull secret to use for pulling the image
driversDistService string endpoint for distribution service, global https://drivers.weka.io or in-k8s-cluster "https://weka-drivers-dist.namespace.svc.cluster.local:60001"
nodeSelector object (keys:string, values:string) node selector for the weka containers
roleNodeSelector RoleNodeSelector node selector for the weka containers per role, overrides global nodeSelector
roleAnnotations RoleAnnotations annotations for the weka containers per role
roleNetworkSelector RoleNetworkSelector network selector for the weka containers per role, overrides global network
roleNuma RoleNumaSelector NUMA configuration for the weka containers per role, overrides global numa
failureDomain FailureDomain failure domain configuration for weka containers
podConfig PodConfiguration advanced pod affinities configuration
cpuPolicy CpuPolicy cpu policy to use for scheduling cores for weka, unless instructed by weka team, keep default of auto
manual and shared are same, with shared being deprecated
when manual is used - no exclusive cores will be allocaated on k8s/cgroup level, assuming good alignment of cores usage across different applications, like weka and slurm
there is no need to specify siblings in this list, but on the side of other applications like slurm, both weka core and its siblings should be excluded from used cpu set
auto Enum: [auto shared dedicated dedicated_ht manual]
tracesConfiguration TracesConfiguration traces capacities configuration for weka containers
tolerations string array simplified tolerations, checked only by key existence, expanding to NoExecute|NoSchedule tolerations
rawTolerations Toleration array tolerations in standard k8s format
wekaHome WekaHomeConfig weka home configuration
ipv6 boolean use ipv6 for weka cluster networking configuration
additionalMemory AdditionalMemory additional memory to allocate for weka containers
ports ClusterPorts port allocation for weka containers, if not set, free range will be auto selected. Currently allocated ports can be seen in wekacluster.status.ports
operatorSecretRef string reference to the secret containing the weka system credentials used by operator, used in flow of migration
expandEndpoints string array endpoint of existing weka cluster, containers created for this k8s-driver cluster will join existing weka cluster, used in flow of migration
dynamicTemplate WekaClusterTemplate weka cluster topology configuration
network Network weka cluster network configuration
hotSpare integer A hot spare is reserved capacity designed to handle data rebuilds while maintaining the system's net capacity, even in the event of failure domains being lost
See: https://docs.weka.io/weka-system-overview/ssd-capacity-management#hot-spare
0
redundancyLevel integer storage capacity dedicated to system protection (2/4). https://docs.weka.io/weka-system-overview/ssd-capacity-management#protection-level
stripeWidth integer stripe width is the number of blocks within a common protection set, ranging from 3 to 16 https://docs.weka.io/weka-system-overview/ssd-capacity-management#stripe-width
leadershipRaftSize integer size of raft for leadership, defaults to 5, 5/9 are supported
bucketRaftSize integer size of raft for buckets, defaults to 5, 5/9 are supported
startIoConditions StartIoConditions conditions that must be met before starting IO
gracefulDestroyDuration Duration During this period the cluster will not be destroyed (protection from accidental deletion)
Note: due to discrepancies in validation vs parsing, we use a Pattern instead of Format=duration. See
https://bugzilla.redhat.com/show_bug.cgi?id=2050332
https://github.com/kubernetes/apimachinery/issues/131
https://github.com/kubernetes/apiextensions-apiserver/issues/56
24h Pattern: ^(0\|([0-9]+(\.[0-9]+)?(ns\|us\|µs\|ms\|s\|m\|h))+)$
Type: string
overrides WekaClusterSpecOverrides Advanced override settings for cluster operations. Only use when explicitly instructed by Weka support.
csiConfig CsiConfig Configuration for the Weka CSI Driver integration. Controls how the CSI driver discovers and connects to this cluster.
globalPVC PVCConfig Reference to a PVC shared by all Weka containers. Use to persist container state on nodes lacking local NVMe storage.
serviceAccountName string Name of the Kubernetes ServiceAccount for Weka container pods. Operator default is used if empty.
roleCoreIds RoleCoreIds RoleCoreIds defines a list of CPU core IDs (as seen by the host) that should
be assigned to containers of the specific role when CpuPolicy is set to
"manual". If the slice for the given role is empty, core ids will not be
set for that role, and the manual policy will fail validation on pod start.
NOTE: The semantics are the same as for NodeSelector/Annotations structures –
a single list per role which will be copied to every container of that role.
Users are responsible to provide a set that makes sense for their topology.
Example:
roleCoreIds:
compute: [0,1,2,3]
drive: [4,5,6,7]
will result in every compute container getting coreIds [0,1,2,3] and every
drive container getting [4,5,6,7].
Type: object
roleNonDatapathCoreIds RoleCoreIds RoleNonDatapathCoreIds defines CPU core IDs (as seen by the host) to pin
management/aux (non-IONode) processes to, per container role. Applicable
when CpuPolicy is "manual" or "shared".
When set, weka pins management processes to these cores instead of deriving them automatically.
Type: object
encryption EncryptionConfig Encryption configuration for data at rest. Configure a HashiCorp Vault KMS for production use.
nfs NfsConfig
s3 S3Config
smbw SmbwConfig
telemetry TelemetryConfig Telemetry configuration for exporting audit logs and other telemetry data
catalog CatalogConfig Catalog configuration for data catalog service
numa WekaNuma NUMA confinement configuration for all weka containers, overridden per role by roleNuma

AdditionalMemory

kubectl explain wekacluster.spec.additionalMemory

Appears in: - WekaClusterSpec

Field Description Default Validation
compute integer Additional memory in MiB for compute containers (positive or negative offset from auto-calculated baseline).
drive integer Additional memory in MiB for drive containers.
s3 integer Additional memory in MiB for S3 gateway containers.
nfs integer Additional memory in MiB for NFS protocol containers.
envoy integer Additional memory in MiB for Envoy proxy containers (used by S3 gateway).
smbw integer
dataServices integer

CatalogConfig

kubectl explain wekacluster.spec.catalog

CatalogConfig defines configuration for the data catalog service

Appears in: - WekaClusterSpec

Field Description Default Validation
indexInterval string IndexInterval specifies how often the catalog index is updated (e.g., "1d", "1m") 1d
retentionPeriod string RetentionPeriod specifies how long catalog data is retained (e.g., "30d", "10m") 30d

ClusterPorts

kubectl explain wekacluster.spec.ports

ClusterPorts defines the port allocation for the Weka cluster. We should not be updating Spec, as it's a user interface and we should not break ability to update spec file. Therefore, when BasePort is 0, and PortRange is 0, we have application level defaults that will be written in here.

Appears in: - WekaClusterSpec - WekaClusterStatus

Field Description Default Validation
basePort integer Starting port number used for allocating Weka cluster ports. Can be overridden by the user; defaults to 35000 for the first cluster.
portRange integer Number of ports to allocate for the cluster. Defaults to 260 with operator version 1.10 / WEKA 5.1.0 onwards (500 for earlier versions).
lbPort integer Data port for the S3 software load balancer. If unset, auto-allocated within the cluster port range relative to basePort (basePort+300 in the legacy 500-port layout, basePort+240 with the default 260-port range).
lbAdminPort integer Administration port for the S3 software load balancer. If unset, auto-allocated within the cluster port range, immediately after lbPort.
s3Port integer Data port for S3 API traffic. If unset, auto-allocated within the cluster port range, after the load balancer ports.
managementProxyPort integer Enables Kubernetes-level access to Weka management for port-forwarding, REST API usage, and UI access. If unset, auto-allocated within the cluster port range relative to basePort when the management proxy is first enabled.
dataServicesPort integer

CpuPolicy

Underlying type: string

Appears in: - WekaClientSpec - WekaClusterSpec - WekaContainerSpec

Field Description
auto
shared
dedicated
dedicated_ht
manual

CsiConfig

kubectl explain wekacluster.spec.csiConfig

Appears in: - WekaClusterSpec

Field Description Default Validation
endpointsSubnets string array CIDR subnets to filter which management IPs are advertised to the CSI driver. Leave empty to advertise all.
csiGroup string CSI driver group name. Scopes CSI resources when multiple Weka clusters coexist in the same namespace.
advanced AdvancedCsiConfig Advanced CSI driver settings. Should not be changed unless explicitly instructed by Weka support.
AdvancedCsiConfig
kubectl explain wekacluster.spec.csiConfig.advanced

Appears in: - ClientCsiConfig - CsiConfig

Field Description Default Validation
enforceTrustedHttps boolean
nodeLabels object (keys:string, values:string)
nodeTolerations Toleration array
controllerLabels object (keys:string, values:string)
controllerTolerations Toleration array
skipGarbageCollection boolean

EncryptionConfig

kubectl explain wekacluster.spec.encryption

Appears in: - WekaClusterSpec

Field Description Default Validation
vault VaultConfig Configures a HashiCorp Vault KMS for encryption key management. Recommended for production.
internal InternalEncryptionConfig InternalConfig defines internal encryption settings, encryption key stored in weka configuration, for production systems use real KMS, however this mode can be useful to evaluate performance of encrypted filesystems
InternalEncryptionConfig
kubectl explain wekacluster.spec.encryption.internal

Appears in: - EncryptionConfig

Field Description Default Validation
enabled boolean
VaultConfig
kubectl explain wekacluster.spec.encryption.vault

Appears in: - EncryptionConfig

Field Description Default Validation
address string Vault address, e.g. "https://vault.example.com:8200".
role string Role to authenticate as in Vault.
authPath string Path under auth/ that the weka uses for login. defaults to "kubernetes" kubernetes
transitPath string Transit engine mount path, defaults "transit". transit
method string Vault Auth method (only “kubernetes” is supported on operator side.) kubernetes Enum: [kubernetes]
keyName string Name of the transit key. defaults to "weka-key" weka-key

FailureDomain

kubectl explain wekacluster.spec.failureDomain

Appears in: - WekaClusterSpec - WekaContainerSpec

Field Description Default Validation
label string label used for spreading the weka containers across different failure domains (if set)
nodes that have the same value for the label will be considered as a single failure domain
skew integer skew for the failure domain, if set, the weka containers will be spread with the skew in mind
(only applicable if label is set)
compositeLabels string array If multiple labels are specified, the failure domain will be the combination of the labels.
If compositeLabels is set, label and skew will be ignored.
When using compositeLabels, weka containers will be spread considering all labels
with best effort, but even distribution is not guaranteed

Network

kubectl explain wekacluster.spec.network

Appears in: - RoleNetworkSelector - WekaClientSpec - WekaClusterSpec - WekaContainerSpec

Field Description Default Validation
ethDevice string The name of a single network interface (for example, eth1) to be used by every backend container.
This is for clusters that use only one dedicated NIC for the data path.
You cannot use this field with ethDevices.
If you leave this empty, the system automatically uses the node’s interface associated with the first subnet defined in deviceSubnets.
ethDevices string array A list of network interface names to be used by backend containers when you have multiple dedicated NICs.
The order of interfaces in this list is important, as it maps directly to the ethSlots index (the first interface maps to slot-0, the second to slot-1, and so on).
You cannot use this field with ethDevice. Ensure that every interface listed here exists on all nodes that are part of the cluster.
gateway string The default gateway IPv4 address for the backend containers’ data-path network.
This is only necessary if backend subnets need to communicate with destinations outside of their local network (L2 segment).
If you have a flat, non-routed backend network, you can leave this field empty.
udpMode boolean A setting that enables or disables UDP encapsulation for backend traffic.
- false (default): Uses standard raw Ethernet frames. true: Wraps data-path traffic in UDP packets.
This is required if your network infrastructure or CNI (Container Network Interface) blocks traffic that isn’t IP-based.
deviceSubnets string array A list of backend subnets in CIDR notation (for example, 192.168.10.0/24).
The operator assigns IP addresses from these subnets to the backend containers for their data path network
items:Pattern: ^([0-9]\{1,3\}\.)\{3\}[0-9]\{1,3\}\/[0-9]\{1,2\}$
selectors NetworkSelector array Selectors define how backend data-path network interfaces are chosen on each node.
managementIpsSelectors NetworkSelector array Selectors for management IPs used for cluster API and agent communication.
bindManagementAll boolean BindManagementAll controls whether Weka containers bind to all network interfaces or only to specific management interfaces.
When set to false (default), containers will only listen on the management ips interfaces (restrict_listen mode).
When set to true, containers will listen on all ips (0.0.0.0) instead of specific IP addresses.
nvidiaVfSingleIp boolean NvidiaVfSingleIp indicates whether NVIDIA virtual functions (VFs) should be configured to use a single-ip weka mode, where multiple weka processes can share same VF
When not set defaults to false, in future releases, when auto-discovery of capabilities will be implemented not set might translate to true on supported setups
allocateVfPerIoNode boolean
NetworkSelector
kubectl explain wekacluster.spec.network.selectors

Appears in: - Network

Field Description Default Validation
subnet string CIDR subnet (e.g. 192.168.10.0/24) to filter interfaces. Only interfaces with an IP in this subnet are eligible.
min integer Minimum number of interfaces required from nodes matching this selector.
max integer Maximum number of interfaces to select per node matching this selector.
deviceNames string array
rdmaOnly boolean
disableRdma boolean

NfsConfig

kubectl explain wekacluster.spec.nfs

Appears in: - WekaClusterSpec

Field Description Default Validation
interfaces string array
ipRanges string array

PVCConfig

kubectl explain wekacluster.spec.globalPVC

Appears in: - WekaClientSpec - WekaClusterSpec - WekaContainerSpec

Field Description Default Validation
name string Name of the PersistentVolumeClaim to mount into all Weka containers.
path string Mount path inside the Weka container. Defaults to /opt/k8s-weka when empty.

PodConfiguration

kubectl explain wekacluster.spec.podConfig

Appears in: - WekaClusterSpec

Field Description Default Validation
topologySpreadConstraints RawExtension controls the distribution of weka containers across the failure domains Schemaless: {}
roleTopologySpreadConstraints RoleTopologySpreadConstraints takes precedence over the topologySpreadConstraints
affinity RawExtension advanced scheduling constraints Schemaless: {}
roleAffinity RoleAffinity affinity per container role
takes precedence over the affinity field
RoleAffinity
kubectl explain wekacluster.spec.podConfig.roleAffinity

Appears in: - PodConfiguration

Field Description Default Validation
compute RawExtension Schemaless: {}
drive RawExtension Schemaless: {}
s3 RawExtension Schemaless: {}
nfs RawExtension Schemaless: {}
smbw RawExtension Schemaless: {}
RoleTopologySpreadConstraints
kubectl explain wekacluster.spec.podConfig.roleTopologySpreadConstraints

Appears in: - PodConfiguration

Field Description Default Validation
compute RawExtension Schemaless: {}
drive RawExtension Schemaless: {}
s3 RawExtension Schemaless: {}
nfs RawExtension Schemaless: {}
smbw RawExtension Schemaless: {}

RoleAnnotations

kubectl explain wekacluster.spec.roleAnnotations

Appears in: - WekaClusterSpec

Field Description Default Validation
compute map[string]string annotations for compute weka containers
drive map[string]string annotations for drive weka containers
s3 map[string]string annotations for s3 weka containers
nfs map[string]string annotations for nfs weka containers
smbw map[string]string annotations for smbw weka containers
dataServices map[string]string annotations for data services weka containers

RoleCoreIds

kubectl explain wekacluster.spec.roleCoreIds

RoleCoreIds defines CPU core id lists per container role for Manual CPU policy. Each slice contains the core IDs (as visible to the node OS) that should be pinned to every container of the corresponding role. If a slice is empty or omitted, no explicit core pinning will be applied for that role.

Validation: - Type: object

Appears in: - WekaClusterSpec

Field Description Default Validation
compute integer array Optional: {}
drive integer array Optional: {}
s3 integer array Optional: {}
nfs integer array Optional: {}
smbw integer array Optional: {}
dataServices integer array Optional: {}

RoleNetworkSelector

kubectl explain wekacluster.spec.roleNetworkSelector

Appears in: - WekaClusterSpec

Field Description Default Validation
compute Network network selector for compute weka containers
drive Network network selector for drive weka containers
s3 Network network selector for s3 weka containers
nfs Network network selector for nfs weka containers
smbw Network network selector for smbw weka containers
dataServices Network network selector for data services weka containers

RoleNodeSelector

kubectl explain wekacluster.spec.roleNodeSelector

Appears in: - WekaClusterSpec

Field Description Default Validation
compute map[string]string nodeSelector for compute weka containers
drive map[string]string nodeSelector for drive weka containers
s3 map[string]string nodeSelector for s3 weka containers
nfs map[string]string nodeSelector for nfs weka containers
smbw map[string]string nodeSelector for smbw weka containers
dataServices map[string]string nodeSelector for data services weka containers

RoleNumaSelector

kubectl explain wekacluster.spec.roleNuma

Appears in: - WekaClusterSpec

Field Description Default Validation
compute WekaNuma NUMA configuration for compute weka containers
drive WekaNuma NUMA configuration for drive weka containers
s3 WekaNuma NUMA configuration for s3 weka containers
nfs WekaNuma NUMA configuration for nfs weka containers
smbw WekaNuma NUMA configuration for smbw weka containers
dataServices WekaNuma NUMA configuration for data services weka containers
WekaNuma
kubectl explain wekacluster.spec.numa

WekaNuma configures NUMA confinement for a single weka container

Appears in: - RoleNumaSelector - WekaClientSpec - WekaClusterSpec - WekaContainerSpec

Field Description Default Validation
single boolean Single, when true, confines the container to a single NUMA region Optional: {}
region integer Region is the NUMA region index to pin this container to Minimum: 0
Optional: {}
method WekaNumaMethod Method selects the enforcement mechanism Enum: [device-plugin dra]
Optional: {}
WekaNumaMethod

Underlying type: string

WekaNumaMethod defines how NUMA confinement is enforced

Validation: - Enum: [device-plugin dra]

Appears in: - WekaNuma

Field Description
device-plugin
dra WekaNumaMethodDra requests the NUMA region through a DRA ResourceClaim
(driver numa.weka.io) instead of a device-plugin extended resource.

S3Config

kubectl explain wekacluster.spec.s3

Appears in: - WekaClusterSpec

Field Description Default Validation
clusterCreateArgs string array No overlap validation, only appended to the cluster create command as-is
Useful for settings such as: --envoy-max-requests 1150 --envoy-max-connections 1300 --envoy-max-pending-requests 1450
Not propagated to already created cluster, and direct weka control should be used for that

SmbwConfig

kubectl explain wekacluster.spec.smbw

Appears in: - WekaClusterSpec

Field Description Default Validation
clusterName string ClusterName is the SMB-W cluster name, defaults to "default"
domainName string DomainName is the domain name for SMB-W, required for SMB-W cluster creation
domainJoinSecret string DomainJoinSecret is the name of a Kubernetes Secret holding the domain-join password.
The Secret must live in the same namespace as this WekaCluster resource. The password
is read from one of the keys "password", "Password", or "PASSWORD".
The domain join is only performed when both UserName and DomainJoinSecret are set;
if either is empty the join is silently skipped.
userName string UserName is the domain user used to join the domain (e.g. "domain-admin").
Required (together with DomainJoinSecret) to trigger the domain join.
ipRanges string array IpRanges specifies floating IP ranges for SMB-W high availability
symlink boolean Creation-time configuration flags
Symlink enables symlink support for SMB-W shares
domainNetbiosName string DomainNetbiosName is the NetBIOS name for the domain
idmapBackend string IdmapBackend specifies the identity mapping backend (e.g., "ad", "rfc2307")
defaultDomainMappingFromId integer DefaultDomainMappingFromId is the start of the UID/GID range for default domain mapping
defaultDomainMappingToId integer DefaultDomainMappingToId is the end of the UID/GID range for default domain mapping
joinedDomainMappingFromId integer JoinedDomainMappingFromId is the start of the UID/GID range for joined domain mapping
joinedDomainMappingToId integer JoinedDomainMappingToId is the end of the UID/GID range for joined domain mapping
encryption string Encryption specifies the encryption level for SMB connections Enum: [enabled disabled desired required]
scaleOutMode string ScaleOutMode specifies the scale-out mode for SMB-W clustering Enum: [none full partial]
smbConfExtra string SmbConfExtra contains additional smb.conf configuration
ipPools string array IpPools specifies IP pools for SMB-W service assignment

StartIoConditions

kubectl explain wekacluster.spec.startIoConditions

Appears in: - WekaClusterSpec

Field Description Default Validation
minNumDrives integer minimum number of drives that should be added to the cluster before starting IO

TelemetryConfig

kubectl explain wekacluster.spec.telemetry

TelemetryConfig defines the telemetry export configuration for the Weka cluster

Appears in: - WekaClusterSpec

Field Description Default Validation
exports TelemetryExport array List of telemetry exports to configure
TelemetryExport
kubectl explain wekacluster.spec.telemetry.exports

TelemetryExport defines a single telemetry export destination

Appears in: - TelemetryConfig

Field Description Default Validation
name string Name is the unique identifier for this export
sources string array Sources specifies which telemetry sources to export (e.g., "audit")
splunk SplunkExportConfig Splunk configuration for Splunk HEC export
SplunkExportConfig
kubectl explain wekacluster.spec.telemetry.exports.splunk

SplunkExportConfig defines Splunk-specific export configuration

Appears in: - TelemetryExport

Field Description Default Validation
authTokenSecretRef string AuthTokenSecretRef references a secret containing the Splunk HEC authentication token.
Format: "secretName.keyName" where secretName is the name of the secret in the same namespace
and keyName is the key within the secret's data that contains the token.
endpoint string Endpoint is the Splunk HEC endpoint URL (maps to --target in weka CLI)
caCertSecretRef string CACertSecretRef optionally references a secret containing a user-provided CA certificate PEM file.
Format: "secretName.keyName" where secretName is the name of the secret in the same namespace
and keyName is the key within the secret's data that contains the certificate.
Maps to --ca-cert in weka CLI. Empty string is treated same as nil (de-configures if was configured).
Mutually exclusive with VerifyWithClusterCACert.
allowUnverifiedCertificate boolean AllowUnverifiedCertificate allows accessing without verifying the target certificate.
Maps to --allow-unverified-certificate in weka CLI.
verifyWithClusterCACert boolean VerifyWithClusterCACert uses the Weka cluster's internal CA certificate to verify.
Maps to --verify-with-cluster-cacert in weka CLI.
Mutually exclusive with CACertSecretRef.

TracesConfiguration

kubectl explain wekacluster.spec.tracesConfiguration

TraceConfiguration defines the configuration for the traces, accepts parameters in gigabytes

Appears in: - WekaClientSpec - WekaClusterSpec - WekaContainerSpec

Field Description Default Validation
maxCapacityPerIoNode integer 10
ensureFreeSpace integer 20
dumperConfigMode DumperConfigMode auto Enum: [override partial-override auto cluster]
DumperConfigMode

Underlying type: string

Appears in: - TracesConfiguration

Field Description
auto
override
partial-override
cluster

WekaClusterSpecOverrides

kubectl explain wekacluster.spec.overrides

Appears in: - WekaClusterSpec

Field Description Default Validation
allowS3ClusterDestroy boolean When true, permits cluster deletion even when an active S3 cluster exists. Destructive — will erase all S3 data.
allowSmbwClusterDestroy boolean When true, permits the operator to destroy the SMB-W cluster it manages once SMB-W is torn down (no SMB-W containers desired). Destructive — will erase all SMB share configuration.
allowNfsInterfaceGroupDestroy boolean When true, permits the operator to remove the NFS interface group it manages once NFS is torn down. Destructive — also drops the interface group's floating IP ranges.
disregardRedundancy boolean disregard redundancy constraints, useful for testing, should not be used in production as misaligns failure domains
driversBuildId string can be used to specify a build_id for a driver in the distributor service, keep empty for auto detection default
driversLoaderImage string image to be used for loading drivers, do not use unless explicitly instructed by Weka team
forceAio boolean force weka to use drives in aio mode and not direct nvme (impacts performance, but might serve as a fallback in case of incompatible device)
postFormClusterScript string script to run post cluster create (i.e before starting io)
upgradeForceReplace boolean unsafe operation, skips graceful stop of weka container for a quick replacement to a new image, should not be used unless instructed explicitly by weka personnel
upgradeForceReplaceDrives boolean unsafe operation, skips graceful stop of drive weka container for a quick replacement to a new image, should not be used unless instructed explicitly by weka personnel
upgradeAllAtOnce boolean unsafe operation, should not be used unless instructed explicitly by weka personnel
upgradePaused boolean Pause upgrade
upgradePausePreCompute boolean Prevent from moving into compute phase
podTerminationDeactivationTimeout Duration Timeout duration for deactivating pods that are terminating longer than this duration.
When nil (default), the default timeout of 5 minutes is used.
When set to 0, deactivation of terminating pods is disabled.
Otherwise, the specified duration is used.
Pattern: ^(0\|([0-9]+(\.[0-9]+)?(ns\|us\|µs\|ms\|s\|m\|h))+)$
Type: string
Optional: {}
paused boolean Pause the cluster - all containers will be stopped forcefully.
nil (not set): no propagation, allows direct container-level state manipulation.
true: pause all containers.
false: actively unpause containers that are in paused state.
cancelDeletion boolean Cancel deletion of the cluster if it is in graceful destroy period, a disaster recovery mechanism
dpdkBaseMemoryMb DpdkBaseMemoryMbOverride
machineIdentifierNodeRef string used to override machine identifier node reference for backend containers (drive, compute, etc.)
waitSinceIoProcessesUpTimeout Duration how long to wait, once IO processes are reported up, before considering the container's applied
image settled. nil/0 (default): don't wait.
Pattern: ^(0\|([0-9]+(\.[0-9]+)?(ns\|us\|µs\|ms\|s\|m\|h))+)$
Type: string
Optional: {}
DpdkBaseMemoryMbOverride
kubectl explain wekacluster.spec.overrides.dpdkBaseMemoryMb

DpdkBaseMemoryMbOverride specifies DPDK base memory overrides (in MiB) per container mode. Used for hugepages calculation and resources.json configuration. Default value is 64 MiB per core. Only positive values are applied; zero or unset means use default.

Appears in: - WekaClusterSpecOverrides

Field Description Default Validation
drive integer
compute integer
s3 integer
nfs integer
smbw integer
dataServices integer

WekaClusterTemplate

kubectl explain wekacluster.spec.dynamicTemplate

Appears in: - WekaClusterSpec

Field Description Default Validation
computeContainers integer Number of compute containers per cluster node. Minimum: 0
driveContainers integer Number of drive containers per cluster node. Minimum: 0
s3Containers integer Number of S3 gateway containers per cluster node. Minimum: 0
computeCores integer Number of cores allocated to each compute container. Minimum: 0
driveCores integer Number of cores allocated to each drive container. Minimum: 0
s3Cores integer Number of cores allocated to each S3 gateway container. Minimum: 0
numDrives integer Number of virtual or physical drives per drive container. Mutually exclusive with containerCapacity. Minimum: 0
computeExtraCores integer Minimum: 0
driveExtraCores integer Minimum: 0
s3ExtraCores integer Additional non-DPDK cores for S3 gateway containers, used for background tasks. Minimum: 0
driveHugepages integer Hugepage allocation in MiB for drive containers. 0 means auto-calculated. Minimum: 0
driveHugepagesOffset integer Offset in MiB applied to the auto-calculated hugepage allocation for drive containers. Minimum: 0
computeHugepages integer Hugepage allocation in MiB for compute containers. 0 means auto-calculated. Minimum: 0
computeHugepagesOffset integer Offset in MiB applied to the auto-calculated hugepage allocation for compute containers. Minimum: 0
s3FrontendHugepages integer Hugepage allocation in MiB for S3 gateway frontend threads. Minimum: 0
s3FrontendHugepagesOffset integer Offset in MiB applied to the auto-calculated hugepage allocation for S3 frontend threads. Minimum: 0
envoyCores integer Number of cores allocated to the Envoy proxy process used by the S3 gateway. Minimum: 0
nfsContainers integer Number of NFS protocol containers per cluster node. Minimum: 0
nfsCores integer Number of cores allocated to each NFS container. Minimum: 0
nfsExtraCores integer Additional non-DPDK cores for NFS containers. Minimum: 0
nfsFrontendHugepages integer Hugepage allocation in MiB for NFS frontend threads. Minimum: 0
nfsFrontendHugepagesOffset integer Offset in MiB for NFS frontend hugepage allocation. Minimum: 0
smbwContainers integer number of SMB-W containers (3-8) Minimum: 0
smbwCores integer number of SMB-W cores per container Minimum: 0
smbwExtraCores integer number of SMB-W extra cores per container Minimum: 0
smbwFrontendHugepages integer hugepage allocation for SMB-W frontend Minimum: 0
smbwFrontendHugepagesOffset integer hugepage offset for SMB-W frontend Minimum: 0
driveCapacity integer DriveCapacity is the capacity in GiB to allocate per single virtual drive.
NumDrives multiplied by DriveCapacity gives the total capacity requested by each drive container.
This value determines how much capacity each container receives from shared drives.
Minimum: 0
containerCapacity integer ContainerCapacity specifies the total capacity (in GiB) requested by each container when using shared drives via SSD proxy.
This value takes precedence over DriveCapacity when both are set. It allows more flexible capacity allocation.
Minimum: 0
clusterCapacity string ClusterCapacity is a human-friendly target USABLE capacity for the whole cluster.
Alternative to ContainerCapacity: instead of sizing each container, the operator
translates this target into failure domains built from whole containers and grows
toward it (capacity only ever increases). Mutually exclusive with ContainerCapacity,
NumDrives and DriveCapacity.
Unit handling: the suffix determines whether decimal (base-1000) or binary (base-1024)
interpretation is used.
- Binary (IEC): "GiB"/"Gi", "TiB"/"Ti", "MiB"/"Mi", etc. e.g. "8000GiB" = 8000 GiB
- Decimal (SI): "GB", "TB", "MB", etc. e.g. "8000GB" ≈ 7450 GiB
- Bare unit (no "B"): "8000g", "300t" — treated as binary for backward compatibility
driveTypesRatio DriveTypesRatio DriveTypesRatio specifies the desired ratio of drive types (TLC vs QLC) when allocating drives for the cluster.
dataServicesContainers integer Minimum: 0
dataServicesCores integer Minimum: 0
dataServicesExtraCores integer
dataServicesHugepages integer Minimum: 0
dataServicesHugepagesOffset integer Minimum: 0
dataServicesFeCores integer Minimum: 0
DriveTypesRatio
kubectl explain wekacluster.spec.dynamicTemplate.driveTypesRatio

Appears in: - WekaClusterTemplate - WekaContainerSpec

Field Description Default Validation
tlc integer 0 Minimum: 0
qlc integer 0 Minimum: 0

WekaHomeConfig

kubectl explain wekacluster.spec.wekaHome

Appears in: - WekaClusterSpec

Field Description Default Validation
endpoint string URL of the WekaHome telemetry endpoint. Defaults to the Weka-managed cloud endpoint if empty.
allowInsecure boolean When true, disables TLS certificate verification for the WekaHome endpoint.
cacertSecret string Name of a Kubernetes secret containing a PEM CA certificate for the WekaHome TLS connection.
enableStats boolean When true, performance statistics are sent to WekaHome in addition to connectivity and event data. Defaults to true.

WekaClusterStatus

kubectl explain wekacluster.status

WekaClusterStatus defines the observed state of WekaCluster

Appears in: - WekaCluster

Field Description Default Validation
status WekaClusterStatusEnum
conditions Condition array
clusterID string
traceId string
spanId string
lastAppliedImage string
lastAppliedSpec string
lastAppliedPodConfigHash string
ports ClusterPorts
stats ClusterMetrics
printer ClusterPrinterColumns
timestamps object (keys:string, values:Time)

ClusterMetrics

Appears in: - WekaClusterStatus

Field Description Default Validation
containers ContainersMetrics
ioStats IoStats
drives DriveMetrics
alertsCount IntMetric
clusterStatus StringMetric
capacity CapacityMetrics
numFailures object (keys:string, values:FloatMetric)
lastUpdate Time
filesystem FilesystemMetrics
CapacityMetrics

Appears in: - ClusterMetrics

Field Description Default Validation
totalBytes IntMetric
unprovisionedBytes IntMetric
unavailableBytes IntMetric
hotSpareBytes IntMetric
IntMetric

Underlying type: integer

Appears in: - CapacityMetrics - ClusterMetrics - EntityStatefulNum - FilesystemMetrics - StatusIops - StatusThroughput - WekaContainerMetrics

ContainersMetrics

Appears in: - ClusterMetrics

Field Description Default Validation
drive ContainerMetrics
compute ContainerMetrics
s3 ContainerMetrics
nfs ContainerMetrics
ContainerMetrics

Appears in: - ContainersMetrics

Field Description Default Validation
numContainers EntityStatefulNum
processes EntityStatefulNum
cpuUtilization FloatMetric
EntityStatefulNum

Appears in: - ClientMetrics - ContainerMetrics - DriveMetrics - WekaContainerMetrics

Field Description Default Validation
active IntMetric
created IntMetric
desired IntMetric
FloatMetric

Underlying type: string

Appears in: - ClusterMetrics - ContainerMetrics - MinMaxAvgPercent - WekaContainerMetrics

DriveMetrics

Appears in: - ClusterMetrics - WekaContainerMetrics

Field Description Default Validation
counters EntityStatefulNum
failures DriveFailures array
DriveFailures

Appears in: - DriveMetrics

Field Description Default Validation
serialId string
wekaDriveId string
FilesystemMetrics

FilesystemMetrics contains metrics about filesystem usage

Appears in: - ClusterMetrics

Field Description Default Validation
totalProvisionedCapacity IntMetric TotalProvisionedCapacity is the sum of total_budget for all filesystems
totalUsedCapacity IntMetric TotalUsedCapacity is the sum of used_total for all filesystems
totalAvailableCapacity IntMetric TotalAvailableCapacity is the difference between TotalProvisionedCapacity and TotalUsedCapacity
totalProvisionedSSDCapacity IntMetric SSD-specific metrics
totalUsedSSDCapacity IntMetric
totalAvailableSSDCapacity IntMetric
hasTieredFilesystems boolean Object Store metrics
totalObsCapacity IntMetric
obsBucketCount IntMetric
activeObsBucketCount IntMetric
IoStats

Appears in: - ClusterMetrics

Field Description Default Validation
throughput StatusThroughput
iops StatusIops
StatusIops

Appears in: - IoStats

Field Description Default Validation
read IntMetric
write IntMetric
metadata IntMetric Refer to Kubernetes API documentation for fields of metadata.
total IntMetric
StatusThroughput

Appears in: - IoStats

Field Description Default Validation
read IntMetric
write IntMetric
StringMetric

Underlying type: string

Appears in: - ClientPrinterColumns - ClusterMetrics - ClusterPrinterColumns - ContainerPrinterColumns

ClusterPrinterColumns

Appears in: - WekaClusterStatus

Field Description Default Validation
computeContainers StringMetric
driveContainers StringMetric
drives StringMetric
throughput StringMetric
iops StringMetric
filesystemCapacity StringMetric Information about filesystem capacity: Available/Used
capacity StringMetric Aggregated raw provisioned drive-sharing capacity per type, e.g. "TLC 100TiB / QLC 200TiB"

WekaClusterStatusEnum

Underlying type: string

Appears in: - WekaClusterStatus

Field Description
Init
Ready
WaitForDrives
StartingIO
Paused
GracePeriod
Destroying
Deallocating