# Upgrade the Aerospike Database version on a Kubernetes cluster

This page describes how to upgrade Aerospike Database Enterprise Edition on your Aerospike Kubernetes Operator (AKO) deployment.

## Overview

AKO performs a rolling upgrade of the Aerospike cluster by default. Because one node is upgraded at a time, there is zero downtime. A new node is created with the same pod configuration as the node that you upgraded.

::: note
See [Special upgrades and downgrades](https://aerospike.com/docs/database/advanced/special-upgrades) for information relevant to specific versions.
:::

For the following example, the cluster is deployed using a file named `aerospike-cluster.yaml`.

## Upgrade Aerospike cluster

1.  To upgrade the Aerospike cluster, change the `spec.image` field in the `AerospikeCluster` CR to the name of your Aerospike Database Docker image.
    
    ```yaml
    apiVersion: asdb.aerospike.com/v1
    
    kind: AerospikeCluster
    
    metadata:
    
      name: aerocluster
    
      namespace: aerospike
    
    spec:
    
      size: 2
    
      image: aerospike/aerospike-server-enterprise:8.0.0.2
    ```
    
2.  Use `kubectl` to apply the change.
    
    Terminal window
    
    ```sh
    kubectl apply -f aerospike-cluster.yaml
    ```
    
    The pods undergo a rolling restart.
    
3.  Use `kubectl` to watch the progress:
    
    Terminal window
    
    ```bash
    kubectl get pods -n aerospike
    ```
    
    kubectl output:
    
    Terminal window
    
    ```bash
    NAME          READY   STATUS              RESTARTS   AGE
    
    aerocluster-0-0     1/1     Running         0          3m6s
    
    aerocluster-0-1     1/1     Running         0          3m6s
    
    aerocluster-0-2     1/1     Running         0          30s
    
    aerocluster-0-3     1/1     Terminating     0          30s
    ```
    
4.  Use kubectl to get the status of the cluster. Check `image` for all Pods.
    
    Terminal window
    
    ```bash
    kubectl -n aerospike describe aerospikecluster aerocluster
    ```
    
    kubectl output:
    
    Terminal window
    
    ```bash
    Name:         aerocluster
    
     Namespace:    aerospike
    
     Kind:         AerospikeCluster
    
     Status:
    
       Pods:
    
         aerocluster-0-0:
    
           Aerospike:
    
             Access Endpoints:
    
               10.128.15.225:31312
    
             Alternate Access Endpoints:
    
               34.70.193.192:31312
    
             Cluster Name:  aerocluster
    
             Node ID:       0a0
    
             Tls Access Endpoints:
    
             Tls Alternate Access Endpoints:
    
             Tls Name:
    
           Host External IP:  34.70.193.192
    
           Host Internal IP:  10.128.15.225
    
           Image:             aerospike/aerospike-server-enterprise:8.0.0.2
    
           Initialized Volume Paths:
    
             /opt/aerospike
    
           Pod IP:        10.0.4.6
    
           Pod Port:      3000
    
           Service Port:  31312
    ```