Multi Architecture

this part is evolving quickly during development of version 2 so it may be slightly inaccurate.

Since version 2, Camel K is publishing an ARM64 architecture beside the default AMD64 architecture. You can build your particular architecture from source as well, following the guidelines in Local development.

Install Camel K ARM64 operator

From version 2.3 onward, the ARM64 architecture is published beside the AMD64 in a Docker manifest. Your platform should be able to pick up the platform target architecture accordingly using the usual installation procedure.

The logs should indicate the architecture at the start of the operator pod:

{"level":"info","ts":"2023-12-19T16:40:31Z","logger":"camel-k.cmd","msg":"Go Version: go1.21.0"}
{"level":"info","ts":"2023-12-19T16:40:31Z","logger":"camel-k.cmd","msg":"Go OS/Arch: linux/arm64"}
{"level":"info","ts":"2023-12-19T16:40:31Z","logger":"camel-k.cmd","msg":"Camel K Operator Version: 2.1.0"}

Example

Once you’ve installed the operator you will need to specify the platform target you whish to use. This is required as each of the different publishing tasks may need to know how to create a manifest accordingly. You can use builder.platforms trait option to control this behavior.

you can set the property at IntegrationPlatform level to have it for all Integrations.

Send the groovy file to kamel operator to build, publish and run it

kamel run hello.groovy -t builder.platforms=linux/arm64 -t builder.platforms=linux/amd64

You should observe base image in the logs of the operator pod:

...
{"level":"info","ts":"2023-12-19T17:10:05Z","logger":"camel-k","msg":"spectrum - 2023/12/19 17:10:05 Pulling base image eclipse-temurin:17@sha256:bbc153da9e6041c65f0d4cdc7ef03eec174c9a74c8852c838582b579081c99c1 (insecure=false)..."}
...
you may need to start a new platform image from scratch disabling incremental image in order to avoid using a base image which was built against a different set of platforms.