# Upgrading to Release 2024.05.01

Instructions for upgrading to release 2024.05.01 from 2024.04.01

The instructions assume that you have a terminal located in the _installation directory_. This is the directory you ran the installer from. It should contain a `config.yaml` file

## 1. Add your IP address to the EKS cluster

In our standard installation, the control plane of the EKS cluster is on the public internet with a security group that only allows traffic from specific IP addresses. By default we automatically add the IP address of Saturn Cloud management servers, as well as the NAT gateways for your VPC to this list. During the update process - the IP address of your local machine must also be on this list so that you can communicate with the cluster.

Grab your IP address with a command like

```fallback
$ curl ifconfig.me
```

Add this IP address to `public_cluster_allow_list`:

```fallback
public_cluster_allow_list:
- 1.2.3.4
```

Now, add this IP address to the EKS cluster. Navigate to the EKS cluster in the AWS console and click on _Networking_.

Click on _Manage Networking_.

Add your IP address to the list with a `/32` to make it a cidr block.

## 2. Get credentials for the Saturn Cloud installation role.

The IAM Role is located in the `config.yaml` under the field `role_arn`. Usually this is something like `arn:aws:iam::123456789:role/saturn/customer-admin`. Grab the external id from `config.yaml` under the field `external_id`.

Execute the following to retrieve credentials for the role.

```fallback
aws sts assume-role --role-arn ${your-role-arn} --role-session-name debug --external-id ${your-external-id} --duration-seconds 3600 --query Credentials
```

This command will return something like this:

```fallback
{
    "AccessKeyId": "your-access-key",
    "SecretAccessKey": "your-secret",
    "SessionToken": "your-token",
    "Expiration": "2022-06-23T15:17:55Z"
}
```

Create a file in the same directory as `config.yaml` named `installer-vars` where we will store these temporary AWS credentials.

```fallback
AWS_DEFAULT_REGION=${your-region}
AWS_ACCESS_KEY_ID=${your-access-key}
AWS_SECRET_ACCESS_KEY=${your-secret}
AWS_SESSION_TOKEN=${your-token}
```

## 3. Setup the installer shell

Set the following environment variables. You will need to use the values from the previous step.

```fallback
export INSTALLER_IMAGE=public.ecr.aws/saturncloud/saturn-aws:2024.05.01-20
export DATA_DIR=`pwd`
```

Now we will start a bash shell inside the installer container.

```fallback
docker run --rm -it -v ${DATA_DIR}:/sdata --env-file installer-vars ${INSTALLER_IMAGE} bash
```

**The rest of the install commands must take place inside this shell.**

### 3a. Backup all EBS volumes

```fallback
 python saturn_aws/scripts/main.py snapshots take
```

Wait 5 minutes for snapshots to complete.

```fallback
 python saturn_aws/scripts/main.py snapshots validate
```

### 3b. Run the upgrade

Run these commands:

```fallback
python saturn_aws/scripts/main.py migrate-config /sdata
python saturn_aws/scripts/main.py update-infra /sdata
python saturn_aws/scripts/main.py migrate /sdata
python saturn_aws/scripts/main.py update-k8s /sdata
```
