grafana / k6-operator

An operator for running distributed k6 tests.
Apache License 2.0
587 stars 165 forks source link

Support for linux/arm64/v8 devices such as (m1 mac) #187

Closed anuragjanghala closed 4 months ago

anuragjanghala commented 1 year ago

Feature Description

Hey, please provide support for the arm64 devices, as after the recent changes, the new image with latest tag doesn't support m1 or m2 chips as it was doing in the previous release.

Suggested Solution (optional)

No response

Already existing or connected issues / PRs (optional)

No response

yorugac commented 1 year ago

Hi @anuragjanghala, I assume you were the one opening the forum question here, right?

There's actually a bit of misunderstanding: the operator has NOT supported arm64 at all, in any version. So the issue you encountered has a different cause. The v0.0.9rc2 build has broken Docker manifests, due to an issue in underlying CI dependency. So the problem you encountered with v0.0.9rc2 is not related to ARM architecture. Please try to pull these images:

docker pull ghcr.io/grafana/operator:controller-v0.0.9rc2-buildx-fix
docker pull ghcr.io/grafana/operator:latest

These should have fixed manifests.

OTOH, I find it quite curious that previous versions of the operator have worked for you and other ARM users (since nobody had expressed an issue with it before). This implies that ARM-based devices that people use can actually run existing images out-of-the-box. You can check what image you've de facto pulled by running this command:

docker inspect ghcr.io/grafana/operator:latest | grep -A1 'Architecture'

I suspect that you'll see Linux amd64 in output, and your Docker setup must be doing some hidden magic with architectures. I'd appreciate feedback about that :slightly_smiling_face: It'd be good to understand better what exactly happens on ARM devices.

pasi-romo-idealo commented 1 year ago

I have a related issue i.e. I tried to install the operator from the bundle: https://raw.githubusercontent.com/grafana/k6-operator/main/bundle.yaml

but it fails to start on an arm64-node with following error: k6-operator-controller-manager-5ddf587fdb-zk24j kube-rbac-proxy k6-operator-controller-manager-5ddf587fdb-zk24j manager [k6-operator-controller-manager-5ddf587fdb-zk24j manager] exec /manager: exec format error

The image, which is being used is this one: ghcr.io/grafana/k6-operator:controller-v0.0.11rc2

If I pin the workload to run on an amd64-node it works without issues.

yorugac commented 1 year ago

@pasi-romo-idealo, thanks for feedback! Can you clarify which arm64-node? I.e. is it a cloud cluster, etc.

pasi-romo-idealo commented 1 year ago

Hi, yes we use AWS EC2-instances (Graviton) with arm-architecture.

lorenzogirardi commented 1 year ago

Ciao

Hope this help ... i had the same issue on oke cluster based on arm

so, i've downloaded the repository and changed a couple of stuff on the dockerfiles

docker buildx build --platform linux/arm64 . -t ... Dockerfile.controller with this change on the Dockerfile

# Build
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GO111MODULE=on go build -a -o manager main.go

docker buildx build --platform linux/arm64 . -t Dockerfile.runner

docker buildx build --platform linux/arm64 . -t Dockerfile.starter with this change on Dockerfile FROM curlimages/curl:8.4.0

all the images are presente here lgirardi/k6-operator-arm:0.0.11a lgirardi/k6-runner-arm:0.0.11a lgirardi/k6-starter-arm:0.0.11a

the bundle.yaml is using the operator

image: lgirardi/k6-operator-arm:0.0.11a
  name: manager
  ...     

the K6 is the following

kind: K6
metadata:
  name: k6-www-k8s-it
  namespace: k6-jobs
spec:
  parallelism: 2
  script:
    configMap:
      name: cfm-test-k8s-it
      file: test-k8s-it.js
  arguments: --out cloud
  runner:
    image: lgirardi/k6-runner-arm:0.0.11a
  starter:
    image: lgirardi/k6-starter-arm:0.0.11a

so after that everything is working as expected


k6-jobs              k6-www-k8s-it-2-gz9sl                                        0/1     Completed   0             12m
k6-jobs              k6-www-k8s-it-initializer-n4k2g                              0/1     Completed   0             12m
k6-jobs              k6-www-k8s-it-starter-5bvf6                                  0/1     Completed   0             12m
k6-operator-system   k6-operator-controller-manager-7cfd6c7777-pbbrv              2/2     Running     0             47m```
pasi-romo-idealo commented 1 year ago

Grazie mille :blush:

For now I have been using just the amd64-based image since our clusters supports also such nodes. I will definitely give this a go, since because of this other issue:

https://github.com/grafana/k6-operator/issues/171

I anyway need to create a custom image for me for now.

For this specific issue the optimal solution would of course be if the official images were already built as multi-arch i.e. we would not need to build our own images.

yorugac commented 1 year ago

@lorenzogirardi please feel free to open PR with the addition of ARM! :smile:

I agree that multi-arch images would be great if they work. AFAIK, k6 has added ARM only very recently (probably this PR) and there were some issues the team had to face & solve there.

DanielCastronovo commented 10 months ago

Hello, any news ?

kahirokunn commented 8 months ago

I love arm64

yorugac commented 7 months ago

With the help of @audacioustux, we have a first attempt at ARM merged :tada:

The ARM image has been built and is available under tag controller-arm-test: https://github.com/grafana/k6-operator/pkgs/container/k6-operator/198006404?tag=controller-arm-test Similarly with runner-arm-test and starter-arm-test tags.

Please try it out on your ARM setups! If there are any issues, we should resolve them ASAP. (I'll wait a bit for feedback before closing this issue.)

pasi-romo-idealo commented 6 months ago

I tried the controller-image and got it running succesfully on an ARM64-node :tada: Due to this other open issue (https://github.com/grafana/k6-operator/issues/171) I was not able to test the whole functionality.

Israphel commented 4 months ago

is this going to be available on dockerhub?

yorugac commented 4 months ago

Closing this issue now as as no trouble was reported :slightly_smiling_face:

@Israphel, currently it's available as latest in ghcr.io/grafana/k6-operator. No, Docker Hub is not planned at this point of time. ARM will be part of v0.0.15 release: coming up soon, hopefully.