From 37262100226045b33a83caef056c04406fdbdc66 Mon Sep 17 00:00:00 2001 From: Connor Catlett Date: Wed, 25 Oct 2023 15:04:57 +0000 Subject: [PATCH] Add compatibility workaround for A1 instance family Signed-off-by: Connor Catlett --- Dockerfile | 6 +++- Makefile | 6 ++-- .../templates/_node-windows.tpl | 1 + charts/aws-ebs-csi-driver/templates/_node.tpl | 1 + .../templates/node-windows.yaml | 1 - charts/aws-ebs-csi-driver/templates/node.yaml | 34 ++++++++++++++++++- charts/aws-ebs-csi-driver/values.yaml | 11 ++++++ deploy/kubernetes/base/node.yaml | 8 +++++ hack/e2e/ecr.sh | 4 +-- 9 files changed, 64 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3aabf47095..5ea6b1b045 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,11 @@ ARG TARGETARCH ARG VERSION RUN OS=$TARGETOS ARCH=$TARGETARCH make $TARGETOS/$TARGETARCH -FROM public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-csi-ebs:latest-al23 AS linux-amazon +FROM public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-csi-ebs:latest-al23 AS linux-al2023 +COPY --from=builder /go/src/github.com/kubernetes-sigs/aws-ebs-csi-driver/bin/aws-ebs-csi-driver /bin/aws-ebs-csi-driver +ENTRYPOINT ["/bin/aws-ebs-csi-driver"] + +FROM public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-csi-ebs:latest-al2 AS linux-al2 COPY --from=builder /go/src/github.com/kubernetes-sigs/aws-ebs-csi-driver/bin/aws-ebs-csi-driver /bin/aws-ebs-csi-driver ENTRYPOINT ["/bin/aws-ebs-csi-driver"] diff --git a/Makefile b/Makefile index 666bfeb278..adc7d744ee 100644 --- a/Makefile +++ b/Makefile @@ -33,11 +33,11 @@ OUTPUT_TYPE?=docker OS?=linux ARCH?=amd64 -OSVERSION?=amazon +OSVERSION?=al2023 ALL_OS?=linux windows ALL_ARCH_linux?=amd64 arm64 -ALL_OSVERSION_linux?=amazon +ALL_OSVERSION_linux?=al2023 ALL_OS_ARCH_OSVERSION_linux=$(foreach arch, $(ALL_ARCH_linux), $(foreach osversion, ${ALL_OSVERSION_linux}, linux-$(arch)-${osversion})) ALL_ARCH_windows?=amd64 @@ -86,7 +86,7 @@ create-manifest: all-image-registry .PHONY: all-image-docker all-image-docker: $(addprefix sub-image-docker-,$(ALL_OS_ARCH_OSVERSION_linux)) .PHONY: all-image-registry -all-image-registry: $(addprefix sub-image-registry-,$(ALL_OS_ARCH_OSVERSION)) +all-image-registry: sub-image-registry-linux-arm64-al2 $(addprefix sub-image-registry-,$(ALL_OS_ARCH_OSVERSION)) sub-image-%: $(MAKE) OUTPUT_TYPE=$(call word-hyphen,$*,1) OS=$(call word-hyphen,$*,2) ARCH=$(call word-hyphen,$*,3) OSVERSION=$(call word-hyphen,$*,4) image diff --git a/charts/aws-ebs-csi-driver/templates/_node-windows.tpl b/charts/aws-ebs-csi-driver/templates/_node-windows.tpl index a2cf519856..2e0582e19f 100644 --- a/charts/aws-ebs-csi-driver/templates/_node-windows.tpl +++ b/charts/aws-ebs-csi-driver/templates/_node-windows.tpl @@ -1,5 +1,6 @@ {{- define "node-windows" }} {{- if .Values.node.enableWindows }} +--- kind: DaemonSet apiVersion: apps/v1 metadata: diff --git a/charts/aws-ebs-csi-driver/templates/_node.tpl b/charts/aws-ebs-csi-driver/templates/_node.tpl index 282fd164a6..d0c9a67e15 100644 --- a/charts/aws-ebs-csi-driver/templates/_node.tpl +++ b/charts/aws-ebs-csi-driver/templates/_node.tpl @@ -1,5 +1,6 @@ {{- define "node" }} {{- if or (eq (default true .Values.node.enableLinux) true) }} +--- kind: DaemonSet apiVersion: apps/v1 metadata: diff --git a/charts/aws-ebs-csi-driver/templates/node-windows.yaml b/charts/aws-ebs-csi-driver/templates/node-windows.yaml index fb1912649c..9a2c2c81a0 100644 --- a/charts/aws-ebs-csi-driver/templates/node-windows.yaml +++ b/charts/aws-ebs-csi-driver/templates/node-windows.yaml @@ -9,6 +9,5 @@ "node" (deepCopy $.Values.node | mustMerge $values) ) }} ---- {{- include "node-windows" (deepCopy $ | mustMerge $args) -}} {{- end }} diff --git a/charts/aws-ebs-csi-driver/templates/node.yaml b/charts/aws-ebs-csi-driver/templates/node.yaml index ea8fa3187f..a891513b6b 100644 --- a/charts/aws-ebs-csi-driver/templates/node.yaml +++ b/charts/aws-ebs-csi-driver/templates/node.yaml @@ -9,6 +9,38 @@ "node" (deepCopy $.Values.node | mustMerge $values) ) }} ---- +{{- include "node" (deepCopy $ | mustMerge $args) -}} +{{- end }} +{{- if .Values.a1CompatibilityDaemonSet }} +{{$args := dict + "NodeName" "ebs-csi-node-a1compat" + "Values" (dict + "image" (dict + "tag" (printf "%s-a1compat" (default (printf "v%s" .Chart.AppVersion) (.Values.image.tag | toString))) + ) + "node" (dict + "affinity" (dict + "nodeAffinity" (dict + "requiredDuringSchedulingIgnoredDuringExecution" (dict + "nodeSelectorTerms" (list + (dict "matchExpressions" (list + (dict + "key" "eks.amazonaws.com/compute-type" + "operator" "NotIn" + "values" (list "fargate") + ) + (dict + "key" "node.kubernetes.io/instance-type" + "operator" "In" + "values" (list "a1.medium" "a1.large" "a1.xlarge" "a1.2xlarge" "a1.4xlarge") + ) + )) + ) + ) + ) + ) + ) + ) +}} {{- include "node" (deepCopy $ | mustMerge $args) -}} {{- end }} diff --git a/charts/aws-ebs-csi-driver/values.yaml b/charts/aws-ebs-csi-driver/values.yaml index 794437e945..4ad187c929 100644 --- a/charts/aws-ebs-csi-driver/values.yaml +++ b/charts/aws-ebs-csi-driver/values.yaml @@ -317,6 +317,14 @@ node: operator: NotIn values: - fargate + - key: node.kubernetes.io/instance-type + operator: NotIn + values: + - a1.medium + - a1.large + - a1.xlarge + - a1.2xlarge + - a1.4xlarge nodeSelector: {} podAnnotations: {} podLabels: {} @@ -382,6 +390,9 @@ additionalDaemonSets: # node.kubernetes.io/instance-type: c5.large # volumeAttachLimit: 15 +# Enable compatibility for the A1 instance family via use of an AL2-based image in a separate DaemonSet +# a1CompatibilityDaemonSet: true + storageClasses: [] # Add StorageClass resources like: # - name: ebs-sc diff --git a/deploy/kubernetes/base/node.yaml b/deploy/kubernetes/base/node.yaml index cc06ea2c83..84744120de 100644 --- a/deploy/kubernetes/base/node.yaml +++ b/deploy/kubernetes/base/node.yaml @@ -30,6 +30,14 @@ spec: operator: NotIn values: - fargate + - key: node.kubernetes.io/instance-type + operator: NotIn + values: + - a1.medium + - a1.large + - a1.xlarge + - a1.2xlarge + - a1.4xlarge nodeSelector: kubernetes.io/os: linux serviceAccountName: ebs-csi-node-sa diff --git a/hack/e2e/ecr.sh b/hack/e2e/ecr.sh index cb4258799e..fba0c3dab4 100644 --- a/hack/e2e/ecr.sh +++ b/hack/e2e/ecr.sh @@ -27,8 +27,8 @@ function ecr_build_and_push() { docker run --rm --privileged multiarch/qemu-user-static --reset -p yes make all-push else - IMAGE=${IMAGE_NAME} TAG=${IMAGE_TAG} OS=linux ARCH=amd64 OSVERSION=amazon make image - docker tag "${IMAGE_NAME}":"${IMAGE_TAG}"-linux-amd64-amazon "${IMAGE_NAME}":"${IMAGE_TAG}" + IMAGE=${IMAGE_NAME} TAG=${IMAGE_TAG} OS=linux ARCH=amd64 OSVERSION=al2023 make image + docker tag "${IMAGE_NAME}":"${IMAGE_TAG}"-linux-amd64-al2023 "${IMAGE_NAME}":"${IMAGE_TAG}" docker push "${IMAGE_NAME}":"${IMAGE_TAG}" fi fi