# Aerospike Kubernetes Operator limitations and restrictions

The following limitations and restrictions apply to any cluster managed by AKO.

## Limitations

-   Any strong consistency (SC) namespaces that exist on any given rack must also exist on all other racks. In other words, if a rack `R1` has SC namespaces `N1` and `N2`, all other racks must also have SC namespaces `N1` and `N2`. This requirement affects only namespace names, so internal configurations can be different between identically-named namespaces on different racks.

### When updating a cluster

The following restrictions apply to an already-deployed cluster:

-   Persistent storage volumes cannot be added, removed, or updated in-place. You can adjust `storage.Volumes` and namespace storage using the [options described here](https://aerospike.com/docs/kubernetes/4.3.x/manage/configure/scaling#aerospike-namespace-storage-scaling).
-   `replication-factor` and `strong-consistency` parameters cannot be changed in the `aerospikeConfig.Namespaces` configuration.
-   The `aerospikeAccessControl` field cannot be removed from the CR once set. When disabling security, remove `security: {}` from `aerospikeConfig` but keep `aerospikeAccessControl` in place. See [Disable security](https://aerospike.com/docs/kubernetes/4.3.x/manage/security/access-control#disable-security) for details.
-   Namespace storage devices cannot be resized or added in-place. Use the [Rack Revision](https://aerospike.com/docs/kubernetes/4.3.x/manage/configure/scaling#storage-scaling-using-rack-revision) approach instead, which performs a gradual pod-by-pod migration.
-   Block device re-usage requires two update operations: one to remove the block device from a namespace, and a second to add the block device to a different namespace.
-   `MultiPodPerHost` cannot be updated.

## Restricted configuration parameters

Several of the following parameters either cannot be changed at any time, or cannot be updated after the cluster has been deployed.

### Cannot be set

These values cannot be given in the `aerospikeConfig` section of the YAML configuration file. These are fixed or determined at runtime.

-   namespaces\[<index>\].rack-id
-   service.node-id
-   service.cluster-name
-   network.service.access-address
-   network.service.alternate-access-address
-   network.service.tls-access-address
-   network.service.tls-alternate-access-address
-   network.heartbeat.mode

### Cannot be updated

The following values cannot be changed after the first deployment of a cluster:

-   network.service.port
-   network.service.access-port
-   network.service.alternate-access-port
-   network.service.tls-port
-   network.service.tls-access-port
-   network.service.tls-alternate-access-port
-   network.heartbeat.port
-   network.heartbeat.tls-port
-   network.fabric.port
-   network.fabric.tls-port

## Other limitations

-   Aerospike Database Community Edition is not supported. AKO only supports Aerospike Database Enterprise and Federal editions.
-   Multi-site clustering is not supported. Aerospike clusters cannot be deployed across multiple Kubernetes clusters.
-   In-memory only namespaces cannot be configured with strong consistency on a Kubernetes deployment.
-   Batch scale-down is not supported for strong consistency clusters.
-   IPv6 is not supported.