Skip to main content
Loading
Version: Operator 3.0.0

YAML Configuration Mapping for Aerospike on Kubernetes

Mapping between YAML and Aerospike configurationโ€‹

Kubernetes uses YAML configuration files and the Aerospike database uses its own format for configuration. The database configurations are stored in aerospike.conf. AKO translates between the two.

Translation conventionsโ€‹

AKO uses the following conventions to translate its YAML configurations to the Aerospike server's aerospike.conf format.

Simple key and valuesโ€‹

Most simple key-value pairs file translate directly, with the exception of storage sizes.

YAMLโ€‹

replication-factor: 2
memory-size: 4294967296

aerospike.confโ€‹

replication-factor 2
memory-size 4G

Storage Sizesโ€‹

Memory, file, and device sizes in the YAML format are integers and need to be specified as number of bytes. In aerospike.conf you may provide an integer byte unit as in YAML or provide a string with G or M to denote gigabytes or megabytes.

YAMLโ€‹

memory-size: 4294967296 # 4 gigabytes

aerospike.confโ€‹

memory-size 4G

Lists of Simple Valuesโ€‹

YAML uses a key's plural form when there are a list of values (and it uses a list type).

Lists of simple values are written in Aerospike by repeating the same configuration key multiple times.

YAMLโ€‹

addresses:
- 192.168.1.1
- 192.168.5.1
files:
- /opt/aerospike/ns1.dat
- /opt/aerospike/ns2.dat

aerospike.confโ€‹

address 192.168.1.1
address 192.168.5.1
file /opt/aerospike/ns1.dat
file /opt/aerospike/ns2.dat

Fixed Sectionsโ€‹

The Aerospike configuration groups parts of the configuration into sections. The YAML forms of these are represented as maps.

YAMLโ€‹

service:
service-threads: 4
proto-fd-max: 15000

aerospike.confโ€‹

service {
service-threads 4
proto-fd-max 15000
}

Named Sectionsโ€‹

Named sections, which can have multiple named entries in aerospike.conf such as namespace, dc, or datacenter, are translated to a named list of maps in YAML.

The name of the list will be the plural form of the aerospike.conf section.

YAMLโ€‹

namespaces:
- name: test
replication-factor: 2
memory-size: 4294967296
storage-engine:
type: device
files:
- /opt/aerospike/data/test1.dat
- /opt/aerospike/data/test2.dat
filesize: 4294967296
data-in-memory: true
- name: bar
replication-factor: 2
memory-size: 4294967296
storage-engine:
type: memory

aerospike.confโ€‹

namespace test {
replication-factor 2
memory-size 4G
storage-engine device {
file /opt/aerospike/data/test1.dat
file /opt/aerospike/data/test2.dat
filesize 4G
data-in-memory true
}
}
namespace bar {
replication-factor 2
memory-size 4G
storage-engine memory
}

Typed Sectionsโ€‹

Typed sections have a fixed enum type associated with them in aerospike.conf such as storage-engine and index-type. These are translated to map with additional property type in YAML. The valid values for the type are the same as the valid enum values for the section.

YAMLโ€‹

namespaces:
- name: test
.
.
storage-engine:
type: device
files:
- /opt/aerospike/data/test1.dat
- /opt/aerospike/data/test2.dat
filesize: 4294967296
data-in-memory: true

aerospike.confโ€‹

namespace test {
.
.
storage-engine device {
file /opt/aerospike/data/test1.dat
file /opt/aerospike/data/test2.dat
filesize 4G
data-in-memory true
}
}

Aerospike logging sectionโ€‹

Aerospike offers three types of log sinks in the YAML logging section: file, console, and syslog (introduced in server 6.3). The log sink type is specified by the name field in the YAML file, which can have the values console, syslog, or the actual file name if the sink type is file. You can define the logging context and log level for the log sink as key: value pairs. For more information, see Aerospike logging documentation.

YAMLโ€‹

logging:
- name: console
any: info
- name: /var/log/aerospike/aerospike.log
any: info
tls: debug
- name: syslog
audit: info
facility: local0
tag: aerospike-audit
path: /dev/log

aerospike.confโ€‹

logging {
console {
context any info
}
file /var/log/aerospike/aerospike.log {
context any info
context tls debug
}
syslog {
context audit info
facility local0
tag aerospike-audit
path /dev/log
}
}

Complete Exampleโ€‹

YAMLโ€‹

service:
proto-fd-max: 15000

security: {}

logging:
- name: console
any: info
- name: /var/log/aerospike/aerospike.log
any: info

xdr:
enable-xdr: true
xdr-digestlog-path: /opt/aerospike/xdr/digestlog 5G
xdr-compression-threshold: 1000
datacenters:
- name: REMOTE_DC_1
dc-node-address-ports:
- 172.68.17.123 3000
dc-security-config-file: /etc/aerospike/secret/security_credentials_DC1.txt

namespaces:
- name: test
enable-xdr: true
xdr-remote-datacenter: REMOTE_DC_1
replication-factor: 2
memory-size: 4294967296
storage-engine:
type: device
files:
- /opt/aerospike/data/test.dat
filesize: 4294967296
data-in-memory: true # Store data in memory in addition to file.

mod-lua:
user-path: /opt/aerospike/usr/udf/lua

aerospike.confโ€‹


service { # Tuning parameters and process owner
proto-fd-max 15000
}

security { # (Optional, Enterprise Edition only) to enable
# ACL on the cluster
enable-security true
}

logging { # Logging configuration
console {
context any info
}
file /var/log/aerospike/aerospike.log {
context any info
}
}

xdr {
enable-xdr true # Globally enable/disable XDR on local node.
xdr-digestlog-path /opt/aerospike/digestlog 5G # Track digests to be shipped.
xdr-compression-threshold 1000
datacenter REMOTE_DC_1 {
dc-node-address-port 172.68.17.123 3000
dc-security-config-file /etc/aerospike/secret/security_credentials_DC1.txt
}
}

namespace test { # Define namespace record policies and storage engine
enable-xdr true
xdr-remote-datacenter REMOTE_DC_1
replication-factor 2
memory-size 4G
storage-engine device {
file /opt/aerospike/data/test.dat
filesize 4G
data-in-memory true # Store data in memory in addition to file.
}
}

mod-lua { # location of UDF modules
user-path /opt/aerospike/usr/udf/lua
}