CentOS ARM Analysis
Desgin docs for CentOS ARM processor development
4 minute read
Some of these date back to older versions but efforts are made to keep the most important - sometimes :)
Affected version: 1.1.x
This document outlines an aproach to add (partial) ARM support to LambdaStack. The requirements:
applications
role)The 2 high level approaches that have been opted so far:
Have 2 big disadvanges from the start:
repository
role as we need to maintain download-requirements.sh
for each OS and architecture then.That is why I opt for an approach where we don't add any architecture flag or new additional OS. The architecture we can handle on the code level and on the OS level only the requirements.txt
might be different for each as indicated by initial research here.
In the repository role we need to change the download of the requirements to support additional architectures as download requirements might be different as:
Hence we should make a requirements.txt for each architecture we want to support, for example:
The download-requirements.sh
script should be able to figure out which one to select based on the output of:
uname -i
In the download role, which is used to download plain files from the repository, we should add support for filename patterns and automatically look for current architecture (optionally with regex based suffix like linux[_-]amd64\.(tar\.gz|tar|zip)
):
For example select between:
x86_64
.tar.gzarm64
.tar.gzbased on ansible_architecture
fact.
Note that this should be optional as some filenames do not contain architecture like Java based packages for example.
As per current requirements not every LambdaStack component is required to support ARM and there might be cases that a component/role can't support ARM as indicated by initial research here.
Thats why every component/role should be marked which architecture it supports. Maybe something in <rolename>/defaults/main.yml
like:
supported_architectures:
- all ?
- x86_64
- arm64
We can assume the role/component will support everything if all
is defined or if supported_architectures
is not present.
The preflight
should be expanded to check if all the components/roles we want to install from the inventory actually support the architecture we want to use. We should be able to do this with the definition from the above point. This way we will make sure people can only install components on ARM which we actually support.
Currently we use Skopeo to download the image requirements. Skopeo however has the following issues with newer versions:
That is why we should replace it with Crane.
./skopeo --insecure-policy copy docker://kubernetesui/dashboard:v2.3.1 docker-archive:skopeodashboard:v2.3.1
./crane pull --insecure kubernetesui/dashboard:v2.3.1 dashboard.tar
The above will produce the same Docker image package.
Desgin docs for CentOS ARM processor development
Desgin docs for RedHat ARM processor development
Desgin docs for Ubuntu ARM processor development
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.