diff --git a/Makefile b/Makefile index bdfe4c99474..d86dee86e40 100644 --- a/Makefile +++ b/Makefile @@ -270,10 +270,11 @@ qemu-user-static: ## Set up the host to run qemu multiplatform container builds. container-buildah: # util target to build container images using buildah. do not invoke directly. buildah bud \ + --build-arg VERSION=$(TAG) $(EXTRA_BUILD_ARGS) \ --jobs 16 \ --platform $(PLATFORM) \ + --target $(TARGET) \ -f $(DOCKERFILE) \ - --build-arg VERSION=$(TAG) $(EXTRA_BUILD_ARGS) \ -t $(IMAGE_REGISTRY)/$(IMAGE):$(TAG) \ . buildah push $(IMAGE_REGISTRY)/$(IMAGE):$(TAG) @@ -282,19 +283,21 @@ container-docker: # util target to build container images using docker buildx. d docker buildx create --use --platform $(PLATFORM) docker buildx build \ $(BUILDX_ACTION) \ + --build-arg VERSION=$(TAG) $(EXTRA_BUILD_ARGS) \ --platform $(PLATFORM) \ + --target $(TARGET) \ -f $(DOCKERFILE) \ - --build-arg VERSION=$(TAG) $(EXTRA_BUILD_ARGS) \ -t $(IMAGE_REGISTRY)/$(IMAGE):$(TAG) \ . container: # util target to build container images. do not invoke directly. $(MAKE) container-$(CONTAINER_BUILDER) \ + ARCH=$(ARCH) \ + OS=$(OS) \ + OS_VERSION=$(OS_VERSION) \ PLATFORM=$(PLATFORM) \ TAG=$(TAG) \ - OS=$(OS) \ - ARCH=$(ARCH) \ - OS_VERSION=$(OS_VERSION) + TARGET=$(TARGET) container-push: # util target to publish container image. do not invoke directly. $(CONTAINER_BUILDER) push \ @@ -342,11 +345,12 @@ azure-ipam-image-name-and-tag: # util target to print the azure-ipam image name azure-ipam-image: ## build azure-ipam container image. $(MAKE) container \ - DOCKERFILE=azure-ipam/$(OS).Dockerfile \ + DOCKERFILE=azure-ipam/Dockerfile \ IMAGE=$(AZURE_IPAM_IMAGE) \ EXTRA_BUILD_ARGS='--build-arg OS=$(OS) --build-arg ARCH=$(ARCH) --build-arg OS_VERSION=$(OS_VERSION)' \ PLATFORM=$(PLATFORM) \ TAG=$(AZURE_IPAM_PLATFORM_TAG) \ + TARGET=$(OS) \ OS=$(OS) \ ARCH=$(ARCH) \ OS_VERSION=$(OS_VERSION) @@ -372,11 +376,12 @@ cni-image-name-and-tag: # util target to print the cni image name and tag. cni-image: ## build cni container image. $(MAKE) container \ - DOCKERFILE=cni/$(OS).Dockerfile \ + DOCKERFILE=cni/Dockerfile \ IMAGE=$(CNI_IMAGE) \ EXTRA_BUILD_ARGS='--build-arg OS=$(OS) --build-arg ARCH=$(ARCH) --build-arg OS_VERSION=$(OS_VERSION)' \ PLATFORM=$(PLATFORM) \ TAG=$(CNI_PLATFORM_TAG) \ + TARGET=$(OS) \ OS=$(OS) \ ARCH=$(ARCH) \ OS_VERSION=$(OS_VERSION) @@ -428,11 +433,12 @@ cns-image-name-and-tag: # util target to print the CNS image name and tag. cns-image: ## build cns container image. $(MAKE) container \ - DOCKERFILE=cns/$(OS).Dockerfile \ + DOCKERFILE=cns/Dockerfile \ IMAGE=$(CNS_IMAGE) \ EXTRA_BUILD_ARGS='--build-arg CNS_AI_PATH=$(CNS_AI_PATH) --build-arg CNS_AI_ID=$(CNS_AI_ID) --build-arg OS_VERSION=$(OS_VERSION)' \ PLATFORM=$(PLATFORM) \ TAG=$(CNS_PLATFORM_TAG) \ + TARGET=$(OS) \ OS=$(OS) \ ARCH=$(ARCH) \ OS_VERSION=$(OS_VERSION) @@ -461,7 +467,8 @@ npm-image: ## build the npm container image. IMAGE=$(NPM_IMAGE) \ EXTRA_BUILD_ARGS='--build-arg NPM_AI_PATH=$(NPM_AI_PATH) --build-arg NPM_AI_ID=$(NPM_AI_ID) --build-arg OS_VERSION=$(OS_VERSION)' \ PLATFORM=$(PLATFORM) \ - TAG=$(NPM_PLATFORM_TAG)\ + TAG=$(NPM_PLATFORM_TAG) \ + TARGET=$(OS) \ OS=$(OS) \ ARCH=$(ARCH) \ OS_VERSION=$(OS_VERSION) @@ -531,8 +538,6 @@ manifest-build: # util target to compose multiarch container manifests from plat )\ )\ - - manifest-push: # util target to push multiarch container manifest. $(CONTAINER_BUILDER) manifest push --all $(IMAGE_REGISTRY)/$(IMAGE):$(TAG) docker://$(IMAGE_REGISTRY)/$(IMAGE):$(TAG) diff --git a/azure-ipam/windows.Dockerfile b/azure-ipam/Dockerfile similarity index 89% rename from azure-ipam/windows.Dockerfile rename to azure-ipam/Dockerfile index 7e3ffbb439b..09794c3ca38 100644 --- a/azure-ipam/windows.Dockerfile +++ b/azure-ipam/Dockerfile @@ -1,7 +1,7 @@ ARG ARCH ARG DROPGZ_VERSION=v0.0.12 -ARG OS ARG OS_VERSION +ARG OS FROM --platform=linux/${ARCH} mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS azure-ipam ARG OS @@ -27,6 +27,10 @@ WORKDIR /go/pkg/mod/github.com/azure/azure-container-networking/dropgz\@$DROPGZ_ COPY --from=compressor /payload/* pkg/embed/fs/ RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/dropgz -trimpath -ldflags "-X github.com/Azure/azure-container-networking/dropgz/internal/buildinfo.Version="$VERSION"" -gcflags="-dwarflocationlists=true" main.go -FROM mcr.microsoft.com/windows/nanoserver:${OS_VERSION} +FROM scratch as linux COPY --from=dropgz /go/bin/dropgz dropgz ENTRYPOINT [ "/dropgz" ] + +FROM mcr.microsoft.com/windows/nanoserver:${OS_VERSION} as windows +COPY --from=dropgz /go/bin/dropgz dropgz.exe +ENTRYPOINT [ "/dropgz.exe" ] diff --git a/azure-ipam/linux.Dockerfile b/azure-ipam/linux.Dockerfile deleted file mode 100644 index aa9ddcc052e..00000000000 --- a/azure-ipam/linux.Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -ARG ARCH -ARG DROPGZ_VERSION=v0.0.12 -ARG OS_VERSION -ARG OS - -FROM mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS azure-ipam -ARG OS -ARG VERSION -WORKDIR /azure-ipam -COPY ./azure-ipam . -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-ipam -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" . - -FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS compressor -ARG OS -WORKDIR /payload -COPY --from=azure-ipam /go/bin/* /payload -COPY --from=azure-ipam /azure-ipam/*.conflist /payload -RUN cd /payload && sha256sum * > sum.txt -RUN gzip --verbose --best --recursive /payload && for f in /payload/*.gz; do mv -- "$f" "${f%%.gz}"; done - -FROM mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS dropgz -ARG DROPGZ_VERSION -ARG OS -ARG VERSION -RUN go mod download github.com/azure/azure-container-networking/dropgz@$DROPGZ_VERSION -WORKDIR /go/pkg/mod/github.com/azure/azure-container-networking/dropgz\@$DROPGZ_VERSION -COPY --from=compressor /payload/* pkg/embed/fs/ -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/dropgz -trimpath -ldflags "-X github.com/Azure/azure-container-networking/dropgz/internal/buildinfo.Version="$VERSION"" -gcflags="-dwarflocationlists=true" main.go - -FROM scratch -COPY --from=dropgz /go/bin/dropgz dropgz -ENTRYPOINT [ "/dropgz" ] diff --git a/cni/windows.Dockerfile b/cni/Dockerfile similarity index 81% rename from cni/windows.Dockerfile rename to cni/Dockerfile index 4b0db46f428..2cae0913b14 100644 --- a/cni/windows.Dockerfile +++ b/cni/Dockerfile @@ -1,7 +1,7 @@ ARG ARCH ARG DROPGZ_VERSION=v0.0.12 -ARG OS ARG OS_VERSION +ARG OS FROM --platform=linux/${ARCH} mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS azure-vnet ARG OS @@ -11,7 +11,7 @@ COPY . . RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/network/plugin/main.go RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet-telemetry -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/telemetry/service/telemetrymain.go RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet-ipam -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/ipam/plugin/main.go -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azurecni-stateless -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/network/stateless/main.go +RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet-stateless -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/network/stateless/main.go FROM --platform=linux/${ARCH} mcr.microsoft.com/cbl-mariner/base/core:2.0 AS compressor ARG OS @@ -19,6 +19,7 @@ WORKDIR /payload COPY --from=azure-vnet /go/bin/* /payload/ COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS.conflist /payload/azure.conflist COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-swift.conflist /payload/azure-swift.conflist +COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-multitenancy-transparent-vlan.conflist /payload/azure-multitenancy-transparent-vlan.conflist COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-swift-overlay.conflist /payload/azure-swift-overlay.conflist COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-swift-overlay-dualstack.conflist /payload/azure-swift-overlay-dualstack.conflist COPY --from=azure-vnet /azure-container-networking/telemetry/azure-vnet-telemetry.config /payload/azure-vnet-telemetry.config @@ -34,6 +35,10 @@ WORKDIR /go/pkg/mod/github.com/azure/azure-container-networking/dropgz\@$DROPGZ_ COPY --from=compressor /payload/* pkg/embed/fs/ RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/dropgz -trimpath -ldflags "-X github.com/Azure/azure-container-networking/dropgz/internal/buildinfo.Version="$VERSION"" -gcflags="-dwarflocationlists=true" main.go -FROM mcr.microsoft.com/windows/nanoserver:${OS_VERSION} +FROM scratch as linux COPY --from=dropgz /go/bin/dropgz dropgz ENTRYPOINT [ "/dropgz" ] + +FROM mcr.microsoft.com/windows/nanoserver:${OS_VERSION} as windows +COPY --from=dropgz /go/bin/dropgz dropgz.exe +ENTRYPOINT [ "/dropgz.exe" ] diff --git a/cni/linux.Dockerfile b/cni/linux.Dockerfile deleted file mode 100644 index 1a83b3a8956..00000000000 --- a/cni/linux.Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -ARG ARCH -ARG DROPGZ_VERSION=v0.0.12 -ARG OS_VERSION -ARG OS - -FROM mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS azure-vnet -ARG OS -ARG VERSION -WORKDIR /azure-container-networking -COPY . . -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/network/plugin/main.go -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet-telemetry -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/telemetry/service/telemetrymain.go -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-vnet-ipam -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/ipam/plugin/main.go -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azurecni-stateless -trimpath -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/network/stateless/main.go - -FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 AS compressor -ARG OS -WORKDIR /payload -COPY --from=azure-vnet /go/bin/* /payload -COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS.conflist /payload/azure.conflist -COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-swift.conflist /payload/azure-swift.conflist -COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-multitenancy-transparent-vlan.conflist /payload/azure-multitenancy-transparent-vlan.conflist -COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-swift-overlay.conflist /payload/azure-swift-overlay.conflist -COPY --from=azure-vnet /azure-container-networking/cni/azure-$OS-swift-overlay-dualstack.conflist /payload/azure-swift-overlay-dualstack.conflist -COPY --from=azure-vnet /azure-container-networking/telemetry/azure-vnet-telemetry.config /payload/azure-vnet-telemetry.config -RUN cd /payload && sha256sum * > sum.txt -RUN gzip --verbose --best --recursive /payload && for f in /payload/*.gz; do mv -- "$f" "${f%%.gz}"; done - -FROM mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS dropgz -ARG DROPGZ_VERSION -ARG OS -ARG VERSION -RUN go mod download github.com/azure/azure-container-networking/dropgz@$DROPGZ_VERSION -WORKDIR /go/pkg/mod/github.com/azure/azure-container-networking/dropgz\@$DROPGZ_VERSION -COPY --from=compressor /payload/* pkg/embed/fs/ -RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/dropgz -trimpath -ldflags "-X github.com/Azure/azure-container-networking/dropgz/internal/buildinfo.Version="$VERSION"" -gcflags="-dwarflocationlists=true" main.go - -FROM scratch -COPY --from=dropgz /go/bin/dropgz dropgz -ENTRYPOINT [ "/dropgz" ] diff --git a/cns/Dockerfile b/cns/Dockerfile new file mode 100644 index 00000000000..b2ab84fff3c --- /dev/null +++ b/cns/Dockerfile @@ -0,0 +1,32 @@ +ARG ARCH +ARG OS_VERSION +ARG OS + +FROM --platform=linux/${ARCH} mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS builder +ARG OS +ARG CNS_AI_ID +ARG CNS_AI_PATH +ARG VERSION +WORKDIR /azure-container-networking +COPY . . +RUN GOOS=$OS CGO_ENABLED=0 go build -a -o /go/bin/azure-cns -ldflags "-X main.version="$VERSION" -X "$CNS_AI_PATH"="$CNS_AI_ID"" -gcflags="-dwarflocationlists=true" cns/service/*.go + +FROM mcr.microsoft.com/cbl-mariner/base/core:1.0 AS certs +RUN tdnf upgrade -y && tdnf install -y ca-certificates + +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 as linux +RUN tdnf install -y iptables +COPY --from=builder /etc/passwd /etc/passwd +COPY --from=builder /etc/group /etc/group +COPY --from=builder /go/bin/azure-cns /azure-cns +RUN ln -s /usr/local/bin/azure-cns /azure-cns +COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +ENTRYPOINT [ "/azure-cns" ] +EXPOSE 10090 + +FROM mcr.microsoft.com/windows/servercore:${OS_VERSION} as windows +COPY --from=builder /azure-container-networking/cns/kubeconfigtemplate.yaml kubeconfigtemplate.yaml +COPY --from=builder /azure-container-networking/npm/examples/windows/setkubeconfigpath.ps1 setkubeconfigpath.ps1 +COPY --from=builder /azure-cns.exe /go/bin/azure-cns +ENTRYPOINT ["azure-cns.exe"] +EXPOSE 10090 diff --git a/cns/linux.Dockerfile b/cns/linux.Dockerfile deleted file mode 100644 index 6177bb58d04..00000000000 --- a/cns/linux.Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM mcr.microsoft.com/cbl-mariner/base/core:1.0 AS certs -RUN tdnf upgrade -y && tdnf install -y ca-certificates - -FROM mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS builder -ARG VERSION -ARG CNS_AI_PATH -ARG CNS_AI_ID -WORKDIR /usr/local/src -COPY . . -RUN CGO_ENABLED=0 go build -a -o /usr/local/bin/azure-cns -ldflags "-X main.version="$VERSION" -X "$CNS_AI_PATH"="$CNS_AI_ID"" -gcflags="-dwarflocationlists=true" cns/service/*.go -RUN CGO_ENABLED=0 go build -a -o /usr/local/bin/azure-vnet-telemetry -ldflags "-X main.version="$VERSION"" -gcflags="-dwarflocationlists=true" cni/telemetry/service/*.go - -FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 -RUN tdnf install -y iptables -COPY --from=builder /etc/passwd /etc/passwd -COPY --from=builder /etc/group /etc/group -COPY --from=builder /usr/local/bin/azure-cns \ - /usr/local/bin/azure-cns -COPY --from=builder /usr/local/bin/azure-vnet-telemetry \ - /usr/local/bin/azure-vnet-telemetry -COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt -ENTRYPOINT [ "/usr/local/bin/azure-cns" ] -EXPOSE 10090 diff --git a/cns/windows.Dockerfile b/cns/windows.Dockerfile deleted file mode 100644 index 52bec2e7b66..00000000000 --- a/cns/windows.Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG OS_VERSION -FROM --platform=linux/amd64 mcr.microsoft.com/oss/go/microsoft/golang:1.21 AS builder -ARG VERSION -ARG CNS_AI_PATH -ARG CNS_AI_ID -WORKDIR /usr/local/src -COPY . . -RUN GOOS=windows CGO_ENABLED=0 go build -a -o /usr/local/bin/azure-cns.exe -ldflags "-X main.version="$VERSION" -X "$CNS_AI_PATH"="$CNS_AI_ID"" -gcflags="-dwarflocationlists=true" cns/service/*.go - -FROM mcr.microsoft.com/windows/servercore:${OS_VERSION} -COPY --from=builder /usr/local/src/cns/kubeconfigtemplate.yaml kubeconfigtemplate.yaml -COPY --from=builder /usr/local/src/npm/examples/windows/setkubeconfigpath.ps1 setkubeconfigpath.ps1 -COPY --from=builder /usr/local/bin/azure-cns.exe azure-cns.exe -ENTRYPOINT ["azure-cns.exe"] -EXPOSE 10090 diff --git a/dropgz/build/linux.Dockerfile b/dropgz/build/linux.Dockerfile index ce0042b9ad9..02efe10b6ad 100644 --- a/dropgz/build/linux.Dockerfile +++ b/dropgz/build/linux.Dockerfile @@ -42,6 +42,6 @@ WORKDIR /dropgz COPY --from=compressor /dropgz . RUN CGO_ENABLED=0 go build -a -o bin/dropgz -trimpath -ldflags "-X github.com/Azure/azure-container-networking/dropgz/internal/buildinfo.Version="$VERSION"" -gcflags="-dwarflocationlists=true" main.go -FROM scratch +FROM scratch as linux COPY --from=dropgz /dropgz/bin/dropgz /dropgz ENTRYPOINT [ "/dropgz" ] diff --git a/dropgz/build/windows.Dockerfile b/dropgz/build/windows.Dockerfile index 08b76876613..f9365d109a4 100644 --- a/dropgz/build/windows.Dockerfile +++ b/dropgz/build/windows.Dockerfile @@ -33,6 +33,6 @@ WORKDIR /dropgz COPY --from=compressor /dropgz . RUN GOOS=windows CGO_ENABLED=0 go build -a -o bin/dropgz.exe -trimpath -ldflags "-X github.com/Azure/azure-container-networking/dropgz/internal/buildinfo.Version="$VERSION"" -gcflags="-dwarflocationlists=true" main.go -FROM mcr.microsoft.com/windows/nanoserver:${OS_VERSION} +FROM mcr.microsoft.com/windows/nanoserver:${OS_VERSION} as windows COPY --from=dropgz /dropgz/bin/dropgz.exe dropgz.exe ENTRYPOINT [ "dropgz.exe" ] diff --git a/npm/linux.Dockerfile b/npm/linux.Dockerfile index 48036e50b36..0e3f86d11e3 100644 --- a/npm/linux.Dockerfile +++ b/npm/linux.Dockerfile @@ -6,7 +6,7 @@ WORKDIR /usr/local/src COPY . . RUN CGO_ENABLED=0 go build -v -o /usr/local/bin/azure-npm -ldflags "-X main.version="$VERSION" -X "$NPM_AI_PATH"="$NPM_AI_ID"" -gcflags="-dwarflocationlists=true" npm/cmd/*.go -FROM mcr.microsoft.com/mirror/docker/library/ubuntu:20.04 +FROM mcr.microsoft.com/mirror/docker/library/ubuntu:20.04 as linux COPY --from=builder /usr/local/bin/azure-npm /usr/bin/azure-npm COPY --from=builder /usr/local/src/npm/scripts /usr/local/npm RUN apt-get update && apt-get install -y iptables ipset ca-certificates && apt-get autoremove -y && apt-get clean diff --git a/npm/windows.Dockerfile b/npm/windows.Dockerfile index bd8c9c87a98..72c056d0b73 100644 --- a/npm/windows.Dockerfile +++ b/npm/windows.Dockerfile @@ -7,7 +7,7 @@ WORKDIR /usr/local/src COPY . . RUN GOOS=windows CGO_ENABLED=0 go build -v -o /usr/local/bin/azure-npm.exe -ldflags "-X main.version="$VERSION" -X "$NPM_AI_PATH"="$NPM_AI_ID"" -gcflags="-dwarflocationlists=true" npm/cmd/*.go -FROM mcr.microsoft.com/windows/servercore:${OS_VERSION} +FROM mcr.microsoft.com/windows/servercore:${OS_VERSION} as windows COPY --from=builder /usr/local/src/npm/examples/windows/kubeconfigtemplate.yaml kubeconfigtemplate.yaml COPY --from=builder /usr/local/src/npm/examples/windows/setkubeconfigpath.ps1 setkubeconfigpath.ps1 COPY --from=builder /usr/local/src/npm/examples/windows/setkubeconfigpath-capz.ps1 setkubeconfigpath-capz.ps1