From adddfcec9bf60363f9505ad2291278ada2496964 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:26:24 -0500 Subject: [PATCH 01/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 98 ++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .github/workflows/eks-add-on-canary-test.yml diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml new file mode 100644 index 000000000..50ed59f03 --- /dev/null +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -0,0 +1,98 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: 'EKS ADd-on Canary Test' +env: + TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} + + +on: +# schedule: +# - cron: '0 0 * * *' # triggers the workflow every day + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true + +permissions: + id-token: write + contents: read + +jobs: + GenerateTestMatrix: + name: 'GenerateTestMatrix' + runs-on: ubuntu-latest + outputs: + eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} + aws-region: us-west-2 + + - name: Generate matrix + id: set-matrix + run: | + echo "::set-output name=eks_addon_matrix::$(echo $(cat integration-tests/generator/k8s_versions_matrix.json))" + +# - name: Echo test plan matrix +# run: | +# echo "eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }}" +# echo "Addon name ${{ github.event.inputs.addon_name }}, addon version ${{ github.event.inputs.addon_version }} " + + EKSAddOnIntegrationTest: + needs: [GenerateTestMatrix] + name: EKSAddOnIntegrationTest + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arrays: ${{ fromJson(needs.GenerateTestMatrix.outputs.eks_addon_matrix) }} + permissions: + id-token: write + contents: read + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} + aws-region: us-west-2 + + - name: Terraform apply + uses: nick-fields/retry@v2 + with: + max_attempts: 1 + timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster + retry_wait_seconds: 5 + command: | + cd integration-tests/terraform/eks + + aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 +# terraform init +# if terraform apply -var="addon_name=${{ github.event.inputs.addon_name }}" -var="addon_version=${{ github.event.inputs.addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then +# terraform destroy -auto-approve +# else +# terraform destroy -auto-approve && exit 1 +# fi + +# - name: Terraform destroy +# if: ${{ cancelled() || failure() }} +# uses: nick-fields/retry@v2 +# with: +# max_attempts: 3 +# timeout_minutes: 8 +# retry_wait_seconds: 5 +# command: | +# cd integration-tests/terraform/eks +# +# terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" --auto-approve From eef715374db6b85f5dc1b86ee0fe0959af1b2a6f Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:29:23 -0500 Subject: [PATCH 02/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 50ed59f03..8e72ce5dc 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -1,7 +1,7 @@ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 -name: 'EKS ADd-on Canary Test' +name: EKS Add-on Canary Test env: TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} From 8413a8b1b00d50e235ce57d03c9a67c87252f0c7 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:30:29 -0500 Subject: [PATCH 03/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 26 -------------------- 1 file changed, 26 deletions(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 8e72ce5dc..041a044af 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -7,8 +7,6 @@ env: on: -# schedule: -# - cron: '0 0 * * *' # triggers the workflow every day workflow_dispatch: concurrency: @@ -41,11 +39,6 @@ jobs: run: | echo "::set-output name=eks_addon_matrix::$(echo $(cat integration-tests/generator/k8s_versions_matrix.json))" -# - name: Echo test plan matrix -# run: | -# echo "eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }}" -# echo "Addon name ${{ github.event.inputs.addon_name }}, addon version ${{ github.event.inputs.addon_version }} " - EKSAddOnIntegrationTest: needs: [GenerateTestMatrix] name: EKSAddOnIntegrationTest @@ -76,23 +69,4 @@ jobs: retry_wait_seconds: 5 command: | cd integration-tests/terraform/eks - aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 -# terraform init -# if terraform apply -var="addon_name=${{ github.event.inputs.addon_name }}" -var="addon_version=${{ github.event.inputs.addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then -# terraform destroy -auto-approve -# else -# terraform destroy -auto-approve && exit 1 -# fi - -# - name: Terraform destroy -# if: ${{ cancelled() || failure() }} -# uses: nick-fields/retry@v2 -# with: -# max_attempts: 3 -# timeout_minutes: 8 -# retry_wait_seconds: 5 -# command: | -# cd integration-tests/terraform/eks -# -# terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" --auto-approve From 5c708f97952445e11295525114ea736759f3c39f Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:31:31 -0500 Subject: [PATCH 04/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 041a044af..217fe3a59 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -5,7 +5,6 @@ name: EKS Add-on Canary Test env: TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} - on: workflow_dispatch: From f78f7d171c64f7de732d35cdaef8c6b8eaa91ce5 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:39:10 -0500 Subject: [PATCH 05/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 217fe3a59..3c68dc557 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -1,7 +1,7 @@ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 -name: EKS Add-on Canary Test +name: Run EKS addon Canary Test env: TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} From 49f751813d4c8e55cfd533ec82bc658f6dfb827f Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:40:56 -0500 Subject: [PATCH 06/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 3c68dc557..4010b0400 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -7,6 +7,9 @@ env: on: workflow_dispatch: + push: + branches: + - canary concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} From 0e7ff6ef539b9ddf93c22c01758a72e8bfa69271 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:48:31 -0500 Subject: [PATCH 07/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 4010b0400..9328b6aac 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -71,4 +71,24 @@ jobs: retry_wait_seconds: 5 command: | cd integration-tests/terraform/eks - aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 + + terraform init + latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2) + echo $latest_version + if terraform apply -var="addon_version=${{ latest_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + terraform destroy -auto-approve + else + terraform destroy -auto-approve && exit 1 + fi + + - name: Terraform destroy + if: ${{ cancelled() || failure() }} + uses: nick-fields/retry@v2 + with: + max_attempts: 3 + timeout_minutes: 8 + retry_wait_seconds: 5 + command: | + cd integration-tests/terraform/eks + + terraform destroy --auto-approve \ No newline at end of file From 6860b61ddca30d77bbb198df3f53a26295167a7d Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:48:38 -0500 Subject: [PATCH 08/19] Implementing canary for EKS add-on --- .../generator/k8s_versions_matrix.json | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/integration-tests/generator/k8s_versions_matrix.json b/integration-tests/generator/k8s_versions_matrix.json index aedb38820..1b250f5c7 100644 --- a/integration-tests/generator/k8s_versions_matrix.json +++ b/integration-tests/generator/k8s_versions_matrix.json @@ -1,25 +1,4 @@ [ - { - "k8sVersion": "1.24" - }, - { - "k8sVersion": "1.25" - }, - { - "k8sVersion": "1.26" - }, - { - "k8sVersion": "1.27" - }, - { - "k8sVersion": "1.28" - }, - { - "k8sVersion": "1.29" - }, - { - "k8sVersion": "1.30" - }, { "k8sVersion": "1.31" } From e82cee3d9eae733808f60c835c705a8aa8308dad Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:49:21 -0500 Subject: [PATCH 09/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 9328b6aac..daea44dca 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -75,7 +75,7 @@ jobs: terraform init latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2) echo $latest_version - if terraform apply -var="addon_version=${{ latest_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + if terraform apply -var="addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then terraform destroy -auto-approve else terraform destroy -auto-approve && exit 1 From b6c91b038c366648b526546588c4de7e73a90570 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:54:11 -0500 Subject: [PATCH 10/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index daea44dca..806657a83 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -73,9 +73,10 @@ jobs: cd integration-tests/terraform/eks terraform init - latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2) + latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability \ + --query='addons[].addonVersions[0].addonVersion' --region=us-west-2) | jq -r '.[0]' echo $latest_version - if terraform apply -var="addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + if terraform apply -var="addon_version=${{ latest_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then terraform destroy -auto-approve else terraform destroy -auto-approve && exit 1 From d415481a133f0842a37897a9fc591aa46ea586d9 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 12:59:20 -0500 Subject: [PATCH 11/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index 806657a83..b7ec0a95e 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -76,7 +76,7 @@ jobs: latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability \ --query='addons[].addonVersions[0].addonVersion' --region=us-west-2) | jq -r '.[0]' echo $latest_version - if terraform apply -var="addon_version=${{ latest_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + if terraform apply -var "addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then terraform destroy -auto-approve else terraform destroy -auto-approve && exit 1 From 13d8a8d82ba7c3d7c79dae2fdbbb3b686db3792b Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 14:00:43 -0500 Subject: [PATCH 12/19] Implementing canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml index b7ec0a95e..7bc087c80 100644 --- a/.github/workflows/eks-add-on-canary-test.yml +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -74,7 +74,7 @@ jobs: terraform init latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability \ - --query='addons[].addonVersions[0].addonVersion' --region=us-west-2) | jq -r '.[0]' + --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') echo $latest_version if terraform apply -var "addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then terraform destroy -auto-approve From d01622b35168396a6ad03f3ba24b30e537202c74 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 14:55:26 -0500 Subject: [PATCH 13/19] rev2 --- .github/workflows/eks-add-on-canary-test.yml | 95 -------------------- .github/workflows/eks-add-on-integ-test.yml | 24 +++-- 2 files changed, 17 insertions(+), 102 deletions(-) delete mode 100644 .github/workflows/eks-add-on-canary-test.yml diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml deleted file mode 100644 index 7bc087c80..000000000 --- a/.github/workflows/eks-add-on-canary-test.yml +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -# SPDX-License-Identifier: Apache-2.0 - -name: Run EKS addon Canary Test -env: - TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} - -on: - workflow_dispatch: - push: - branches: - - canary - -concurrency: - group: ${{ github.workflow }}-${{ github.ref_name }} - cancel-in-progress: true - -permissions: - id-token: write - contents: read - -jobs: - GenerateTestMatrix: - name: 'GenerateTestMatrix' - runs-on: ubuntu-latest - outputs: - eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v2 - with: - role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} - aws-region: us-west-2 - - - name: Generate matrix - id: set-matrix - run: | - echo "::set-output name=eks_addon_matrix::$(echo $(cat integration-tests/generator/k8s_versions_matrix.json))" - - EKSAddOnIntegrationTest: - needs: [GenerateTestMatrix] - name: EKSAddOnIntegrationTest - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - arrays: ${{ fromJson(needs.GenerateTestMatrix.outputs.eks_addon_matrix) }} - permissions: - id-token: write - contents: read - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v2 - with: - role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} - aws-region: us-west-2 - - - name: Terraform apply - uses: nick-fields/retry@v2 - with: - max_attempts: 1 - timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster - retry_wait_seconds: 5 - command: | - cd integration-tests/terraform/eks - - terraform init - latest_version=$(aws eks describe-addon-versions --kubernetes-version=1.31 --addon-name=amazon-cloudwatch-observability \ - --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') - echo $latest_version - if terraform apply -var "addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then - terraform destroy -auto-approve - else - terraform destroy -auto-approve && exit 1 - fi - - - name: Terraform destroy - if: ${{ cancelled() || failure() }} - uses: nick-fields/retry@v2 - with: - max_attempts: 3 - timeout_minutes: 8 - retry_wait_seconds: 5 - command: | - cd integration-tests/terraform/eks - - terraform destroy --auto-approve \ No newline at end of file diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index d16388c77..b0719b48f 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -11,18 +11,17 @@ on: addon_name: required: true type: string - default: "amazon-cloudwatch-observability" description: "EKS addon name" addon_version: required: true type: string - default: "v1.1.0-eksbuild.1" description: "EKS addon version" run_in_beta: required: true type: boolean - default: true description: "Run in EKS Addon Beta environment" + schedule: + - cron: '0 10 * * *' # triggers the workflow every day at 10:00 hours concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} @@ -105,14 +104,24 @@ jobs: max_attempts: 1 timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster retry_wait_seconds: 5 + addon_name: ${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }} + addon_version: ${{ github.event.inputs.addon_version || '' }} + run_in_beta: ${{ github.event.inputs.run_in_beta || false }} + command: | cd integration-tests/terraform/eks terraform init - if terraform apply -var="beta=${{ github.event.inputs.run_in_beta }}" -var="addon_name=${{ github.event.inputs.addon_name }}" -var="addon_version=${{ github.event.inputs.addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then - terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" -auto-approve + + # Get the latest version of the EKS add-on in us-west-2 + if ${{ addon_version }} == '' + addon_version=$(aws eks describe-addon-versions --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') + fi + + if terraform apply -var="beta=${{ run_in_beta }}" -var="addon_name=${{ addon_name }}" -var="addon_version=${{ addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + terraform destroy -var="beta=${{ run_in_beta }}" -auto-approve else - terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" -auto-approve && exit 1 + terraform destroy -var="beta=${{ run_in_beta }}" -auto-approve && exit 1 fi - name: Terraform destroy @@ -122,7 +131,8 @@ jobs: max_attempts: 3 timeout_minutes: 8 retry_wait_seconds: 5 + run_in_beta: ${{ github.event.inputs.run_in_beta || false }} command: | cd integration-tests/terraform/eks - terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" --auto-approve + terraform destroy -var="beta=${{ run_in_beta }}" --auto-approve From ef9e0b89be6d9ced31ed251e95491d37c7135f18 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 15:01:44 -0500 Subject: [PATCH 14/19] rev2 --- .github/workflows/eks-add-on-integ-test.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index b0719b48f..9fc1e369e 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -104,20 +104,21 @@ jobs: max_attempts: 1 timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster retry_wait_seconds: 5 - addon_name: ${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }} - addon_version: ${{ github.event.inputs.addon_version || '' }} - run_in_beta: ${{ github.event.inputs.run_in_beta || false }} - command: | - cd integration-tests/terraform/eks + # Set default values + addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" + addon_version="${{ github.event.inputs.addon_version || 'latest' }}" + run_in_beta="${{ github.event.inputs.run_in_beta || false }}" + + # If the addon_version is 'latest', get the most recent version of the add-on from AWS + if [ "$addon_version" == "latest" ]; then + addon_version=$(aws eks describe-addon-versions --addon-name "$addon_name" --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') + fi + + cd integration-tests/terraform/eks terraform init - # Get the latest version of the EKS add-on in us-west-2 - if ${{ addon_version }} == '' - addon_version=$(aws eks describe-addon-versions --addon-name=amazon-cloudwatch-observability --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') - fi - if terraform apply -var="beta=${{ run_in_beta }}" -var="addon_name=${{ addon_name }}" -var="addon_version=${{ addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then terraform destroy -var="beta=${{ run_in_beta }}" -auto-approve else From 83b926a9950dcead41969b5ad6205adc334143f6 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 15:07:12 -0500 Subject: [PATCH 15/19] rev2 --- .github/workflows/eks-add-on-integ-test.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index 9fc1e369e..1dbbec356 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -105,10 +105,9 @@ jobs: timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster retry_wait_seconds: 5 command: | - # Set default values addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" addon_version="${{ github.event.inputs.addon_version || 'latest' }}" - run_in_beta="${{ github.event.inputs.run_in_beta || false }}" + run_in_beta="${{ github.event.inputs.addon_version == true || github.event.inputs.addon_version == 'true' || false }}" # If the addon_version is 'latest', get the most recent version of the add-on from AWS if [ "$addon_version" == "latest" ]; then @@ -132,8 +131,8 @@ jobs: max_attempts: 3 timeout_minutes: 8 retry_wait_seconds: 5 - run_in_beta: ${{ github.event.inputs.run_in_beta || false }} command: | + run_in_beta="${{ github.event.inputs.addon_version == true || github.event.inputs.addon_version == 'true' || false }}" cd integration-tests/terraform/eks terraform destroy -var="beta=${{ run_in_beta }}" --auto-approve From 72a9f48ed3a4c34d0137a1ec9e2989713805c661 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 15:09:16 -0500 Subject: [PATCH 16/19] rev2 --- .github/workflows/eks-add-on-integ-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index 1dbbec356..1a3bcef20 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -107,7 +107,7 @@ jobs: command: | addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" addon_version="${{ github.event.inputs.addon_version || 'latest' }}" - run_in_beta="${{ github.event.inputs.addon_version == true || github.event.inputs.addon_version == 'true' || false }}" + run_in_beta="${{ github.event.inputs.run_in_beta == true || github.event.inputs.run_in_beta == 'true' || false }}" # If the addon_version is 'latest', get the most recent version of the add-on from AWS if [ "$addon_version" == "latest" ]; then @@ -132,7 +132,7 @@ jobs: timeout_minutes: 8 retry_wait_seconds: 5 command: | - run_in_beta="${{ github.event.inputs.addon_version == true || github.event.inputs.addon_version == 'true' || false }}" + run_in_beta="${{ github.event.inputs.run_in_beta == true || github.event.inputs.run_in_beta == 'true' || false }}" cd integration-tests/terraform/eks terraform destroy -var="beta=${{ run_in_beta }}" --auto-approve From 14f821e0be0f9c741b6e9a637ecdb77dc1c67308 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 15:11:14 -0500 Subject: [PATCH 17/19] rev2 --- .github/workflows/eks-add-on-integ-test.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index 1a3bcef20..0d45b4eb5 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -107,7 +107,12 @@ jobs: command: | addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" addon_version="${{ github.event.inputs.addon_version || 'latest' }}" - run_in_beta="${{ github.event.inputs.run_in_beta == true || github.event.inputs.run_in_beta == 'true' || false }}" + run_in_beta="${{ github.event.inputs.run_in_beta || false }}" + if [ "$run_in_beta" == "true" ]; then + run_in_beta=1 + else + run_in_beta=0 + fi # If the addon_version is 'latest', get the most recent version of the add-on from AWS if [ "$addon_version" == "latest" ]; then @@ -132,7 +137,12 @@ jobs: timeout_minutes: 8 retry_wait_seconds: 5 command: | - run_in_beta="${{ github.event.inputs.run_in_beta == true || github.event.inputs.run_in_beta == 'true' || false }}" + run_in_beta="${{ github.event.inputs.run_in_beta || false }}" + if [ "$run_in_beta" == "true" ]; then + run_in_beta=1 # true + else + run_in_beta=0 # false + fi cd integration-tests/terraform/eks terraform destroy -var="beta=${{ run_in_beta }}" --auto-approve From 344fbb9ff35a6e34aaebe918fcfd7caa7d720da0 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 15:13:07 -0500 Subject: [PATCH 18/19] rev2 --- .github/workflows/eks-add-on-integ-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index 0d45b4eb5..1db25a10c 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -107,7 +107,7 @@ jobs: command: | addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" addon_version="${{ github.event.inputs.addon_version || 'latest' }}" - run_in_beta="${{ github.event.inputs.run_in_beta || false }}" + run_in_beta="${{ github.event.inputs.run_in_beta }}" if [ "$run_in_beta" == "true" ]; then run_in_beta=1 else @@ -137,7 +137,7 @@ jobs: timeout_minutes: 8 retry_wait_seconds: 5 command: | - run_in_beta="${{ github.event.inputs.run_in_beta || false }}" + run_in_beta="${{ github.event.inputs.run_in_beta }}" if [ "$run_in_beta" == "true" ]; then run_in_beta=1 # true else From a92b5bc04416cd60ebbc71c34b769ec7241d3420 Mon Sep 17 00:00:00 2001 From: Mitali Salvi Date: Mon, 2 Dec 2024 15:24:28 -0500 Subject: [PATCH 19/19] Implementing daily canary for EKS add-on --- .github/workflows/eks-add-on-canary-test.yml | 93 +++++++++++++++++++ .github/workflows/eks-add-on-integ-test.yml | 36 ++----- .../generator/k8s_versions_matrix.json | 21 +++++ 3 files changed, 122 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/eks-add-on-canary-test.yml diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml new file mode 100644 index 000000000..98a4a434a --- /dev/null +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -0,0 +1,93 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: Run EKS addon Canary Tests +env: + TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} + +on: + schedule: + - cron: '0 10 * * *' # triggers the workflow every day at 10:00 hours + +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true + +permissions: + id-token: write + contents: read + +jobs: + GenerateTestMatrix: + name: 'GenerateTestMatrix' + runs-on: ubuntu-latest + outputs: + eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} + aws-region: us-west-2 + + - name: Generate matrix + id: set-matrix + run: | + echo "::set-output name=eks_addon_matrix::$(echo $(cat integration-tests/generator/k8s_versions_matrix.json))" + + EKSAddOnIntegrationTest: + needs: [GenerateTestMatrix] + name: EKSAddOnIntegrationTest + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arrays: ${{ fromJson(needs.GenerateTestMatrix.outputs.eks_addon_matrix) }} + permissions: + id-token: write + contents: read + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} + aws-region: us-west-2 + + - name: Terraform apply + uses: nick-fields/retry@v2 + with: + max_attempts: 1 + timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster + retry_wait_seconds: 5 + command: | + cd integration-tests/terraform/eks + + terraform init + latest_version=$(aws eks describe-addon-versions --addon-name=amazon-cloudwatch-observability \ + --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') + echo $latest_version + if terraform apply -var "addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + terraform destroy -auto-approve + else + terraform destroy -auto-approve && exit 1 + fi + + - name: Terraform destroy + if: ${{ cancelled() || failure() }} + uses: nick-fields/retry@v2 + with: + max_attempts: 3 + timeout_minutes: 8 + retry_wait_seconds: 5 + command: | + cd integration-tests/terraform/eks + + terraform destroy --auto-approve \ No newline at end of file diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index 1db25a10c..7065c0342 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -11,17 +11,18 @@ on: addon_name: required: true type: string + default: "amazon-cloudwatch-observability" description: "EKS addon name" addon_version: required: true type: string + default: "v1.1.0-eksbuild.1" description: "EKS addon version" run_in_beta: required: true type: boolean + default: true description: "Run in EKS Addon Beta environment" - schedule: - - cron: '0 10 * * *' # triggers the workflow every day at 10:00 hours concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} @@ -105,28 +106,13 @@ jobs: timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster retry_wait_seconds: 5 command: | - addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" - addon_version="${{ github.event.inputs.addon_version || 'latest' }}" - run_in_beta="${{ github.event.inputs.run_in_beta }}" - if [ "$run_in_beta" == "true" ]; then - run_in_beta=1 - else - run_in_beta=0 - fi - - # If the addon_version is 'latest', get the most recent version of the add-on from AWS - if [ "$addon_version" == "latest" ]; then - addon_version=$(aws eks describe-addon-versions --addon-name "$addon_name" --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') - fi - - cd integration-tests/terraform/eks + terraform init - - if terraform apply -var="beta=${{ run_in_beta }}" -var="addon_name=${{ addon_name }}" -var="addon_version=${{ addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then - terraform destroy -var="beta=${{ run_in_beta }}" -auto-approve + if terraform apply -var="beta=${{ github.event.inputs.run_in_beta }}" -var="addon_name=${{ github.event.inputs.addon_name }}" -var="addon_version=${{ github.event.inputs.addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" -auto-approve else - terraform destroy -var="beta=${{ run_in_beta }}" -auto-approve && exit 1 + terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" -auto-approve && exit 1 fi - name: Terraform destroy @@ -137,12 +123,6 @@ jobs: timeout_minutes: 8 retry_wait_seconds: 5 command: | - run_in_beta="${{ github.event.inputs.run_in_beta }}" - if [ "$run_in_beta" == "true" ]; then - run_in_beta=1 # true - else - run_in_beta=0 # false - fi cd integration-tests/terraform/eks - terraform destroy -var="beta=${{ run_in_beta }}" --auto-approve + terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" --auto-approve \ No newline at end of file diff --git a/integration-tests/generator/k8s_versions_matrix.json b/integration-tests/generator/k8s_versions_matrix.json index 1b250f5c7..aedb38820 100644 --- a/integration-tests/generator/k8s_versions_matrix.json +++ b/integration-tests/generator/k8s_versions_matrix.json @@ -1,4 +1,25 @@ [ + { + "k8sVersion": "1.24" + }, + { + "k8sVersion": "1.25" + }, + { + "k8sVersion": "1.26" + }, + { + "k8sVersion": "1.27" + }, + { + "k8sVersion": "1.28" + }, + { + "k8sVersion": "1.29" + }, + { + "k8sVersion": "1.30" + }, { "k8sVersion": "1.31" }