# XDR for Aerospike on Kubernetes

To deploy a cluster as a cross-datacenter replication (XDR) source, configure [`auth-password-file`](https://aerospike.com/docs/database/reference/config#xdr__auth-password-file), [`auth-user`](https://aerospike.com/docs/database/reference/config#xdr__auth-user), [`auth-mode`](https://aerospike.com/docs/database/reference/config#xdr__auth-mode) and [`node-address-port`](https://aerospike.com/docs/database/reference/config#xdr__node-address-port) in the `aerospikeConfig.xdr.dcs` section of the CR file. After updating these configurations in the CR file, apply the CR file to deploy the cluster.

For more information, see [the documentation on cross-datacenter replication (XDR)](https://aerospike.com/docs/database/learn/architecture/xdr).

::: note
If a change to an XDR-related parameter requires mounting a new volume, AKO performs a cold restart.
:::

## Enable XDR and create a remote datacenter (DC)

This example is the XDR-specific configuration section for the Aerospike cluster CR file.

```yaml
storage:

  filesystemVolumePolicy:

    cascadeDelete: true

    initMethod: deleteFiles

  volumes:

    - name: workdir

      aerospike:

        path: /opt/aerospike

      source:

        persistentVolume:

          storageClass: ssd

          volumeMode: Filesystem

          size: 1Gi

    - name: ns

      aerospike:

        path: /opt/aerospike/data

      source:

        persistentVolume:

          storageClass: ssd

          volumeMode: Filesystem

          size: 3Gi

    - name: aerospike-config-secret

      source:

        secret:

          secretName: aerospike-secret

      aerospike:

        path: /etc/aerospike/secret

  aerospikeConfig:

    service:

      feature-key-file: /etc/aerospike/secret/features.conf

    security: {}

    network:

      service:

        port: 3000

      fabric:

        port: 3001

      heartbeat:

        port: 3002

    xdr:

      dcs:

        - name: dc1

          node-address-ports:

            - DESTINATION_CLUSTER_AEROSPIKE_NODE_IP PORT     # Remote DC seed node IP, port, TLS name if configured

          auth-user: admin

          auth-password-file: /etc/aerospike/secret/password_DC1.txt     # Remote DC password file

          auth-mode: internal

          namespaces:

            - name: test

    namespaces:

      - name: test

        replication-factor: 2

        storage-engine:

          type: memory

          files:

            - /opt/aerospike/data/test.dat

          filesize: 2000000000
```

For the full CR file, see the [example XDR CR](https://github.com/aerospike/aerospike-kubernetes-operator/blob/v4.1.2/config/samples/xdr_src_cluster_cr.yaml).

This and other example CRs are available in [the main Aerospike Kubernetes Operator repository](https://github.com/aerospike/aerospike-kubernetes-operator/tree/v4.1.2/config/samples).

## Remote DC password file

If the destination cluster has security enabled, then `aerospike-secret` created in this section should also have a `password_DC1.txt` file containing the password for the destination DC.

password\_DC1.txt

```txt
passwordForDC1
```

## Server versions

Aerospike Database instances in different destination clusters can run different versions of the database. For example, if you have clusters running Database 6.0, you can add a new cluster with the [latest version](https://aerospike.com/products/database/) and preserve XDR functionality.