diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index fe1b7ef027cdeab1859e4449e3e6c34c93b718ac..a4586cdca290809bf1175e5c3280f90fa6e592e1 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -135,6 +135,7 @@ jobs:
         with:
           context: .
           push: true
-          tags: rancher/system-upgrade-controller:${{ github.event.release.tag_name }}
+          tags: rancher/system-upgrade-controller:${{ env.TAG }}
           file: package/Dockerfile
+          target: controller
           platforms: linux/amd64, linux/arm64
diff --git a/package/Dockerfile b/package/Dockerfile
index a4ab45a37f5c2d29cf54e21dc7ef00b60d638ab6..80f00710524706172ae2e39497763d16f0408879 100644
--- a/package/Dockerfile
+++ b/package/Dockerfile
@@ -6,12 +6,12 @@ ENV GOBIN=/bin
 RUN go install github.com/onsi/ginkgo/v2/ginkgo@v2.20.0
 
 FROM ${BCI} AS e2e-tests
-ARG ARCH
+ARG TARGETARCH
 ARG REPO=rancher
 ARG TAG
 ENV SYSTEM_UPGRADE_CONTROLLER_IMAGE=${REPO}/system-upgrade-controller:${TAG}
 COPY --from=e2e-ginkgo /bin/ginkgo /bin/ginkgo
-COPY dist/artifacts/system-upgrade-controller.test-${ARCH} /bin/system-upgrade-controller.test
+COPY dist/artifacts/system-upgrade-controller.test-${TARGETARCH} /bin/system-upgrade-controller.test
 COPY e2e/plugin/run.sh /run.sh
 RUN set -x \
     && chmod +x /run.sh
@@ -20,7 +20,7 @@ RUN set -x \
 ENTRYPOINT ["/run.sh"]
 
 FROM scratch AS controller
-ARG ARCH
-COPY dist/artifacts/system-upgrade-controller-${ARCH} /bin/system-upgrade-controller
+ARG TARGETARCH
+COPY dist/artifacts/system-upgrade-controller-${TARGETARCH} /bin/system-upgrade-controller
 USER 65534:65534
 ENTRYPOINT ["/bin/system-upgrade-controller"]
diff --git a/scripts/package-controller b/scripts/package-controller
index 7536cff6ac27ccdd37210ca59f60e303e0cc26ab..42ce638dab8fe306859a26fd04b01a13b2ffc44f 100755
--- a/scripts/package-controller
+++ b/scripts/package-controller
@@ -5,12 +5,8 @@ source $(dirname $0)/version
 
 cd $(dirname $0)/..
 
-if [ "$ARCH" != "arm" ]; then
-    export DOCKER_BUILDKIT=1
-fi
-
-docker build \
-  --build-arg ARCH=${ARCH} \
+docker buildx build \
+  --build-arg TARGETARCH=${ARCH} \
   --build-arg REPO=${REPO} \
   --build-arg TAG=${TAG} \
   --build-arg VERSION=${VERSION} \
diff --git a/scripts/package-e2e-tests b/scripts/package-e2e-tests
index 6d1f2e09c73632e7d23512d32e2b14c527af4bd7..2dc3142ca7933b545f2bba2128720a4c4a0d9ea4 100755
--- a/scripts/package-e2e-tests
+++ b/scripts/package-e2e-tests
@@ -5,12 +5,8 @@ source $(dirname $0)/version
 
 cd $(dirname $0)/..
 
-if [ "$ARCH" != "arm" ]; then
-    export DOCKER_BUILDKIT=1
-fi
-
-docker build \
-  --build-arg ARCH=${ARCH} \
+docker buildx build \
+  --build-arg TARGETARCH=${ARCH} \
   --build-arg REPO=${REPO} \
   --build-arg TAG=${TAG} \
   --build-arg VERSION=${VERSION} \