# Upgrade Guide: SMCP 5.11 to SMCP 5.12

## Prerequisites

Before beginning the upgrade process, ensure the following requirements are met:

1. [Minimum Requirements](https://github.com/platform9/pcd-docs-gitbook/blob/main/PEC/requirements/README.md)
2. Minimum Kubernetes version for Workload Cluster should be `v1.28.`

## Upgrade Procedure

### 1. Backup Current System (optional)

Follow the [Backup Guide](https://github.com/platform9/pcd-docs-gitbook/blob/main/PEC/backup-guide/README.md) to back up the 5.11 management plane. Before proceeding, verify that the backup was created successfully.

2. Download and Install New Artifacts.

To obtain and install the SMCP 5.12 artifacts:

**a.** Download the download script:

{% tabs %}
{% tab title="None" %}

```none
wget https://raw.githubusercontent.com/platform9/support-locker/master/edge-stack/download.sh
```

{% endtab %}
{% endtabs %}

**b.** Make the script executable:

{% tabs %}
{% tab title="None" %}

```none
chmod u+x download.sh
```

{% endtab %}
{% endtabs %}

**c.** Run the download script:

{% tabs %}
{% tab title="None" %}

```none
./download.sh <PF9-SHARED-SECRET> v-5.12.1-<airctl_version>
```

{% endtab %}
{% endtabs %}

Replace `<PF9-SHARED-SECRET>` with your Platform9 shared secret.

**d.** After downloading the artifacts, verify their integrity using the following command:

{% tabs %}
{% tab title="Bash" %}

```bash
curl --user-agent <secret> https://pf9-airctl.s3-accelerate.amazonaws.com/<version>/md5sum.txt | md5sum -c -
```

{% endtab %}
{% endtabs %}

Replace `<secret>` with the same one used to download the airctl build from S3 and `<version>` with the SMCP version you're installing (e.g., v5.12.0).

**e.** Run the install.sh script to extract and place the artifacts under `/opt/pf9/airctl` directory.

{% tabs %}
{% tab title="Bash" %}

```bash
bash install.sh v-5.12.1-<airctl-version>
```

{% endtab %}
{% endtabs %}

Refer to the [SMCP 5.12 release notes ](https://platform9.com/docs/5.12/PEC/smcp-5-12-release-notes)for the exact `airctl` version used by the `install.sh` script.

For example, when upgrading to SMCP v5.12.0 :

{% tabs %}
{% tab title="example" %}

```bash
bash install.sh v-5.12.1-3802903
```

{% endtab %}
{% endtabs %}

### 3. Configure New Management Cluster

Update configuration files before deployment:

1. Edit `airctl-config.yaml`:
   1. Update `hostAgentRepo` to use SMCP 5.12 images.
   2. `dockerRepo` to use SMCP 5.12 images.
2. Edit `nodelet-bootstrap.yaml`:
   1. Update `systemImages` to use SMCP 5.12 image files
   2. Set `userImages` to point to SMCP 5.11 image files
   3. Add `isAirgapped: true` for offline installations

Example `airctl-config.yaml` and `nodelet-bootstrap.yaml` snippet:

{% tabs %}
{% tab title="airctl-config.yaml" %}

```yaml
hostAgentRepo: /opt/pf9/airctl/hostagent-8-v-5.12.1-3802903.tar.gz
dockerRepo: /opt/pf9/airctl/docker-8-v-5.12.1-3802903.tar.gz
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="nodelet-bootstrap.yaml" %}

```yaml
isAirgapped: true
systemImages:
- /opt/pf9/airctl/imgs/kubedu-imgs-v-5.12.1-3802903.tar.gz
- /opt/pf9/airctl/imgs/nodelet-imgs-v-5.12.1-3802903.tar.gz
userImages:
- /opt/pf9/airctl/imgs/kubedu-imgs-v-5.11.1-3501826.tar.gz
```

{% endtab %}
{% endtabs %}

### 4. Upgrade Management Cluster

Starting from the 5.12 release, in-place upgrades are supported. Use the `upgrade-mgmt` command to perform an in-place upgrade of the management cluster.

{% tabs %}
{% tab title="Bash" %}

```bash
airctl advanced-ddu upgrade-mgmt --verbose
```

{% endtab %}
{% endtabs %}

### 5. Verify DU Status

Check that the DU is in a ready state:

{% tabs %}
{% tab title="Bash" %}

```bash
airctl status
# This command displays the current status of the DU
```

{% endtab %}
{% endtabs %}

Wait until all components show as ready before proceeding.

### 6. Upgrade DU Components

To upgrade the DU components to`5.12`, follow the [upgrade guide](https://github.com/platform9/pcd-docs-gitbook/blob/main/PEC/Upgrade-guide/README.md).

After upgrade, verify DU status again:

{% tabs %}
{% tab title="Bash" %}

```bash
airctl status
{% endtab %}
{% tab language="none" %}
// Click to edit code
```

{% endtab %}
{% endtabs %}

### 7. Verify Upgrade in GUI

Log in to the management UI and confirm the version is displayed as 5.12.

### 8. Push New Kubernetes Images

Push images for Kubernetes **1.29**, **1.30**, and **1.31** to the registry (if applicable):

{% tabs %}
{% tab title="Bash" %}

```bash
sudo airctl advanced-du push-images --img-tar [tar file name]
```

{% endtab %}
{% endtabs %}

To push all new images at once:

{% tabs %}
{% tab title="Bash" %}

```bash
ls -1 /opt/pf9/airctl/imgs/k8s* | xargs -I{} sh -c "sudo /opt/pf9/airctl/airctl --config /opt/pf9/airctl/conf/airctl-config.yaml advanced-du push-images --img-tar {}"
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**NOTE**

If the **privateRegistryType** value is **custom,** the images must be manually pushed to the custom registry.
{% endhint %}

### 9. Upgrade Host Components

Upgrade the host-side components:

{% hint style="info" %}
**NOTE**

If the upgrade is performed on Ubuntu, execute the following commands in reverse order: first, run `airctl upgrade-hosts`, followed by `airctl configure-hosts`.

Refer to the [known issues](https://platform9.com/docs/5.12/PEC/smcp-5-12-release-notes#known-issues) for more information.
{% endhint %}

{% tabs %}
{% tab title="Bash" %}

```bash
airctl configure-hosts --reset-pf9-managed-docker-conf --skip-docker-install --skip-docker-img-import --verbose
# This command configures hosts with new settings

airctl hosts-status
# Check the status of hosts before proceeding

airctl upgrade-hosts --verbose
# This command upgrades the host components
```

{% endtab %}
{% endtabs %}

### 10. Verify Status and Version

After upgrading, verify management plane services are ready. At this point all the components have been upgraded to SMCP 5.12. Run the following command to verify.

{% tabs %}
{% tab title="Bash" %}

```bash
airctl status
# Check the status of management plane

airctl version
# The output should be: v-5.12.1-3802903

kubectl get nodes -o wide
# Ensure all the nodes are in Ready state
```

{% endtab %}
{% endtabs %}

Now, proceed with the actual workload cluster upgrades either using the [GUI](https://github.com/platform9/pcd-docs-gitbook/blob/main/kubernetes/upgrade-cluster/README.md) or [API](https://platform9.com/docs/qbert#postupgrade-a-cluster-identified-by-the-uuid).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.platform9.com/self-managed-cloud-platform/5.12/sso-configuration/upgrade-smcp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
