Skip to content

Add flag to bypass cluster architecture checks on deploy #4168

@zachariahmiller

Description

@zachariahmiller

Is your feature request related to a problem? Please describe.

There are numerous cases where folks need to test and deploy an amd64-only package via emulation on an arm64 cluster. This has been observed multiple times with environments we support, where engineers need to be able to debug packages for applications they directly dont control that are x86 only on arm64 hardware.

For development, it would be useful to bypass the cluster architecture check, but currently this isn’t possible with the normal zarf deploy flow.

I have a WIP implementation here

It was brought to my attention it might make more sense to scope that down to just the arch checks. So the flag bypasses just "checkClusterArchitecture": true, from:

deployChecks := map[string]bool{
    "checkClusterArchitecture": true,
    "checkStateErrors": true,
    "checkCertExpiry": true,
}

Given that feedback, the details below assume that to be the preferred option.

Describe the behavior you'd like

  • Given: An arm64 cluster and an amd64-only package.
  • When: A user deploys the package with a flag to bypass architecture validation.
  • Then: Zarf should allow the deployment to continue, with the understanding that emulation issues may occur.

This could be implemented as a boolean flag (e.g., --ignore-cluster-arch-check) that specifically skips the checkClusterArchitecture validation during deployment.

Describe alternatives you've considered

  • Implementing this under zarf dev, but this workflow is not common and has significant limitations compared to zarf deploy.
  • Running an entire amd64 VM for local development, but this is unacceptably slow due to qemu overhead.
  • Manually modifying checks in the source, but this is not user-friendly.

Additional context

  • This feature would primarily benefit delivery teams testing packages from other contractors or vendors.
  • In production, these packages would run on amd64 clusters, but developers working locally (e.g., on macOS with Rosetta and Lima/Colima/Docker Desktop) need to emulate amd64 images in their arm64 clusters.
  • In practice, running amd64 images in arm64 clusters works well enough for development purposes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions