Upgrade a Buckit Deployment
Buckit uses an update-then-restart methodology for upgrading a deployment to a newer release:
Update the Buckit binary with the newer release.
Restart the deployment using
bm admin service restart.
This procedure does not require taking downtime and is non-disruptive to ongoing operations.
This page documents methods for upgrading using the update-then-restart method for both systemctl and user-managed Buckit deployments.
Deployments using Ansible, Terraform, or other management tools can use the procedures here as guidance for implementation within the existing automation framework.
Prerequisites
Back Up Cluster Settings First
Use the bm admin cluster bucket export and bm admin cluster iam export commands to take a snapshot of the bucket metadata and IAM configurations prior to starting decommissioning.
You can use these snapshots to restore bucket and IAM settings to recover from user or process errors as necessary.
Test Upgrades Before Applying To Production
You should always validate any Buckit upgrades in a lower environment (Dev/QA/Staging) before applying those upgrades to Production deployments, or any other environment containing critical data.
Considerations
Upgrades Are Non-Disruptive
Buckit’s upgrade-then-restart procedure does not require taking downtime or scheduling a maintenance period. Buckit restarts are fast, such that restarting all server processes in parallel typically completes in a few seconds. Buckit operations are atomic and strictly consistent, such that applications using Buckit or S3 SDKs can rely on the built-in transparent retry without further client-side logic. This ensures upgrades are non-disruptive to ongoing operations.
Update systemctl-Managed Buckit Deployments
Choose one of the following options to upgrade a Buckit deployment where the buckit server process is managed by systemctl, such as those created using the Buckit DEB/RPM packages.
Option 1 (Recommended): Using Buckit Manager Web UI (bm web)
Install Buckit Manager if needed. See Install the Buckit Manager.
Open
bm web.If the cluster is not already registered in Buckit Manager, select Import existing cluster. Once the import is complete, click open the target cluster.
Click Cluster Actions dropdown menu, select Upgrade Buckit systemd service…, and follow the instructions on the page.
Option 2: Upgrade using CLI
Use the CLI procedure below if you prefer to perform the upgrade directly from the shell.
Update the Buckit Binary on Each Node
The following tabs provide examples of updating Buckit onto 64-bit Linux operating systems using RPM, DEB, or binary:
Use the following commands to download, verify, and install the Buckit RPM for your Linux host.
curl -fsSL https://buckit-io.github.io/buckit/install-linux.sh | sh sudo dnf install ./buckit.rpm
Use the following commands to download, verify, and install the Buckit DEB for your Linux host.
curl -fsSL https://buckit-io.github.io/buckit/install-linux.sh | sh sudo apt install ./buckit.deb
Run
buckit --versionon each node to validate that you successfully upgraded all binaries to the same version. Do not proceed unless all nodes use the same Buckit binary version.Restart the Deployment
Run the
bm admin service restartcommand to restart allbuckit serverprocesses in the deployment simultaneously.bm admin service restart ALIAS
Replace alias of the Buckit deployment to restart.
S3-compatible SDKs and applications should retry operations automatically, such that the restart process is typically non-disruptive to ongoing operations.
Validate the Upgrade
Use the
bm admin infocommand to check that all Buckit servers are online, operational, and reflect the installed Buckit version.Update Buckit Client
You should upgrade your
bmbinary to match or closely follow the Buckit server release. You can use thebm updatecommand to update the binary to the latest stable release:bm update
Update Non-System Managed Buckit Deployments
Choose one of the following options to upgrade a Buckit deployment where the buckit server process is managed outside of the system (systemd, systemctl), such as by a user, an automated script, or some other process management tool.
This procedure only works for systems where the user running the Buckit process has write permissions for the path to the Buckit binary.
For deployments managed using systemctl, see Update systemctl-Managed Buckit Deployments.
Option 1 (Recommended): Using Buckit Manager Web UI (bm web)
Install Buckit Manager if needed. See Install the Buckit Manager.
Open
bm web.If the cluster is not already registered in Buckit Manager, select Import existing cluster. Once the import is complete, click open the target cluster.
Click Cluster Actions dropdown menu, select Upgrade cluster via Admin API, and follow the instructions on the page.
Option 2: Update using CLI
The bm admin update command updates all Buckit server binaries in the target Buckit deployment before restarting all nodes simultaneously.
The restart process typically completes within a few seconds and is non-disruptive to ongoing operations.
The following command updates a Buckit deployment with the specified alias to the latest stable release:
bm admin update ALIAS
The user running the bm admin update command must have write permissions to the location where the binary installs.
You can specify a URL resolving to a specific Buckit server binary version. Airgapped or internet-isolated deployments may utilize this feature for updating from an internally-accessible server:
bm admin update ALIAS https://buckit-mirror.example.com/minio.sha256sum
You should upgrade your bm binary to match or closely follow the Buckit server release.
You can use the bm update command to update the binary to the latest stable release:
bm update
Option 3: Update by manually replacing the binary
You can download and manually replace the minio server binary on each of the host nodes in the deployment.
You must then restart all nodes simultaneously, such as by using bm admin service restart.
For example, the following command downloads the latest stable Buckit binary for Linux and copies it to /usr/local/bin.
The command overwrites the existing minio binary at that path.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x ./minio
sudo mv -f ./minio /usr/local/bin/minio
Once you have replaced the binary on all Buckit hosts in the deployment, you must restart all nodes simultaneously.
You should upgrade your bm binary to match or closely follow the Buckit server release.
You can use the bm update command to update the binary to the latest stable release:
bm update