Updates
When you installed the Rocket Pad Platform you will have the newest version already. But to keep it up to date we recommend following our updates newsletter to always stay up to date on when new features, patches and security fixes are available.
Install Tools
We use Jsonnet to build our platform. In order to get the platform code updated you will need to install Jsonnet. The easiest way to install Jsonnet is to use GO. For this to work Go needs to be installed.
Install GO
Download and install Go from the official page.
Install Go Jsonnet
Use the go-jsonnet installer to install Jsonnet ll
go install github.com/google/go-jsonnet/cmd/jsonnet@latest
# Run the following command if you also need the Jsonnet linter
go install github.com/google/go-jsonnet/cmd/jsonnet-lint@latest
Update Rocket Pad Platform
Now that all tools are installed we can update the platform code dependencies. In order to do so, navigate into your Rocket Pad Platform cluster bootstrap repository and from there into the /deps
folder and open the /deps/jsonnetfile.json
.
jsonnetfile.json
This file defines the dependencies of our Rocket Pad Platform code. All dependencies are defined with a source. In that source you will find a "version" element. You can add the newest available version tag in there to update to a fixed version. alternatively add HEAD to follow our main branches and get the newest versions whenever you update the dependencies.
Update dependencies
Now use the update command for Jsonnet to install the newest dependencies:
cd /deps
jb update # Use this to update all dependencies
jb update https://gitlab.com/rocketpadplatforms/platform/base.git # Use an url to only update a specific dependency
Rollout updates
To apply the changes you can now commit and push your the updated /deps
folder to you main/master branch. Now wait for Argo CD to detect and sync the changes. If you don't want to wait so long you can go into the Argo CD UI and refresh the bootstrap application.
Bare Metal and Talos based Infrastructure updates
If your system is build on bare-metal infrastructure or other providers that use Talos OS as VM images for bootstrapping you should also update Talos whenever there are new updates available.
Install and configure Talosctl
In order to update talos on a running cluster in a rolling fashion without downtime you need to have talosctl installed and the clusters talosconfig file ready.
curl -sL https://talos.dev/install | sh
export TALOSCONFIG="/PATH/TO/talosconfig"
talosctl config info
Update Talos with talosctl
The Talos OS on a node can be updated with the talosctl tool installed earlier. If you are using custom images (Which you probably do even if you don't know it now!), the image can be build with the Talos Image Factory to include all the needed system extensions.
Now you can use talosctl to update the talos nodes to the desired version with:
talosctl upgrade \
--nodes 10.20.30.40 \
-- image factory.talos.dev/installer/376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4b:v1.7.5 \
-- wait
In the above upgrade command the list of node ips needs to be changed to your cluster node ip addresses and the image to your desired image with the new image version tag. The --wait
flag will keep this command running and log the upgrade process until it is done.
It is recommended to upgrade one node at a time to prevent any issues while upgrading and allow the cluster to stay operational while updating trough rescheduling pods if possible as well as save in cluster state.
Update Talos with IaC Terraform
If you are using our IaC examples for bootstrapping a Talos based Rocket Pad Platform the used talos image is either defined in the .tfvars
file and overwritten, or within the terraform files itself. To update the talos os change the version tag of the installation image url to the newest version:
talos_install_image = d4cf8602b9d285ede53209d5e8c482372d61d3b9aa850736c2dc65bd8d091cba:v1.7.5
Afterwards run terraform again to rollout the version change and upgrade the talos nodes
Troubleshoot
The talosctl upgrade
command can be run with the --wait --debug
flags to see logs and debug what is going wrong if an update should fail on one or more nodes.