Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARM build and dependencies #766

Closed
nrooney opened this issue Nov 23, 2021 · 16 comments
Closed

ARM build and dependencies #766

nrooney opened this issue Nov 23, 2021 · 16 comments
Assignees
Labels
enhancement Request for enhancement other than new feature

Comments

@nrooney
Copy link

nrooney commented Nov 23, 2021

A team I've been working with has reported that the ARM build is broken, as the dependancies were not building. They rewrote the docker file to get around the issue. Apologies for lack of insight here as I haven't used the tool myself; I'll get some more info tomorrow and report back in this issue.

@rakyll
Copy link
Contributor

rakyll commented Nov 23, 2021

Related to #536.

@sethAmazon
Copy link
Member

I do not think we support arm64 docker images. @alolita

@paya-cz
Copy link

paya-cz commented Dec 19, 2021

There is no arm64 support yet.

Compare:
https://hub.docker.com/r/amazon/aws-otel-collector/tags
With:
https://hub.docker.com/r/amazon/aws-xray-daemon/tags

Disappointing.

@alolita
Copy link
Contributor

alolita commented Dec 19, 2021

Hi @paya-cz @nrooney we'll take a look at adding support for arm64 docker images for ADOT. Can you share what your pipeline is - this may be useful for our testing. Thx.

@alolita alolita added the enhancement Request for enhancement other than new feature label Dec 19, 2021
@paya-cz
Copy link

paya-cz commented Dec 19, 2021

@alolita Thank you, being able to use ADOT with Graviton2 would certainly be nice.

Please elaborate what you mean by "pipeline".

@alolita
Copy link
Contributor

alolita commented Dec 19, 2021

Hi @paya-cz could you specify the pipeline you plan to use these arm64 images for?

i.e. specify your setup - data source(s) --> receiver (otlp or prometheus) --> exporter (otlp or custom) --> monitoring backend

@paya-cz
Copy link

paya-cz commented Dec 19, 2021

@alolita I fear my pipeline is rather uninspiring.

I just follow this, to get traces from nodejs ECS container to show up in AWS XRay:
https://aws-otel.github.io/docs/getting-started/js-sdk/trace-manual-instr

@alolita
Copy link
Contributor

alolita commented Jan 7, 2022

Thanks @paya-cz we'll take a look at adding this support.

@sethAmazon
Copy link
Member

sethAmazon commented Jan 7, 2022

Write up arm64 docker images

Goal

  • Be able to build both adm64 and arm64 docker images

How

  • Use buildx ability to build multi-platform docker images
  • Split out into 3 buildx commands
    • Why?
      • You can only load 1 platform image outside of a registry
    • 1 amd64 in make file
    • 1 arm64 in make file
    • 1 build and push both amd64 and arm64 to ecr in ci
      • This command will be run in the ci and require a load
  • If statement in dockerfile to decide to build amd64 image or arm64 image based on platform input
  • Make sure we are using a buildx by default supported version of docker
    • Some earlier versions require buildx to be create and not available by default
  • Delete s3 bucket with tar images
  • Only use ecr for images

Breaking down into steps

Support buildx (keep backwards compatibility in ci)
Remove loading and taring of images in ci (to s3) and convert to only using ecr (use github actions instead of docker commands directly)

Step 2 requires https://github.com/aws-observability/aws-otel-collector/pull/860/files to be merged

How to test
*create a eks cluster with x86 nodes. Create a job that runs all the eks tests on this new cluster.

@Aneurysm9
Copy link
Member

Should we look at using goreleaser, similar to what the upstream release repo is doing? That seems to be building artifacts for multiple architectures, though not arm64 container images.

@anuraaga
Copy link
Contributor

anuraaga commented Jan 8, 2022

The key point is to make sure the qemu arm64 builder is not actually compiling any code - all archs should be built on the GitHub runner first and the Dockerfile references the built artifacts (I believe part of that was already done before). If you accidentally build in qemu itself it will be incredibly slow without benefit.

goreleaser is a good tool for generating those binaries. For the dockerfile x-ray daemon might be a useful reference

https://github.com/aws/aws-xray-daemon/blob/master/Dockerfile#L13
https://github.com/aws/aws-xray-daemon/blob/master/Tool/src/build-in-docker.sh#L9

Also just to make sure it's clear since there's mention of buildx and docker versions, we should just be able to build with the official build-and-push GitHub action with minimal steps.

@sethAmazon
Copy link
Member

sethAmazon commented Jan 10, 2022

Breaking down into steps

  1. Support buildx (keep backwards compatibility in ci)
  2. Remove loading and taring of images in ci (to s3) and convert to only using ecr (use github actions instead of docker commands directly)

@sethAmazon
Copy link
Member

sethAmazon commented Jan 10, 2022

sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 10, 2022
@alolita
Copy link
Contributor

alolita commented Jan 10, 2022

@sethAmazon let's address how we plan to verify these images once built.

@sethAmazon
Copy link
Member

Added to write up comment

sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 10, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 10, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 10, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 11, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 11, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 11, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 11, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 11, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 11, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 12, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 12, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 12, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 12, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 12, 2022
sethAmazon added a commit to sethAmazon/aws-otel-collector that referenced this issue Jan 12, 2022
@jefchien
Copy link
Member

jefchien commented Feb 1, 2022

We've just released v0.16.0. The new Docker images released to DockerHub and ECR include an ARM64 image.

@jefchien jefchien closed this as completed Feb 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Request for enhancement other than new feature
Projects
None yet
Development

No branches or pull requests

8 participants