skaffold icon indicating copy to clipboard operation
skaffold copied to clipboard

Cloud Native Buildpacks with arm64

Open michielboekhoff opened this issue 1 year ago • 3 comments

Expected behavior

When running skaffold run / skaffold build, I expect the image to be built for linux/arm64 (when the Kubernetes nodes are running linux/arm64). This should behave, effectively, the same as a pack build which now supports arm64

Actual behavior

The following warning is printed to stdout:

WARN[0000] builder for artifact "app" doesn't support building for target platforms: "linux/arm64". Building for supported platforms "linux/amd64" instead.  subtask=app task=Build

after which the container is built for linux/amd64.

I suspect this is related to this line which enforces amd64 for Buildpacks (which is no longer true).

Information

  • Skaffold version: v2.13.2
  • Operating system: Apple M1 - Sonoma 14.4.1
  • Installed via: Homebrew
  • Contents of skaffold.yaml:
apiVersion: skaffold/v4beta11
kind: Config
metadata:
  name: app
build:
  artifacts:
    - image: app
      buildpacks:
        builder: heroku/builder:24
        buildpacks:
          - docker://docker.io/heroku/buildpack-dotnet:0.1.1
manifests:
  rawYaml:
    - deploy/deployment.yml
    - deploy/service.yml

Steps to reproduce the behavior

skaffold build on an arm64 arch (like an M1 or a linux/arm64 machine)

michielboekhoff avatar Aug 23 '24 22:08 michielboekhoff

I face the same issue with:

  • Skaffold version: 2.13.2
  • Apple M3 - Sonoma 14.3
  • Installed via Homebrew
  • Tried using heroku/builder:24 as well as dashaun/builder-arm:20240403
  • Skaffold yaml:
apiVersion: skaffold/v4beta11
kind: Config
metadata:
  name: app
build:
  platforms: ["linux/arm64"]
  local:
    push: false
  tagPolicy:
    gitCommit: {}
  artifacts:
    - image: backend
      platforms:
        - linux/arm64
      context: backend
      buildpacks:
        builder: dashaun/builder-arm:20240403
        env:
          - BP_JVM_VERSION=21
          - BP_ARCH=arm64
deploy:
  helm:
    releases:
      - name: backend
        chartPath: kubernetes/backend
        valuesFiles:
          - kubernetes/backend/values.yaml
        version: 0.1.0
      - name: database
        chartPath: bitnami/postgresql
        version: 15.5.38
        valuesFiles:
          - kubernetes/postgres/values.yaml

ipolonskij avatar Oct 29 '24 15:10 ipolonskij

I upgraded to macOS 15.1 but face the same error.

ipolonskij avatar Oct 30 '24 16:10 ipolonskij

@ipolonskij - I think it's because CNBs in Skaffold are only supported on x86_64, not on arm yet. I've been tinkering with a patch but it depends on the CNB you use as well. Most don't support arm yet, though the Heroku CNB does.

michielboekhoff avatar Nov 06 '24 08:11 michielboekhoff