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 need to reference this as apache/camel-k:<version>-arm64. You can build your particular architecture from source, following the guidelines in Local development.

Install Camel K ARM64 operator

The default configured base image defaults to the AMD64 architecture manifest, it does not automatically look for the AMR64 architecture manifest reference. To ensure your integrations work correctly, you must specifically reference the ARM64 architecture as your base image.

Proceed with installation of Camel K inside kubernetes cluster with the below command:

kamel install --operator-image apache/camel-k:<version>-arm64 --base-image <base-image-arm64> --registry ...

Example

On Camel K 2.1.0, the default base image is : eclipse-temurin:17.

Look through the manifest to find the digest of a valid image containing "architecture": "arm64":

docker manifest inspect eclipse-temurin:17

Proceed with installation of Camel K inside kubernetes cluster with the valid image reference:

kamel install --operator-image apache/camel-k:2.1.0-arm64 --base-image eclipse-temurin:17@sha256:bbc153da9e6041c65f0d4cdc7ef03eec174c9a74c8852c838582b579081c99c1 --registry ...

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"}

Test an integration

Build and run an integration

hello.groovy
from('timer:tick?period=3000')
  .setBody().constant('Hello world from Camel K')
  .to('log:info')

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

kamel run hello.groovy

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)..."}
...