How to change architecture / enable ARM support

Currently AMD64 is a default architecture in the operator To enable ARM64 support in operator add following config in kube-arangodb chart:

helm upgrade --install kube-arangodb \
  https://github.com/arangodb/kube-arangodb/releases/download/$VER/kube-arangodb-$VER.tgz \
  --set "operator.architectures={amd64,arm64}"

ARM64 ArangoDeployment

AMD64 is a default architecture in the ArangoDeployment. ARM64 is available since ArangoDB 3.10.0. To create ARM64 ArangoDeployment you need to add arm64 architecture to the deployment:

apiVersion: database.arangodb.com/v1
kind: ArangoDeployment
metadata:
  name: cluster
spec:
  image: arangodb:3.10
  mode: Cluster
  architecture:
    - arm64

Member Architecture change (Enterprise only)

To migrate members from AMD64 to ARM64 you need to add arm64 architecture to the existing deployment as a first item on the list, e.g.

apiVersion: database.arangodb.com/v1
kind: ArangoDeployment
metadata:
  name: cluster
spec:
  image: arangodb:3.10
  mode: Cluster
  architecture:
    - arm64
    - amd64

All new members since now will be created on ARM64 nodes All recreated members since now will be created on ARM64 nodes

To change architecture of a specific member, you need to use following annotation:

kubectl annotate pod {MY_POD} deployment.arangodb.com/arch=arm64

It will add to the member status ArchitectureMismatch condition, e.g.:

  - lastTransitionTime: "2022-09-15T07:38:05Z"
    lastUpdateTime: "2022-09-15T07:38:05Z"
    reason: Member has a different architecture than the deployment
    status: "True"
    type: ArchitectureMismatch

To provide requested arch changes for the member, we need to rotate it, so an additional step is required:

`kubectl annotate pod {MY_POD} deployment.arangodb.com/rotate=true`