diff --git a/Makefile b/Makefile index 2dc6e5e14009..0fcce58d5b9b 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,7 @@ KARPENTER_CORE_DIR = $(shell go list -m -f '{{ .Dir }}' sigs.k8s.io/karpenter) # TEST_SUITE enables you to select a specific test suite directory to run "make e2etests" against TEST_SUITE ?= "..." +TMPFILE = $(shell mktemp) # Filename when building the binary controller only GOARCH ?= $(shell go env GOARCH) @@ -88,6 +89,20 @@ e2etests: ## Run the e2e suite against your local cluster --ginkgo.grace-period=3m \ --ginkgo.vv +upstream-e2etests: + CLUSTER_NAME=${CLUSTER_NAME} envsubst < $(shell pwd)/test/pkg/environment/aws/default_ec2nodeclass.yaml > ${TMPFILE} + go test \ + -count 1 \ + -timeout 1h \ + -v \ + $(KARPENTER_CORE_DIR)/test/suites/$(shell echo $(TEST_SUITE) | tr A-Z a-z)/... \ + --ginkgo.focus="${FOCUS}" \ + --ginkgo.timeout=1h \ + --ginkgo.grace-period=5m \ + --ginkgo.vv \ + --default-nodeclass="$(TMPFILE)"\ + --default-nodepool="$(shell pwd)/test/pkg/environment/aws/default_nodepool.yaml" + e2etests-deflake: ## Run the e2e suite against your local cluster cd test && CLUSTER_NAME=${CLUSTER_NAME} ginkgo \ --focus="${FOCUS}" \ diff --git a/test/pkg/environment/aws/default_ec2nodeclass.yaml b/test/pkg/environment/aws/default_ec2nodeclass.yaml new file mode 100644 index 000000000000..09e667a5496c --- /dev/null +++ b/test/pkg/environment/aws/default_ec2nodeclass.yaml @@ -0,0 +1,15 @@ +apiVersion: karpenter.k8s.aws/v1 +kind: EC2NodeClass +metadata: + name: default +spec: + amiFamily: AL2023 + subnetSelectorTerms: + - tags: + karpenter.sh/discovery: $CLUSTER_NAME + securityGroupSelectorTerms: + - tags: + karpenter.sh/discovery: $CLUSTER_NAME + role: KarpenterNodeRole-$CLUSTER_NAME + amiSelectorTerms: + - alias: al2023@latest \ No newline at end of file diff --git a/test/pkg/environment/aws/default_nodepool.yaml b/test/pkg/environment/aws/default_nodepool.yaml new file mode 100644 index 000000000000..5601b01d2b75 --- /dev/null +++ b/test/pkg/environment/aws/default_nodepool.yaml @@ -0,0 +1,36 @@ +apiVersion: karpenter.sh/v1 +kind: NodePool +metadata: + name: default +spec: + disruption: + consolidationPolicy: WhenEmptyOrUnderutilized + consolidateAfter: Never + budgets: + - nodes: 100% + limits: + cpu: 1000 + memory: 1000Gi + template: + spec: + expireAfter: Never + requirements: + - key: kubernetes.io/os + operator: In + values: ["linux"] + - key: karpenter.sh/capacity-type + operator: In + values: ["on-demand"] + - key: karpenter.k8s.aws/instance-category + operator: In + values: ["c", "m", "r"] + - key: karpenter.k8s.aws/instance-generation + operator: In + values: ["2"] + - key: karpenter.k8s.aws/instance-family + operator: NotIn + values: ["a1"] + nodeClassRef: + group: karpenter.k8s.aws + kind: EKSNodeClass + name: default \ No newline at end of file