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

Envoy Proxy Docker Image for v1.23.0 is broken for arm64 #14487

Closed
mmeier86 opened this issue Sep 3, 2022 · 4 comments
Closed

Envoy Proxy Docker Image for v1.23.0 is broken for arm64 #14487

mmeier86 opened this issue Sep 3, 2022 · 4 comments

Comments

@mmeier86
Copy link

mmeier86 commented Sep 3, 2022

Overview of the Issue

I'm using Consul Connect with Nomad. One of my Nomad nodes is a Raspberry Pi 4, meaning it is an arm64 machine. Today, I started getting the following error when Nomad tries to start an envoy proxy for Nomad jobs running on the Pi 4 node:

/docker-entrypoint.sh: 29: exec: su-exec: Exec format error

That same error can be reproduced on the Pi itself by executing docker run envoyproxy/envoy:v1.23.0.
The problem is already known on the Envoy side in envoyproxy/envoy#22261.

I have already confirmed that the 1.23.1 image works again.

I am creating the issue here instead of in the Nomad repository because as far as I understand, by default Nomad asks Consul which image version should be used if the user hasn't configured one themself.

Reproduction Steps

Try to launch a Nomad job using consul connect on an arm64 node, using envoy version 1.23.0.

Consul info for both Client and Server

Both Consul Server and Client are v1.13.1.

Operating system and Environment details

The client is a Raspberry Pi 4 with arm64 architecture.

Log Fragments

See description above.

@ViViDboarder
Copy link

Because I encountered this, my workaround was to explicitly set a working version in my Nomad client config as described here: https://learn.hashicorp.com/tutorials/nomad/consul-service-mesh#alternative-architectures

The proper fix would probably be for Consul to either remove 1.23.0 or replace it with 1.23.1.

@david-yu
Copy link
Contributor

david-yu commented Sep 7, 2022

Hi @ViViDboarder and @mmeier86 we are aware that those container images are not working on arm64 since the image tags actually reference x86 images. I would recommend to upgrade to 1.23.1 and we're looking to update their on the docs on our side.

@blake
Copy link
Member

blake commented Sep 14, 2022

@ViViDboarder PR #14573 updates Consul to return Envoy 1.23.1 in the supported proxy version list. Once this PR is merge and available in a release, it should resolve the issue you're experiencing.

In the mean time, as David suggested, a workaround is to configure Nomad to use the newer Envoy image version by either specifying the version in the job spec, or in the Nomad client's metadata.

# Override in Nomad job spec
job "<job name>" {

  group "<group>" {
    network {
      mode = "bridge"
    }

    service {
      ...
      connect {
        sidecar_service {}

        sidecar_task {
          config {
            image = "envoyproxy/envoy:1.23.1"
          }
        }
      }
    }
  }
}
# Override in Nomad client config
client {
  meta = {
    "connect.sidecar_image" = "envoyproxy/envoy:v1.23.1"
}

@mmeier86
Copy link
Author

I've just upgraded my cluster to Consul v1.13.2 and can confirm that Envoy for aarch64 hosts now chooses a working image again.

Closing this ticket. Thanks for the release and PR!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants