Harness delegate on ARM

Hi,

I’m looking to trial out harness on a Kubernetes cluster running on ARM64 nodes, I’ve tried to deploy the example generated configuration, however it doesn’t look like the latest image for delegate is built for ARM.

Is there a build of harness/delegate that supports ARM, or is this something you plan on supporting? Should be fairly straight-forward with docker buildx.

Thanks,
Alex

Alex,

Welcome to the Community! Potentially, you can bundle the Delegate yourself though not sure how many folks have done this before so give it a whirl :slight_smile:

Downloading the Shell Delegate, you can see the JAR file that is being downloaded
which is the Delegate Itself.

In the start.sh and delegate.sh, can see the download location.

JVM_URL=https://app.harness.io/public/shared/jre/....

Though can see what is passed in an exposed in the shell scripts e.g account secrets, etc.

Cheers,

-Ravi

Hi Ravi,

Thanks for getting back to me, I reverse engineered the docker image and bundled in a new ARM build of openjdk, which gets delegate starting.

Although I’ve hit an issue when delegate.configuration.InstallUtils install dependencies, the binaries downloaded are amd64 builds. Are the URL’s for these artifact downloads configureable?

2021-03-05 19:29:25,337 [1.0.67009] 928 [system-3] INFO  io.harness.delegate.configuration.InstallUtils - Installing kubectl
2021-03-05 19:29:25,341 [1.0.67009] 928 [system-3] INFO  io.harness.delegate.configuration.InstallUtils - download Url is https://app.harness.io/public/shared/tools/kubectl/release/v1.13.2/bin/linux/amd64/kubectl
21-03-05 19:29:36,999 [1.0.67009] 928 [system-3] ERROR io.harness.delegate.configuration.InstallUtils - kubectl install failed
2021-03-05 19:29:37,000 [1.0.67009] 928 [system-3] ERROR io.harness.delegate.configuration.InstallUtils -   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 37.4M  100 37.4M    0     0  5391k      0  0:00:07  0:00:07 --:--:-- 5453k
/bin/bash: line 2: ./kubectl: cannot execute binary file: Exec format error

For anyone else wanting to try, I’ve pushed my arm64 build to public.ecr.aws/alexlast/harness-delegate:latest

Since we are not providing the binaries for the client tools in arm64 you would need to build your custom docker image to already have the arm64 binaries in client-tools, under the same path we expect. Then we would see they are already there and not overwrite them.

1 Like

This is what we expect under client-tools:

.
|-- chartmuseum
|   `-- v0.8.2
|       `-- chartmuseum
|-- go-template
|   `-- v0.4
|       `-- go-template
|-- harness-pywinrm
|   `-- v0.3-dev
|       `-- harness-pywinrm
|-- helm
|   |-- v2.13.1
|   |   `-- helm
|   `-- v3.1.2
|       `-- helm
|-- kubectl
|   `-- v1.13.2
|       `-- kubectl
|-- kustomize
|   `-- v3.5.4
|       `-- kustomize
|-- oc
|   `-- v4.2.16
|       `-- oc
`-- tf-config-inspect
    `-- v1.0
        `-- linux
            `-- amd64
                `-- terraform-config-inspect
1 Like