From 121bdd50d95bc62859dd20bbd7d1c53d86444f24 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 10:31:05 -0700 Subject: [PATCH 01/42] windows eks test --- .github/workflows/dotnet-eks-canary.yml | 14 +- .github/workflows/dotnet-eks-windows-test.yml | 444 ++++++++++++++++++ terraform/dotnet/eks/windows/kubeconfig.tpl | 19 + terraform/dotnet/eks/windows/main.tf | 264 +++++++++++ terraform/dotnet/eks/windows/variables.tf | 54 +++ 5 files changed, 794 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/dotnet-eks-windows-test.yml create mode 100644 terraform/dotnet/eks/windows/kubeconfig.tpl create mode 100644 terraform/dotnet/eks/windows/main.tf create mode 100644 terraform/dotnet/eks/windows/variables.tf diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index e77e2ffca..d16f66bf3 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -34,4 +34,16 @@ jobs: with: aws-region: ${{ matrix.aws-region }} test-cluster-name: 'e2e-dotnet-canary-test' - caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' \ No newline at end of file + caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' + + eks-windows: + strategy: + fail-fast: false + matrix: + aws-region: ['ap-southeast-3'] + uses: ./.github/workflows/dotnet-eks-windows-test.yml + secrets: inherit + with: + aws-region: ${{ matrix.aws-region }} + test-cluster-name: 'e2e-dotnet-windows-canary-test' + caller-workflow-name: 'appsignals-dotnet-windows-e2e-eks-canary-test' \ No newline at end of file diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml new file mode 100644 index 000000000..6a8e04343 --- /dev/null +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -0,0 +1,444 @@ +## Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +## SPDX-License-Identifier: Apache-2.0 + +# This is a reusable workflow for running the Enablement test for Application Signals. +# It is meant to be called from another workflow. +# Read more about reusable workflows: https://docs.github.com/en/actions/using-workflows/reusing-workflows#overview +name: DotNet EKS Use Case +on: + workflow_call: + inputs: + aws-region: + required: true + type: string + test-cluster-name: + required: true + type: string + adot-image-name: + required: false + type: string + cw-agent-operator-tag: + required: false + type: string + caller-workflow-name: + required: true + type: string + outputs: + job-started: + value: ${{ jobs.dotnet-eks.outputs.job-started }} + validation-result: + value: ${{ jobs.dotnet-eks.outputs.validation-result }} + +permissions: + id-token: write + contents: read + +env: +# E2E_TEST_ACCOUNT_ID: ${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ACCOUNT_ID }} + E2E_TEST_ACCOUNT_ID: ${{ secrets.EKS_WINDOWS_TEST_ROLE_ID }} + E2E_TEST_ROLE_NAME: ${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ROLE_NAME }} + E2E_TEST_AWS_REGION: ${{ inputs.aws-region }} + CLUSTER_NAME: ${{ inputs.test-cluster-name }} + METRIC_NAMESPACE: ApplicationSignals + LOG_GROUP_NAME: /aws/application-signals/data + TEST_RESOURCES_FOLDER: ${GITHUB_WORKSPACE} + ADOT_IMAGE_NAME: ${{ inputs.adot-image-name }} + CW_AGENT_OPERATOR_TAG: ${{ inputs.cw-agent-operator-tag }} + +jobs: + dotnet-eks: + runs-on: ubuntu-latest + timeout-minutes: 30 + outputs: + job-started: ${{ steps.job-started.outputs.job-started }} + validation-result: ${{ steps.validation-result.outputs.validation-result }} + steps: + - name: Check if the job started + id: job-started + run: echo "job-started=true" >> $GITHUB_OUTPUT + + - uses: actions/checkout@v4 + with: + repository: 'aws-observability/aws-application-signals-test-framework' + ref: ${{ inputs.caller-workflow-name == 'main-build' && 'main' || github.ref }} + fetch-depth: 0 + + - name: Initiate Gradlew Daemon + id: initiate-gradlew + uses: ./.github/workflows/actions/execute_and_retry + continue-on-error: true + with: + command: "./gradlew" + cleanup: "./gradlew clean" + max_retry: 3 + sleep_time: 60 + + - name: Download enablement script + uses: ./.github/workflows/actions/execute_and_retry + with: + pre-command: "mkdir enablement-script && cd enablement-script" + command: "wget https://raw.githubusercontent.com/aws-observability/application-signals-demo/main/scripts/eks/appsignals/enable-app-signals.sh + && wget https://raw.githubusercontent.com/aws-observability/application-signals-demo/main/scripts/eks/appsignals/clean-app-signals.sh" + cleanup: "rm -f enable-app-signals.sh && rm -f clean-app-signals.sh" + post-command: "chmod +x enable-app-signals.sh && chmod +x clean-app-signals.sh" + + - name: Remove log group deletion command + if: always() + working-directory: enablement-script + run: | + delete_log_group="aws logs delete-log-group --log-group-name '${{ env.LOG_GROUP_NAME }}' --region \$REGION" + sed -i "s#$delete_log_group##g" clean-app-signals.sh + + - name: Generate testing id and dotnet sample app namespace + run: | + echo TESTING_ID="${{ env.E2E_TEST_AWS_REGION }}-${{ github.run_id }}-${{ github.run_number }}-windows" >> $GITHUB_ENV + echo DOTNET_SAMPLE_APP_NAMESPACE="ns-windows-${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} + aws-region: us-east-1 + + - name: Retrieve account + uses: aws-actions/aws-secretsmanager-get-secrets@v1 + with: + secret-ids: | +# ACCOUNT_ID, region-account/${{ env.E2E_TEST_AWS_REGION }} + DOTNET_MAIN_SAMPLE_APP_IMAGE, e2e-test/dotnet-main-sample-app-image + DOTNET_REMOTE_SAMPLE_APP_IMAGE, e2e-test/dotnet-remote-sample-app-image + + # ADOT_E2E_TEST_ROLE_ARN is used to access main build e2e test cluster + # E2E_TEST_ROLE_ARN is used to access canary e2e test cluster + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: +# role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} + role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} + aws-region: ${{ env.E2E_TEST_AWS_REGION }} + + # local directory to store the kubernetes config + - name: Create kubeconfig directory + run: mkdir -p ${{ github.workspace }}/.kube + + - name: Set KUBECONFIG environment variable + run: echo KUBECONFIG="${{ github.workspace }}/.kube/config" >> $GITHUB_ENV + + - name: Set up kubeconfig + run: aws eks update-kubeconfig --name ${{ env.CLUSTER_NAME }} --region ${{ env.E2E_TEST_AWS_REGION }} + + - name: Download and install eksctl + uses: ./.github/workflows/actions/execute_and_retry + with: + pre-command: 'mkdir ${{ github.workspace }}/eksctl' + command: 'curl -sLO "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_Linux_amd64.tar.gz" + && tar -xzf eksctl_Linux_amd64.tar.gz -C ${{ github.workspace }}/eksctl && rm eksctl_Linux_amd64.tar.gz' + cleanup: 'rm -f eksctl_Linux_amd64.tar.gz' + + - name: Add eksctl to Github Path + run: | + echo "${{ github.workspace }}/eksctl" >> $GITHUB_PATH + + # This step deletes lingering resources from previous test runs + - name: Delete all sample app namespaces + continue-on-error: true + timeout-minutes: 5 + run: kubectl get namespace | awk '/^ns-[0-9]+-[0-9]+/{print $1}' | xargs -r kubectl delete namespace + + - name: Create role for AWS access from the sample app + id: create_service_account + uses: ./.github/workflows/actions/execute_and_retry + with: + command: "eksctl create iamserviceaccount \ + --name service-account-${{ env.TESTING_ID }} \ + --namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} \ + --cluster ${{ inputs.test-cluster-name }} \ + --role-name eks-s3-access-${{ env.TESTING_ID }} \ + --attach-policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \ + --region ${{ env.E2E_TEST_AWS_REGION }} \ + --approve" + cleanup: "eksctl delete iamserviceaccount \ + --name service-account-${{ env.TESTING_ID }} \ + --namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} \ + --cluster ${{ inputs.test-cluster-name }} \ + --region ${{ env.E2E_TEST_AWS_REGION }}" + sleep_time: 60 + + - name: Set up terraform + uses: ./.github/workflows/actions/execute_and_retry + with: + command: "wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg" + post-command: 'echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list + && sudo apt update && sudo apt install terraform' + sleep_time: 60 + + - name: Initiate Terraform + uses: ./.github/workflows/actions/execute_and_retry + with: + command: "cd ${{ env.TEST_RESOURCES_FOLDER }}/terraform/dotnet/eks/linux && terraform init && terraform validate" + cleanup: "rm -rf .terraform && rm -rf .terraform.lock.hcl" + max_retry: 6 + sleep_time: 60 + + - name: Set Sample App Image + run: | + echo MAIN_SAMPLE_APP_IMAGE_ARN="${{ env.ACCOUNT_ID }}.dkr.ecr.${{ env.E2E_TEST_AWS_REGION }}.amazonaws.com/${{ env.DOTNET_MAIN_SAMPLE_APP_IMAGE }}" >> $GITHUB_ENV + echo REMOTE_SAMPLE_APP_IMAGE_ARN="${{ env.ACCOUNT_ID }}.dkr.ecr.${{ env.E2E_TEST_AWS_REGION }}.amazonaws.com/${{ env.DOTNET_REMOTE_SAMPLE_APP_IMAGE }}" >> $GITHUB_ENV + + - name: Deploy sample app via terraform and wait for the endpoint to come online + id: deploy-dotnet-app + working-directory: ./terraform/dotnet/eks/windows + run: | + # Attempt to deploy the sample app on an EKS instance and wait for its endpoint to come online. + # There may be occasional failures due to transitivity issues, so try up to 2 times. + # deployment_failed of 0 indicates that both the terraform deployment and the endpoint are running, while 1 indicates + # that it failed at some point + retry_counter=0 + max_retry=2 + while [ $retry_counter -lt $max_retry ]; do + echo "Attempt $retry_counter" + deployment_failed=0 + terraform apply -auto-approve \ + -var="test_id=${{ env.TESTING_ID }}" \ + -var="aws_region=${{ env.E2E_TEST_AWS_REGION }}" \ + -var="kube_directory_path=${{ github.workspace }}/.kube" \ + -var="eks_cluster_name=${{ env.CLUSTER_NAME }}" \ + -var="eks_cluster_context_name=$(kubectl config current-context)" \ + -var="test_namespace=${{ env.DOTNET_SAMPLE_APP_NAMESPACE }}" \ + -var="service_account_aws_access=service-account-${{ env.TESTING_ID }}" \ + -var="dotnet_app_image=${{ env.MAIN_SAMPLE_APP_IMAGE_ARN }}" \ + -var="dotnet_remote_app_image=${{ env.REMOTE_SAMPLE_APP_IMAGE_ARN }}" \ + -var='account_id=${{ env.ACCOUNT_ID }}' \ + || deployment_failed=$? + + if [ $deployment_failed -ne 0 ]; then + echo "Terraform deployment was unsuccessful. Will attempt to retry deployment." + fi + + # If the deployment_failed is still 0, then the terraform deployment succeeded and now try to connect to the endpoint + # after installing App Signals. Attempts to connect will be made for up to 10 minutes + if [ $deployment_failed -eq 0 ]; then + . ${{ env.TEST_RESOURCES_FOLDER }}/.github/workflows/util/execute_and_retry.sh + execute_and_retry 3 \ + "${{ env.TEST_RESOURCES_FOLDER }}/enablement-script/enable-app-signals.sh \ + ${{ env.CLUSTER_NAME }} \ + ${{ env.E2E_TEST_AWS_REGION }} \ + ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }}" \ + "${{ env.TEST_RESOURCES_FOLDER }}/enablement-script/clean-app-signals.sh \ + ${{ env.CLUSTER_NAME }} \ + ${{ env.E2E_TEST_AWS_REGION }} \ + ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} && \ + aws eks update-kubeconfig --name ${{ env.CLUSTER_NAME }} --region ${{ env.E2E_TEST_AWS_REGION }}" \ + 60 + + aws eks update-kubeconfig --region ${{ env.E2E_TEST_AWS_REGION }} --name ${{ env.CLUSTER_NAME }} + + execute_and_retry 2 "kubectl delete pods --all -n ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }}" "" 60 + execute_and_retry 2 "kubectl wait --for=condition=Ready --timeout=5m --request-timeout '5m' pod --all -n ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }}" "" 10 + fi + + # If the deployment_failed is 1 then either the terraform deployment or the endpoint connection failed, so first destroy the + # resources created from terraform and try again. + if [ $deployment_failed -eq 1 ]; then + echo "Cleaning up App Signal" + ${{ env.TEST_RESOURCES_FOLDER }}/enablement-script/clean-app-signals.sh \ + ${{ env.CLUSTER_NAME }} \ + ${{ env.E2E_TEST_AWS_REGION }} \ + ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + + # Running clean-app-signal.sh removes the current cluster from the config. Update the cluster again for subsequent runs. + aws eks update-kubeconfig --name ${{ env.CLUSTER_NAME }} --region ${{ env.E2E_TEST_AWS_REGION }} + + echo "Destroying terraform" + terraform destroy -auto-approve \ + -var="test_id=${{ env.TESTING_ID }}" \ + -var="aws_region=${{ env.E2E_TEST_AWS_REGION }}" \ + -var="kube_directory_path=${{ github.workspace }}/.kube" \ + -var="eks_cluster_name=${{ env.CLUSTER_NAME }}" \ + -var="eks_cluster_context_name=$(kubectl config current-context)" \ + -var="test_namespace=${{ env.DOTNET_SAMPLE_APP_NAMESPACE }}" \ + -var="service_account_aws_access=service-account-${{ env.TESTING_ID }}" \ + -var="dotnet_app_image=${{ env.MAIN_SAMPLE_APP_IMAGE_ARN }}" \ + -var="dotnet_remote_app_image=${{ env.REMOTE_SAMPLE_APP_IMAGE_ARN }}" + + retry_counter=$(($retry_counter+1)) + else + # If deployment succeeded, then exit the loop + break + fi + + if [ $retry_counter -ge $max_retry ]; then + echo "Max retry reached, failed to deploy terraform and connect to the endpoint. Exiting code" + exit 1 + fi + done + + - name: Get ECR to Patch + run: | + if [ "${{ github.event.repository.name }}" = "amazon-cloudwatch-agent" ]; then + echo PATCH_IMAGE_ARN="${{ secrets.AWS_ECR_PRIVATE_REGISTRY }}/cwagent-integration-test:${{ github.sha }}" >> $GITHUB_ENV + elif [ "${{ github.event.repository.name }}" = "amazon-cloudwatch-agent-operator" ]; then + echo PATCH_IMAGE_ARN="${{ vars.ECR_OPERATOR_STAGING_REPO }}:${{ env.CW_AGENT_OPERATOR_TAG }}" >> $GITHUB_ENV + elif [ "${{ github.event.repository.name }}" = "aws-otel-dotnet-instrumentation" ]; then + echo PATCH_IMAGE_ARN="${{ env.ADOT_IMAGE_NAME }}" >> $GITHUB_ENV + fi + + - name: Patch Image and Check Diff + id: patch-image + uses: ./.github/workflows/actions/patch_image_and_check_diff + with: + repository: ${{ github.event.repository.name }} + patch-image-arn: ${{ env.PATCH_IMAGE_ARN }} + sample-app-namespace: ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + + - name: Log Artifact Versions + run: | + echo "ADOT Image: Previous Version is: ${{ steps.patch-image.outputs.default-adot-image }}, Updated Version is: ${{ steps.patch-image.outputs.latest-adot-image }}"; + echo "CW Agent Image: Previous Version is: ${{ steps.patch-image.outputs.default-cw-agent-image }}, Updated Version is: ${{ steps.patch-image.outputs.latest-cw-agent-image }}"; + echo "CW Agent Operator Image: Previous Version is: ${{ steps.patch-image.outputs.default-cw-agent-operator-image }}, Updated Version is: ${{ steps.patch-image.outputs.latest-cw-agent-operator-image }}"; + echo "Fluent Bit Image: Version is: ${{ steps.patch-image.outputs.fluent-bit-image }}"; + + - name: Get Remote Service Deployment Name + uses: ./.github/workflows/actions/execute_and_retry + with: + command: echo "REMOTE_SERVICE_DEPLOYMENT_NAME=$(kubectl get deployments -n ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} --selector=app=remote-app -o jsonpath='{.items[0].metadata.name}')" >> $GITHUB_ENV + max_retry: 3 + sleep_time: 30 + + - name: Get Remote Service IP + uses: ./.github/workflows/actions/execute_and_retry + with: + command: echo "REMOTE_SERVICE_POD_IP=$(kubectl get pods -n ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} --selector=app=remote-app -o jsonpath='{.items[0].status.podIP}')" >> $GITHUB_ENV + max_retry: 3 + sleep_time: 30 + + - name: Get Sample App Endpoint + uses: ./.github/workflows/actions/execute_and_retry + with: + command: echo "APP_ENDPOINT=$(kubectl get pods -n ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} --selector=app=dotnet-app -o jsonpath='{.items[0].status.podIP}'):8080" >> $GITHUB_ENV + max_retry: 3 + sleep_time: 30 + + - name: Set endpoints for the traffic generator + uses: ./.github/workflows/actions/execute_and_retry + with: + command: kubectl set env -n ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} deployment/traffic-generator MAIN_ENDPOINT=${{ env.APP_ENDPOINT }} REMOTE_ENDPOINT=${{ env.REMOTE_SERVICE_POD_IP }} + max_retry: 3 + sleep_time: 30 + + - name: Initiate Gradlew Daemon + if: steps.initiate-gradlew == 'failure' + uses: ./.github/workflows/actions/execute_and_retry + continue-on-error: true + with: + command: "./gradlew" + cleanup: "./gradlew clean" + max_retry: 3 + sleep_time: 60 + + # Validation for application signals telemetry data + - name: Call endpoint and validate generated EMF logs + id: log-validation + if: steps.deploy-dotnet-app.outcome == 'success' && !cancelled() + run: ./gradlew validator:run --args='-c dotnet/eks/linux/log-validation.yml + --testing-id ${{ env.TESTING_ID }} + --endpoint http://${{ env.APP_ENDPOINT }} + --region ${{ env.E2E_TEST_AWS_REGION }} + --account-id ${{ env.ACCOUNT_ID }} + --metric-namespace ${{ env.METRIC_NAMESPACE }} + --log-group ${{ env.LOG_GROUP_NAME }} + --app-namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + --platform-info ${{ inputs.test-cluster-name }} + --service-name dotnet-application-${{ env.TESTING_ID }} + --remote-service-deployment-name ${{ env.REMOTE_SERVICE_DEPLOYMENT_NAME }} + --query-string ip=${{ env.REMOTE_SERVICE_POD_IP }}&testingId=${{ env.TESTING_ID }} + --rollup' + + - name: Call endpoints and validate generated metrics + id: metric-validation + if: (steps.deploy-dotnet-app.outcome == 'success' || steps.log-validation.outcome == 'failure') && !cancelled() + run: ./gradlew validator:run --args='-c dotnet/eks/linux/metric-validation.yml + --testing-id ${{ env.TESTING_ID }} + --endpoint http://${{ env.APP_ENDPOINT }} + --region ${{ env.E2E_TEST_AWS_REGION }} + --account-id ${{ env.ACCOUNT_ID }} + --metric-namespace ${{ env.METRIC_NAMESPACE }} + --log-group ${{ env.LOG_GROUP_NAME }} + --app-namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + --platform-info ${{ inputs.test-cluster-name }} + --service-name dotnet-application-${{ env.TESTING_ID }} + --remote-service-name dotnet-remote-application-${{ env.TESTING_ID }} + --remote-service-deployment-name ${{ env.REMOTE_SERVICE_DEPLOYMENT_NAME }} + --query-string ip=${{ env.REMOTE_SERVICE_POD_IP }}&testingId=${{ env.TESTING_ID }} + --rollup' + + - name: Call endpoints and validate generated traces + id: trace-validation + if: (steps.deploy-dotnet-app.outcome == 'success' || steps.log-validation.outcome == 'failure' || steps.metric-validation.outcome == 'failure') && !cancelled() + run: ./gradlew validator:run --args='-c dotnet/eks/linux/trace-validation.yml + --testing-id ${{ env.TESTING_ID }} + --endpoint http://${{ env.APP_ENDPOINT }} + --region ${{ env.E2E_TEST_AWS_REGION }} + --account-id ${{ env.ACCOUNT_ID }} + --log-group ${{ env.LOG_GROUP_NAME }} + --app-namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + --platform-info ${{ inputs.test-cluster-name }} + --service-name dotnet-application-${{ env.TESTING_ID }} + --remote-service-deployment-name ${{ env.REMOTE_SERVICE_DEPLOYMENT_NAME }} + --query-string ip=${{ env.REMOTE_SERVICE_POD_IP }}&testingId=${{ env.TESTING_ID }} + --rollup' + + - name: Save test results + if: always() + id: validation-result + run: | + if [ "${{ steps.log-validation.outcome }}" = "success" ] && [ "${{ steps.metric-validation.outcome }}" = "success" ] && [ "${{ steps.trace-validation.outcome }}" = "success" ]; then + echo "validation-result=success" >> $GITHUB_OUTPUT + else + echo "validation-result=failure" >> $GITHUB_OUTPUT + fi + + # Clean up Procedures + + - name: Clean Up Application Signals + if: always() + continue-on-error: true + working-directory: enablement-script + run: | + ./clean-app-signals.sh \ + ${{ inputs.test-cluster-name }} \ + ${{ env.E2E_TEST_AWS_REGION }} \ + ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + + # This step also deletes lingering resources from previous test runs + - name: Delete all sample app resources + if: always() + continue-on-error: true + timeout-minutes: 10 + run: kubectl delete namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} + + - name: Terraform destroy + if: always() + continue-on-error: true + timeout-minutes: 5 + working-directory: terraform/dotnet/eks/windows + run: | + terraform destroy -auto-approve \ + -var="test_id=${{ env.TESTING_ID }}" \ + -var="aws_region=${{ env.E2E_TEST_AWS_REGION }}" \ + -var="kube_directory_path=${{ github.workspace }}/.kube" \ + -var="eks_cluster_name=${{ inputs.test-cluster-name }}" \ + -var="test_namespace=${{ env.DOTNET_SAMPLE_APP_NAMESPACE }}" \ + -var="service_account_aws_access=service-account-${{ env.TESTING_ID }}" \ + -var="dotnet_app_image=${{ env.ACCOUNT_ID }}.dkr.ecr.${{ env.E2E_TEST_AWS_REGION }}.amazonaws.com/${{ secrets.APP_SIGNALS_DOTNET_E2E_FE_SA_IMG }}" \ + -var="dotnet_remote_app_image=${{ env.ACCOUNT_ID }}.dkr.ecr.${{ env.E2E_TEST_AWS_REGION }}.amazonaws.com/${{ secrets.APP_SIGNALS_DOTNET_E2E_RE_SA_IMG }}" + + - name: Remove aws access service account + if: always() + continue-on-error: true + run: | + eksctl delete iamserviceaccount \ + --name service-account-${{ env.TESTING_ID }} \ + --namespace ${{ env.DOTNET_SAMPLE_APP_NAMESPACE }} \ + --cluster ${{ inputs.test-cluster-name }} \ + --region ${{ env.E2E_TEST_AWS_REGION }} \ No newline at end of file diff --git a/terraform/dotnet/eks/windows/kubeconfig.tpl b/terraform/dotnet/eks/windows/kubeconfig.tpl new file mode 100644 index 000000000..a366b82cf --- /dev/null +++ b/terraform/dotnet/eks/windows/kubeconfig.tpl @@ -0,0 +1,19 @@ + +apiVersion: v1 +clusters: +- cluster: + certificate-authority-data: ${CA_DATA} + server: ${SERVER_ENDPOINT} + name: ${CLUSTER_NAME} +contexts: +- context: + cluster: ${CLUSTER_NAME} + user: terraform_user + name: ${CLUSTER_NAME} +current-context: ${CLUSTER_NAME} +kind: Config +preferences: {} +users: +- name: terraform_user + user: + token: ${TOKEN} \ No newline at end of file diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf new file mode 100644 index 000000000..ea4f67b70 --- /dev/null +++ b/terraform/dotnet/eks/windows/main.tf @@ -0,0 +1,264 @@ +# ------------------------------------------------------------------------ +# Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# A copy of the License is located at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# or in the "license" file accompanying this file. This file is distributed +# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +# express or implied. See the License for the specific language governing +# permissions and limitations under the License. +# ------------------------------------------------------------------------- + +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + } + + kubernetes = { + source = "hashicorp/kubernetes" + version = ">= 2.16.1" + } + + kubectl = { + source = "gavinbunney/kubectl" + version = ">= 1.7.0" + } + } +} + +provider "aws" { + region = var.aws_region +} + +# get eks cluster +data "aws_eks_cluster" "testing_cluster" { + name = var.eks_cluster_name +} +data "aws_eks_cluster_auth" "testing_cluster" { + name = var.eks_cluster_name +} + +# set up kubectl +provider "kubernetes" { + host = data.aws_eks_cluster.testing_cluster.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.testing_cluster.certificate_authority[0].data) + token = data.aws_eks_cluster_auth.testing_cluster.token +} + +provider "kubectl" { + // Note: copy from eks module. Please avoid use shorted-lived tokens when running locally. + // For more information: https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs#exec-plugins + host = data.aws_eks_cluster.testing_cluster.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.testing_cluster.certificate_authority[0].data) + token = data.aws_eks_cluster_auth.testing_cluster.token + load_config_file = false +} + +data "template_file" "kubeconfig_file" { + template = file("./kubeconfig.tpl") + vars = { + CLUSTER_NAME : var.eks_cluster_context_name + CA_DATA : data.aws_eks_cluster.testing_cluster.certificate_authority[0].data + SERVER_ENDPOINT : data.aws_eks_cluster.testing_cluster.endpoint + TOKEN = data.aws_eks_cluster_auth.testing_cluster.token + } +} + +resource "local_file" "kubeconfig" { + content = data.template_file.kubeconfig_file.rendered + filename = "${var.kube_directory_path}/config" +} + +### Setting up the sample app on the cluster + +resource "kubernetes_deployment" "dotnet_app_deployment" { + + metadata { + name = "dotnet-app-deployment-${var.test_id}" + namespace = var.test_namespace + labels = { + app = "dotnet-app" + } + } + + spec { + replicas = 1 + selector { + match_labels = { + app = "dotnet-app" + } + } + template { + metadata { + labels = { + app = "dotnet-app" + } + annotations = { + # these annotations allow for OTel Dotnet instrumentation + "instrumentation.opentelemetry.io/inject-dotnet": "true" + } + } + spec { + service_account_name = var.service_account_aws_access + toleration { + key = "windows" + operator = "Equal" + value = "true" + effect = "NoSchedule" + } + container { + name = "back-end" + image = var.dotnet_app_image + image_pull_policy = "Always" + env { + #inject the test id to service name for unique App Signals metrics + name = "OTEL_SERVICE_NAME" + value = "dotnet-application-${var.test_id}" + } + port { + container_port = 8080 + } + } + } + } + } +} + +resource "kubernetes_service" "dotnet_app_service" { + depends_on = [ kubernetes_deployment.dotnet_app_deployment ] + + metadata { + name = "dotnet-app-service" + namespace = var.test_namespace + } + spec { + type = "NodePort" + selector = { + app = "dotnet-app" + } + port { + protocol = "TCP" + port = 8080 + target_port = 8080 + node_port = 30100 + } + } +} + +# Set up the remote service + +resource "kubernetes_deployment" "dotnet_r_app_deployment" { + + metadata { + name = "dotnet-r-app-deployment-${var.test_id}" + namespace = var.test_namespace + labels = { + app = "remote-app" + } + } + + spec { + replicas = 1 + selector { + match_labels = { + app = "remote-app" + } + } + template { + metadata { + labels = { + app = "remote-app" + } + annotations = { + # these annotations allow for OTel Dotnet instrumentation + "instrumentation.opentelemetry.io/inject-dotnet" = "true" + } + } + spec { + service_account_name = var.service_account_aws_access + toleration { + key = "windows" + operator = "Equal" + value = "true" + effect = "NoSchedule" + } + container { + name = "back-end" + image = var.dotnet_remote_app_image + image_pull_policy = "Always" + port { + container_port = 8081 + } + } + } + } + } +} + +resource "kubernetes_service" "dotnet_r_app_service" { + depends_on = [ kubernetes_deployment.dotnet_r_app_deployment ] + + metadata { + name = "dotnet-r-app-service" + namespace = var.test_namespace + } + spec { + type = "NodePort" + selector = { + app = "remote-app" + } + port { + protocol = "TCP" + port = 8081 + target_port = 8081 + node_port = 30101 + } + } +} + +resource "kubernetes_deployment" "traffic_generator" { + metadata { + name = "traffic-generator" + namespace = var.test_namespace + labels = { + app = "traffic-generator" + } + } + spec { + replicas = 1 + selector { + match_labels = { + app = "traffic-generator" + } + } + template { + metadata { + labels = { + app = "traffic-generator" + } + } + spec { + toleration { + key = "windows" + operator = "Equal" + value = "true" + effect = "NoSchedule" + } + container { + name = "traffic-generator" + image = "${var.account_id}.dkr.ecr.${var.aws_region}.amazonaws.com/e2e-test-resource:traffic-generator" + image_pull_policy = "Always" + env { + name = "ID" + value = var.test_id + } + } + } + } + } +} diff --git a/terraform/dotnet/eks/windows/variables.tf b/terraform/dotnet/eks/windows/variables.tf new file mode 100644 index 000000000..dec01b9c7 --- /dev/null +++ b/terraform/dotnet/eks/windows/variables.tf @@ -0,0 +1,54 @@ +# ------------------------------------------------------------------------ +# Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# A copy of the License is located at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# or in the "license" file accompanying this file. This file is distributed +# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +# express or implied. See the License for the specific language governing +# permissions and limitations under the License. +# ------------------------------------------------------------------------- + +variable "test_id" { + default = "dummy-123" +} + +variable "kube_directory_path" { + default = "./.kube" +} + +variable "aws_region" { + default = "" +} + +variable "eks_cluster_name" { + default = "" +} + +variable "eks_cluster_context_name" { + default = "." +} + +variable "test_namespace" { + default = "dotnet-app-namespace" +} + +variable "service_account_aws_access" { + default = "dotnet-app-service-account" +} + +variable "dotnet_app_image" { + default = ":" +} + +variable "dotnet_remote_app_image" { + default = ":" +} + +variable "account_id" { + default = "" +} \ No newline at end of file From b721e4448130170f75b6d309cf9c7b6b02cbba14 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 10:34:45 -0700 Subject: [PATCH 02/42] remove some comments --- .github/workflows/dotnet-eks-windows-test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index 6a8e04343..30e7174ed 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -104,7 +104,6 @@ jobs: uses: aws-actions/aws-secretsmanager-get-secrets@v1 with: secret-ids: | -# ACCOUNT_ID, region-account/${{ env.E2E_TEST_AWS_REGION }} DOTNET_MAIN_SAMPLE_APP_IMAGE, e2e-test/dotnet-main-sample-app-image DOTNET_REMOTE_SAMPLE_APP_IMAGE, e2e-test/dotnet-remote-sample-app-image @@ -113,7 +112,6 @@ jobs: - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: -# role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} aws-region: ${{ env.E2E_TEST_AWS_REGION }} From 38703b51bb9ea1d565064c14bfa81c3fde4c576f Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 10:35:31 -0700 Subject: [PATCH 03/42] Dotnet Windows EKS on One Region --- .github/workflows/dotnet-eks-canary.yml | 30 +++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index d16f66bf3..01422dadf 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -10,6 +10,8 @@ on: schedule: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand + push: + "dotnet-windows-eks" concurrency: group: ${{ github.workflow }} @@ -21,20 +23,20 @@ permissions: jobs: - eks: - strategy: - fail-fast: false - matrix: - aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', - 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', - 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', - 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] - uses: ./.github/workflows/dotnet-eks-retry.yml - secrets: inherit - with: - aws-region: ${{ matrix.aws-region }} - test-cluster-name: 'e2e-dotnet-canary-test' - caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' +# eks: +# strategy: +# fail-fast: false +# matrix: +# aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', +# 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', +# 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', +# 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] +# uses: ./.github/workflows/dotnet-eks-retry.yml +# secrets: inherit +# with: +# aws-region: ${{ matrix.aws-region }} +# test-cluster-name: 'e2e-dotnet-canary-test' +# caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' eks-windows: strategy: From fc38a5b6060a02f9493eb11f561f7b66cb570315 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 10:36:13 -0700 Subject: [PATCH 04/42] Dotnet Windows EKS on One Region --- .github/workflows/dotnet-eks-canary.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 01422dadf..b66120bf6 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -11,11 +11,12 @@ on: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand push: - "dotnet-windows-eks" + branches: + - "dotnet-windows-eks" -concurrency: - group: ${{ github.workflow }} - cancel-in-progress: false +#concurrency: +# group: ${{ github.workflow }} +# cancel-in-progress: false permissions: id-token: write From bb552f73502ade788cd178c351dc170081c28b4c Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 10:48:28 -0700 Subject: [PATCH 05/42] Windows EKS Initiate --- .github/workflows/dotnet-eks-windows-test.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index 30e7174ed..dbc5e3c71 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -44,6 +44,8 @@ env: TEST_RESOURCES_FOLDER: ${GITHUB_WORKSPACE} ADOT_IMAGE_NAME: ${{ inputs.adot-image-name }} CW_AGENT_OPERATOR_TAG: ${{ inputs.cw-agent-operator-tag }} + DOTNET_MAIN_SAMPLE_APP_IMAGE: appsignals-dotnet-windows-main-service + DOTNET_REMOTE_SAMPLE_APP_IMAGE: appsignals-dotnet-windows-remote-service jobs: dotnet-eks: @@ -100,13 +102,6 @@ jobs: role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} aws-region: us-east-1 - - name: Retrieve account - uses: aws-actions/aws-secretsmanager-get-secrets@v1 - with: - secret-ids: | - DOTNET_MAIN_SAMPLE_APP_IMAGE, e2e-test/dotnet-main-sample-app-image - DOTNET_REMOTE_SAMPLE_APP_IMAGE, e2e-test/dotnet-remote-sample-app-image - # ADOT_E2E_TEST_ROLE_ARN is used to access main build e2e test cluster # E2E_TEST_ROLE_ARN is used to access canary e2e test cluster - name: Configure AWS Credentials From 41be43db4deb6b108dc4ede2285d8d301ed18942 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 10:53:52 -0700 Subject: [PATCH 06/42] Remove Over-Length Windows Account ID --- .github/workflows/dotnet-eks-windows-test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index dbc5e3c71..f34910b7c 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -93,8 +93,8 @@ jobs: - name: Generate testing id and dotnet sample app namespace run: | - echo TESTING_ID="${{ env.E2E_TEST_AWS_REGION }}-${{ github.run_id }}-${{ github.run_number }}-windows" >> $GITHUB_ENV - echo DOTNET_SAMPLE_APP_NAMESPACE="ns-windows-${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV + echo TESTING_ID="${{ env.E2E_TEST_AWS_REGION }}-${{ github.run_id }}-${{ github.run_number }}-w" >> $GITHUB_ENV + echo DOTNET_SAMPLE_APP_NAMESPACE="ns-w-${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 @@ -136,7 +136,7 @@ jobs: - name: Delete all sample app namespaces continue-on-error: true timeout-minutes: 5 - run: kubectl get namespace | awk '/^ns-[0-9]+-[0-9]+/{print $1}' | xargs -r kubectl delete namespace + run: kubectl get namespace | awk '/^ns-w-[0-9]+-[0-9]+/{print $1}' | xargs -r kubectl delete namespace - name: Create role for AWS access from the sample app id: create_service_account From 8819fc9c3edb5df687ecec46c8fc60ceef5a202f Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 11:01:01 -0700 Subject: [PATCH 07/42] Remove Over-Length Windows Account ID --- .github/workflows/dotnet-eks-windows-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index f34910b7c..ebe93e3fd 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -94,7 +94,7 @@ jobs: - name: Generate testing id and dotnet sample app namespace run: | echo TESTING_ID="${{ env.E2E_TEST_AWS_REGION }}-${{ github.run_id }}-${{ github.run_number }}-w" >> $GITHUB_ENV - echo DOTNET_SAMPLE_APP_NAMESPACE="ns-w-${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV + echo DOTNET_SAMPLE_APP_NAMESPACE="ns-w-${{ github.run_number }}" >> $GITHUB_ENV - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 From a585335859b3819c414123b5e93f1850314c2a42 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 11:06:45 -0700 Subject: [PATCH 08/42] Initiate Windows Terraform --- .github/workflows/dotnet-eks-windows-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index ebe93e3fd..364b2e5da 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -168,7 +168,7 @@ jobs: - name: Initiate Terraform uses: ./.github/workflows/actions/execute_and_retry with: - command: "cd ${{ env.TEST_RESOURCES_FOLDER }}/terraform/dotnet/eks/linux && terraform init && terraform validate" + command: "cd ${{ env.TEST_RESOURCES_FOLDER }}/terraform/dotnet/eks/windows && terraform init && terraform validate" cleanup: "rm -rf .terraform && rm -rf .terraform.lock.hcl" max_retry: 6 sleep_time: 60 From 912f40ff698e1025408460813206e916f675220e Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 11:15:22 -0700 Subject: [PATCH 09/42] Patching Windows Account ID --- .github/workflows/dotnet-eks-windows-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index 364b2e5da..43ee9bc50 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -46,6 +46,7 @@ env: CW_AGENT_OPERATOR_TAG: ${{ inputs.cw-agent-operator-tag }} DOTNET_MAIN_SAMPLE_APP_IMAGE: appsignals-dotnet-windows-main-service DOTNET_REMOTE_SAMPLE_APP_IMAGE: appsignals-dotnet-windows-remote-service + ACCOUNT_ID: ${{ secrets.EKS_WINDOWS_TEST_ROLE_ID }} jobs: dotnet-eks: From 1cee4aca19d51cf243090937d4da0ab4f80eb1c4 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 19:57:18 -0700 Subject: [PATCH 10/42] change taint --- terraform/dotnet/eks/windows/main.tf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf index ea4f67b70..eed2fa36a 100644 --- a/terraform/dotnet/eks/windows/main.tf +++ b/terraform/dotnet/eks/windows/main.tf @@ -106,9 +106,9 @@ resource "kubernetes_deployment" "dotnet_app_deployment" { spec { service_account_name = var.service_account_aws_access toleration { - key = "windows" + key = "os" operator = "Equal" - value = "true" + value = "windows" effect = "NoSchedule" } container { @@ -182,9 +182,9 @@ resource "kubernetes_deployment" "dotnet_r_app_deployment" { spec { service_account_name = var.service_account_aws_access toleration { - key = "windows" + key = "os" operator = "Equal" - value = "true" + value = "windows" effect = "NoSchedule" } container { @@ -244,9 +244,9 @@ resource "kubernetes_deployment" "traffic_generator" { } spec { toleration { - key = "windows" + key = "os" operator = "Equal" - value = "true" + value = "windows" effect = "NoSchedule" } container { From 4d158cb4474afd93f2d647ab09bbdcd1b8d667d7 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 20:00:52 -0700 Subject: [PATCH 11/42] Change the Cluster That Be use By Windows EKS --- .github/workflows/dotnet-eks-canary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index b66120bf6..85d9b45a1 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -48,5 +48,5 @@ jobs: secrets: inherit with: aws-region: ${{ matrix.aws-region }} - test-cluster-name: 'e2e-dotnet-windows-canary-test' + test-cluster-name: 'eks-windows-manual' caller-workflow-name: 'appsignals-dotnet-windows-e2e-eks-canary-test' \ No newline at end of file From d9ad7ed86911f4597ecdc408f30c39f265ad9ce8 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 22:23:38 -0700 Subject: [PATCH 12/42] Add NodeSelector for windows EKS --- terraform/dotnet/eks/windows/main.tf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf index eed2fa36a..c47ec3709 100644 --- a/terraform/dotnet/eks/windows/main.tf +++ b/terraform/dotnet/eks/windows/main.tf @@ -111,6 +111,10 @@ resource "kubernetes_deployment" "dotnet_app_deployment" { value = "windows" effect = "NoSchedule" } + node_selector = { + kubernetes.io/os: "windows", + kubernetes.io/arch: "amd64" + } container { name = "back-end" image = var.dotnet_app_image @@ -180,6 +184,10 @@ resource "kubernetes_deployment" "dotnet_r_app_deployment" { } } spec { + node_selector = { + kubernetes.io/os: "windows", + kubernetes.io/arch: "amd64" + } service_account_name = var.service_account_aws_access toleration { key = "os" @@ -249,6 +257,10 @@ resource "kubernetes_deployment" "traffic_generator" { value = "windows" effect = "NoSchedule" } + node_selector = { + kubernetes.io/os: "windows", + kubernetes.io/arch: "amd64" + } container { name = "traffic-generator" image = "${var.account_id}.dkr.ecr.${var.aws_region}.amazonaws.com/e2e-test-resource:traffic-generator" From 6e82e1d231e0fe56e4633c2a6a582233b683ad54 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 22:29:10 -0700 Subject: [PATCH 13/42] Add NodeSelector for windows EKS --- terraform/dotnet/eks/windows/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf index c47ec3709..25d180646 100644 --- a/terraform/dotnet/eks/windows/main.tf +++ b/terraform/dotnet/eks/windows/main.tf @@ -112,8 +112,8 @@ resource "kubernetes_deployment" "dotnet_app_deployment" { effect = "NoSchedule" } node_selector = { - kubernetes.io/os: "windows", - kubernetes.io/arch: "amd64" + "kubernetes.io/os": "windows", + "kubernetes.io/arch": "amd64" } container { name = "back-end" From db7f22b2cc9b104c7d410563e6e25181af84f014 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 22:33:15 -0700 Subject: [PATCH 14/42] Add NodeSelector for windows EKS --- terraform/dotnet/eks/windows/main.tf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf index 25d180646..74603af9a 100644 --- a/terraform/dotnet/eks/windows/main.tf +++ b/terraform/dotnet/eks/windows/main.tf @@ -185,8 +185,8 @@ resource "kubernetes_deployment" "dotnet_r_app_deployment" { } spec { node_selector = { - kubernetes.io/os: "windows", - kubernetes.io/arch: "amd64" + "kubernetes.io/os": "windows", + "kubernetes.io/arch": "amd64" } service_account_name = var.service_account_aws_access toleration { @@ -258,8 +258,8 @@ resource "kubernetes_deployment" "traffic_generator" { effect = "NoSchedule" } node_selector = { - kubernetes.io/os: "windows", - kubernetes.io/arch: "amd64" + "kubernetes.io/os": "windows", + "kubernetes.io/arch": "amd64" } container { name = "traffic-generator" From c85dd88a1750a95a450aa5abec5aa7570c5b5cb1 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 22:34:08 -0700 Subject: [PATCH 15/42] change back to use original cluster --- .github/workflows/dotnet-eks-canary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 85d9b45a1..b66120bf6 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -48,5 +48,5 @@ jobs: secrets: inherit with: aws-region: ${{ matrix.aws-region }} - test-cluster-name: 'eks-windows-manual' + test-cluster-name: 'e2e-dotnet-windows-canary-test' caller-workflow-name: 'appsignals-dotnet-windows-e2e-eks-canary-test' \ No newline at end of file From c002bd8a12e289d055b5bfa181ca83391e5d0512 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Wed, 25 Sep 2024 22:41:42 -0700 Subject: [PATCH 16/42] Change Toleration --- terraform/dotnet/eks/windows/main.tf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf index 74603af9a..5f2d58c19 100644 --- a/terraform/dotnet/eks/windows/main.tf +++ b/terraform/dotnet/eks/windows/main.tf @@ -106,9 +106,9 @@ resource "kubernetes_deployment" "dotnet_app_deployment" { spec { service_account_name = var.service_account_aws_access toleration { - key = "os" + key = "windows" operator = "Equal" - value = "windows" + value = "true" effect = "NoSchedule" } node_selector = { @@ -190,9 +190,9 @@ resource "kubernetes_deployment" "dotnet_r_app_deployment" { } service_account_name = var.service_account_aws_access toleration { - key = "os" + key = "windows" operator = "Equal" - value = "windows" + value = "true" effect = "NoSchedule" } container { @@ -252,9 +252,9 @@ resource "kubernetes_deployment" "traffic_generator" { } spec { toleration { - key = "os" + key = "windows" operator = "Equal" - value = "windows" + value = "true" effect = "NoSchedule" } node_selector = { From d5dd66bc6acd04cb43dd07c4914787706511ca25 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:00:18 -0700 Subject: [PATCH 17/42] Revert "Dotnet Windows EKS on One Region" This reverts commit fc38a5b6060a02f9493eb11f561f7b66cb570315. --- .github/workflows/dotnet-eks-canary.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index b66120bf6..01422dadf 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -11,12 +11,11 @@ on: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand push: - branches: - - "dotnet-windows-eks" + "dotnet-windows-eks" -#concurrency: -# group: ${{ github.workflow }} -# cancel-in-progress: false +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: false permissions: id-token: write From 394b42cbc97ad0c8f81fd884ea59a1969bbc14b3 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:00:20 -0700 Subject: [PATCH 18/42] Revert "Dotnet Windows EKS on One Region" This reverts commit 38703b51bb9ea1d565064c14bfa81c3fde4c576f. --- .github/workflows/dotnet-eks-canary.yml | 30 ++++++++++++------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 01422dadf..d16f66bf3 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -10,8 +10,6 @@ on: schedule: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand - push: - "dotnet-windows-eks" concurrency: group: ${{ github.workflow }} @@ -23,20 +21,20 @@ permissions: jobs: -# eks: -# strategy: -# fail-fast: false -# matrix: -# aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', -# 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', -# 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', -# 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] -# uses: ./.github/workflows/dotnet-eks-retry.yml -# secrets: inherit -# with: -# aws-region: ${{ matrix.aws-region }} -# test-cluster-name: 'e2e-dotnet-canary-test' -# caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' + eks: + strategy: + fail-fast: false + matrix: + aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', + 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', + 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', + 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] + uses: ./.github/workflows/dotnet-eks-retry.yml + secrets: inherit + with: + aws-region: ${{ matrix.aws-region }} + test-cluster-name: 'e2e-dotnet-canary-test' + caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' eks-windows: strategy: From 95d66cf19380bd0ff8d92e7c80365efca191ff94 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:00:54 -0700 Subject: [PATCH 19/42] Build Windows Docker Image --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 4 ++-- sample-apps/dotnet/asp_remote_service/Dockerfile | 4 ++-- sample-apps/dotnet/docker-compose.yaml | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index 1817d7d4f..bbe28408a 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ RUN dotnet publish asp_frontend_service/*.csproj -c Release -o out -FROM mcr.microsoft.com/dotnet/aspnet:8.0 +FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app EXPOSE 8080 COPY --from=build-env /app/out . diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index 895d932f4..8d5fcb389 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ RUN dotnet publish asp_remote_service/*.csproj -c Release -o out -FROM mcr.microsoft.com/dotnet/aspnet:8.0 +FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app ENV ASPNETCORE_URLS=http://+:8081 EXPOSE 8081 diff --git a/sample-apps/dotnet/docker-compose.yaml b/sample-apps/dotnet/docker-compose.yaml index 70997973f..f2c78ca8a 100644 --- a/sample-apps/dotnet/docker-compose.yaml +++ b/sample-apps/dotnet/docker-compose.yaml @@ -4,6 +4,9 @@ version: '3' services: asp_frontend_service: image: dotnetsampleapp/frontend-service + dns: + - "8.8.8.8" + - "8.8.6.6" build: context: . dockerfile: asp_frontend_service/Dockerfile @@ -14,6 +17,9 @@ services: asp_remote_service: image: dotnetsampleapp/remote-service + dns: + - "8.8.8.8" + - "8.8.6.6" build: context: . dockerfile: asp_remote_service/Dockerfile From a95358379cb747aa3dbeefc8e1763f7526d36782 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:20:19 -0700 Subject: [PATCH 20/42] Build Windows Docker Image --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 2 +- sample-apps/dotnet/asp_remote_service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index bbe28408a..6354c7d65 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_frontend_service/*.csproj -c Release -o out +RUN dotnet publish *.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index 8d5fcb389..e5fa42edb 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_remote_service/*.csproj -c Release -o out +RUN dotnet publish *.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app From a549ce0ce90e8def396b98a114de17af48a6f410 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:21:12 -0700 Subject: [PATCH 21/42] Build Windows Docker Image --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 2 +- sample-apps/dotnet/asp_remote_service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index 6354c7d65..a03b83db2 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish *.csproj -c Release -o out +RUN dotnet publish asp_frontend_service.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index e5fa42edb..7f9c6e830 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish *.csproj -c Release -o out +RUN dotnet publish asp_remote_service.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app From 78bf129f5a947250f3a2ffde65eeaf1e9ab47196 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:22:14 -0700 Subject: [PATCH 22/42] Build Windows Docker Image --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 2 +- sample-apps/dotnet/asp_remote_service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index a03b83db2..9bc690778 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_frontend_service.csproj -c Release -o out +RUN dotnet publish asp_frontend_service/asp_frontend_service.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index 7f9c6e830..e2a21f362 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_remote_service.csproj -c Release -o out +RUN dotnet publish asp_remote_service/asp_remote_service.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app From f054bc5d0038cdc6fc68d27914164d0d2436c0a3 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:44:02 -0700 Subject: [PATCH 23/42] Revert "Revert "Dotnet Windows EKS on One Region"" This reverts commit 394b42cbc97ad0c8f81fd884ea59a1969bbc14b3. --- .github/workflows/dotnet-eks-canary.yml | 30 +++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index d16f66bf3..01422dadf 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -10,6 +10,8 @@ on: schedule: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand + push: + "dotnet-windows-eks" concurrency: group: ${{ github.workflow }} @@ -21,20 +23,20 @@ permissions: jobs: - eks: - strategy: - fail-fast: false - matrix: - aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', - 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', - 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', - 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] - uses: ./.github/workflows/dotnet-eks-retry.yml - secrets: inherit - with: - aws-region: ${{ matrix.aws-region }} - test-cluster-name: 'e2e-dotnet-canary-test' - caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' +# eks: +# strategy: +# fail-fast: false +# matrix: +# aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', +# 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', +# 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', +# 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] +# uses: ./.github/workflows/dotnet-eks-retry.yml +# secrets: inherit +# with: +# aws-region: ${{ matrix.aws-region }} +# test-cluster-name: 'e2e-dotnet-canary-test' +# caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' eks-windows: strategy: From 6c521a2302c9d559c235ac77dc5e8d59add1d1ee Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:44:05 -0700 Subject: [PATCH 24/42] Revert "Revert "Dotnet Windows EKS on One Region"" This reverts commit d5dd66bc6acd04cb43dd07c4914787706511ca25. --- .github/workflows/dotnet-eks-canary.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 01422dadf..b66120bf6 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -11,11 +11,12 @@ on: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand push: - "dotnet-windows-eks" + branches: + - "dotnet-windows-eks" -concurrency: - group: ${{ github.workflow }} - cancel-in-progress: false +#concurrency: +# group: ${{ github.workflow }} +# cancel-in-progress: false permissions: id-token: write From 0aef348f80285dc4c0b73d09b3df290649a49bbb Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 12:44:36 -0700 Subject: [PATCH 25/42] Do Not Use Windows For Traffic Generator --- terraform/dotnet/eks/windows/main.tf | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/terraform/dotnet/eks/windows/main.tf b/terraform/dotnet/eks/windows/main.tf index 5f2d58c19..7eae36a9c 100644 --- a/terraform/dotnet/eks/windows/main.tf +++ b/terraform/dotnet/eks/windows/main.tf @@ -251,16 +251,6 @@ resource "kubernetes_deployment" "traffic_generator" { } } spec { - toleration { - key = "windows" - operator = "Equal" - value = "true" - effect = "NoSchedule" - } - node_selector = { - "kubernetes.io/os": "windows", - "kubernetes.io/arch": "amd64" - } container { name = "traffic-generator" image = "${var.account_id}.dkr.ecr.${var.aws_region}.amazonaws.com/e2e-test-resource:traffic-generator" From 4048824010c56c4589299fc2c00f52ce5b9b888d Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:27:32 -0700 Subject: [PATCH 26/42] Seperate File for Windows Docker --- .../asp_frontend_service/Dockerfile_Windows | 10 +++++++ .../asp_remote_service/Dockerfile_Windows | 11 +++++++ .../dotnet/docker-compose-windows.yaml | 29 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 sample-apps/dotnet/asp_frontend_service/Dockerfile_Windows create mode 100644 sample-apps/dotnet/asp_remote_service/Dockerfile_Windows create mode 100644 sample-apps/dotnet/docker-compose-windows.yaml diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile_Windows b/sample-apps/dotnet/asp_frontend_service/Dockerfile_Windows new file mode 100644 index 000000000..9bc690778 --- /dev/null +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile_Windows @@ -0,0 +1,10 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env +WORKDIR /app +COPY . ./ +RUN dotnet publish asp_frontend_service/asp_frontend_service.csproj -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 +WORKDIR /app +EXPOSE 8080 +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "asp_frontend_service.dll"] \ No newline at end of file diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile_Windows b/sample-apps/dotnet/asp_remote_service/Dockerfile_Windows new file mode 100644 index 000000000..e2a21f362 --- /dev/null +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile_Windows @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env +WORKDIR /app +COPY . ./ +RUN dotnet publish asp_remote_service/asp_remote_service.csproj -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 +WORKDIR /app +ENV ASPNETCORE_URLS=http://+:8081 +EXPOSE 8081 +COPY --from=build-env /app/out . +ENTRYPOINT ["dotnet", "asp_remote_service.dll"] \ No newline at end of file diff --git a/sample-apps/dotnet/docker-compose-windows.yaml b/sample-apps/dotnet/docker-compose-windows.yaml new file mode 100644 index 000000000..f2c78ca8a --- /dev/null +++ b/sample-apps/dotnet/docker-compose-windows.yaml @@ -0,0 +1,29 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 +version: '3' +services: + asp_frontend_service: + image: dotnetsampleapp/frontend-service + dns: + - "8.8.8.8" + - "8.8.6.6" + build: + context: . + dockerfile: asp_frontend_service/Dockerfile + container_name: asp_frontend_service + restart: always + ports: + - "8080:8080" + + asp_remote_service: + image: dotnetsampleapp/remote-service + dns: + - "8.8.8.8" + - "8.8.6.6" + build: + context: . + dockerfile: asp_remote_service/Dockerfile + container_name: asp_remote_service + restart: always + ports: + - "8081:8081" \ No newline at end of file From 09728a7cdd42750ce55ec7928a8384114f833b48 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:27:37 -0700 Subject: [PATCH 27/42] Revert "Build Windows Docker Image" This reverts commit 78bf129f5a947250f3a2ffde65eeaf1e9ab47196. --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 2 +- sample-apps/dotnet/asp_remote_service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index 9bc690778..a03b83db2 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_frontend_service/asp_frontend_service.csproj -c Release -o out +RUN dotnet publish asp_frontend_service.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index e2a21f362..7f9c6e830 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_remote_service/asp_remote_service.csproj -c Release -o out +RUN dotnet publish asp_remote_service.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app From c390e4efbd61c81629a13d7ffd182ed04cddda39 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:27:44 -0700 Subject: [PATCH 28/42] Revert "Build Windows Docker Image" This reverts commit a549ce0ce90e8def396b98a114de17af48a6f410. --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 2 +- sample-apps/dotnet/asp_remote_service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index a03b83db2..6354c7d65 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_frontend_service.csproj -c Release -o out +RUN dotnet publish *.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index 7f9c6e830..e5fa42edb 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish asp_remote_service.csproj -c Release -o out +RUN dotnet publish *.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app From 984aad81b37261e6d43891ec5e417c0dc8a2a8b8 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:27:48 -0700 Subject: [PATCH 29/42] Revert "Build Windows Docker Image" This reverts commit a95358379cb747aa3dbeefc8e1763f7526d36782. --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 2 +- sample-apps/dotnet/asp_remote_service/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index 6354c7d65..bbe28408a 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish *.csproj -c Release -o out +RUN dotnet publish asp_frontend_service/*.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index e5fa42edb..8d5fcb389 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env WORKDIR /app COPY . ./ -RUN dotnet publish *.csproj -c Release -o out +RUN dotnet publish asp_remote_service/*.csproj -c Release -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 WORKDIR /app From eacfe19b85408cebff57697317747794f26c40f0 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:27:50 -0700 Subject: [PATCH 30/42] Revert "Build Windows Docker Image" This reverts commit 95d66cf19380bd0ff8d92e7c80365efca191ff94. --- sample-apps/dotnet/asp_frontend_service/Dockerfile | 4 ++-- sample-apps/dotnet/asp_remote_service/Dockerfile | 4 ++-- sample-apps/dotnet/docker-compose.yaml | 6 ------ 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/sample-apps/dotnet/asp_frontend_service/Dockerfile b/sample-apps/dotnet/asp_frontend_service/Dockerfile index bbe28408a..1817d7d4f 100644 --- a/sample-apps/dotnet/asp_frontend_service/Dockerfile +++ b/sample-apps/dotnet/asp_frontend_service/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env WORKDIR /app COPY . ./ RUN dotnet publish asp_frontend_service/*.csproj -c Release -o out -FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 +FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app EXPOSE 8080 COPY --from=build-env /app/out . diff --git a/sample-apps/dotnet/asp_remote_service/Dockerfile b/sample-apps/dotnet/asp_remote_service/Dockerfile index 8d5fcb389..895d932f4 100644 --- a/sample-apps/dotnet/asp_remote_service/Dockerfile +++ b/sample-apps/dotnet/asp_remote_service/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env WORKDIR /app COPY . ./ RUN dotnet publish asp_remote_service/*.csproj -c Release -o out -FROM mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022 +FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app ENV ASPNETCORE_URLS=http://+:8081 EXPOSE 8081 diff --git a/sample-apps/dotnet/docker-compose.yaml b/sample-apps/dotnet/docker-compose.yaml index f2c78ca8a..70997973f 100644 --- a/sample-apps/dotnet/docker-compose.yaml +++ b/sample-apps/dotnet/docker-compose.yaml @@ -4,9 +4,6 @@ version: '3' services: asp_frontend_service: image: dotnetsampleapp/frontend-service - dns: - - "8.8.8.8" - - "8.8.6.6" build: context: . dockerfile: asp_frontend_service/Dockerfile @@ -17,9 +14,6 @@ services: asp_remote_service: image: dotnetsampleapp/remote-service - dns: - - "8.8.8.8" - - "8.8.6.6" build: context: . dockerfile: asp_remote_service/Dockerfile From ba80c73b24a5417b53e85877975962917f5539a0 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:29:59 -0700 Subject: [PATCH 31/42] Revert "remove some comments" This reverts commit b721e444 --- .github/workflows/dotnet-eks-windows-test.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index 43ee9bc50..cc4aa788a 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -103,11 +103,20 @@ jobs: role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} aws-region: us-east-1 + - name: Retrieve account + uses: aws-actions/aws-secretsmanager-get-secrets@v1 + with: + secret-ids: | +# ACCOUNT_ID, region-account/${{ env.E2E_TEST_AWS_REGION }} + DOTNET_MAIN_SAMPLE_APP_IMAGE, e2e-test/dotnet-main-sample-app-image + DOTNET_REMOTE_SAMPLE_APP_IMAGE, e2e-test/dotnet-remote-sample-app-image + # ADOT_E2E_TEST_ROLE_ARN is used to access main build e2e test cluster # E2E_TEST_ROLE_ARN is used to access canary e2e test cluster - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: +# role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} aws-region: ${{ env.E2E_TEST_AWS_REGION }} From 7f1d3866507bea14ea160c7164abdf785a6edede Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:31:53 -0700 Subject: [PATCH 32/42] Prepare to run on US-EAST-1 REGION --- .github/workflows/dotnet-eks-canary.yml | 2 +- .github/workflows/dotnet-eks-windows-test.yml | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index b66120bf6..8add5d590 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -43,7 +43,7 @@ jobs: strategy: fail-fast: false matrix: - aws-region: ['ap-southeast-3'] + aws-region: ['us-east-1'] uses: ./.github/workflows/dotnet-eks-windows-test.yml secrets: inherit with: diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index cc4aa788a..5c0e21776 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -46,7 +46,6 @@ env: CW_AGENT_OPERATOR_TAG: ${{ inputs.cw-agent-operator-tag }} DOTNET_MAIN_SAMPLE_APP_IMAGE: appsignals-dotnet-windows-main-service DOTNET_REMOTE_SAMPLE_APP_IMAGE: appsignals-dotnet-windows-remote-service - ACCOUNT_ID: ${{ secrets.EKS_WINDOWS_TEST_ROLE_ID }} jobs: dotnet-eks: @@ -107,17 +106,14 @@ jobs: uses: aws-actions/aws-secretsmanager-get-secrets@v1 with: secret-ids: | -# ACCOUNT_ID, region-account/${{ env.E2E_TEST_AWS_REGION }} - DOTNET_MAIN_SAMPLE_APP_IMAGE, e2e-test/dotnet-main-sample-app-image - DOTNET_REMOTE_SAMPLE_APP_IMAGE, e2e-test/dotnet-remote-sample-app-image + ACCOUNT_ID, region-account/${{ env.E2E_TEST_AWS_REGION }} # ADOT_E2E_TEST_ROLE_ARN is used to access main build e2e test cluster # E2E_TEST_ROLE_ARN is used to access canary e2e test cluster - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: -# role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} - role-to-assume: arn:aws:iam::${{ env.E2E_TEST_ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} + role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.E2E_TEST_ROLE_NAME }} aws-region: ${{ env.E2E_TEST_AWS_REGION }} # local directory to store the kubernetes config From 89b8c49d678407a5e323b9cb89a51b0469c9aef8 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:36:48 -0700 Subject: [PATCH 33/42] Create New Canary for Dotnet Windows --- .../workflows/dotnet-windows-eks-canary.yml | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/dotnet-windows-eks-canary.yml diff --git a/.github/workflows/dotnet-windows-eks-canary.yml b/.github/workflows/dotnet-windows-eks-canary.yml new file mode 100644 index 000000000..aaf3a7764 --- /dev/null +++ b/.github/workflows/dotnet-windows-eks-canary.yml @@ -0,0 +1,37 @@ +## Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +## SPDX-License-Identifier: Apache-2.0 + +## This workflow aims to run the Application Signals DotNet end-to-end tests as a canary to +## test the artifacts for Application Signals enablement. It will deploy a sample app and remote +## service onto an EKS cluster, call the APIs, and validate the generated telemetry, +## including logs, metrics, and traces. +name: Dotnet EKS Enablement Canary Testing +on: + schedule: + - cron: '* */1 * * *' # run the workflow every one hour + workflow_dispatch: # be able to run the workflow on demand + push: + branches: + - "dotnet-windows-eks" + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: false + +permissions: + id-token: write + contents: read + + +jobs: + eks-windows: + strategy: + fail-fast: false + matrix: + aws-region: ['ap-southeast-3'] + uses: ./.github/workflows/dotnet-eks-windows-test.yml + secrets: inherit + with: + aws-region: ${{ matrix.aws-region }} + test-cluster-name: 'e2e-dotnet-windows-canary-test' + caller-workflow-name: 'appsignals-dotnet-windows-e2e-eks-canary-test' \ No newline at end of file From c3947f6e9ef486de4df6969a9aea5d53169efb43 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:36:52 -0700 Subject: [PATCH 34/42] Revert "Dotnet Windows EKS on One Region" This reverts commit fc38a5b6060a02f9493eb11f561f7b66cb570315. --- .github/workflows/dotnet-eks-canary.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 8add5d590..010da2871 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -11,12 +11,11 @@ on: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand push: - branches: - - "dotnet-windows-eks" + "dotnet-windows-eks" -#concurrency: -# group: ${{ github.workflow }} -# cancel-in-progress: false +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: false permissions: id-token: write From ba736a23f6053800dcc6d4fe7072d252ca093916 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:36:55 -0700 Subject: [PATCH 35/42] Revert "Dotnet Windows EKS on One Region" This reverts commit 38703b51bb9ea1d565064c14bfa81c3fde4c576f. --- .github/workflows/dotnet-eks-canary.yml | 30 ++++++++++++------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 010da2871..214878e71 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -10,8 +10,6 @@ on: schedule: - cron: '*/15 * * * *' # run the workflow every 15 minutes workflow_dispatch: # be able to run the workflow on demand - push: - "dotnet-windows-eks" concurrency: group: ${{ github.workflow }} @@ -23,20 +21,20 @@ permissions: jobs: -# eks: -# strategy: -# fail-fast: false -# matrix: -# aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', -# 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', -# 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', -# 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] -# uses: ./.github/workflows/dotnet-eks-retry.yml -# secrets: inherit -# with: -# aws-region: ${{ matrix.aws-region }} -# test-cluster-name: 'e2e-dotnet-canary-test' -# caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' + eks: + strategy: + fail-fast: false + matrix: + aws-region: ['af-south-1','ap-east-1','ap-northeast-1','ap-northeast-2','ap-northeast-3','ap-south-1','ap-south-2','ap-southeast-1', + 'ap-southeast-2','ap-southeast-3','ap-southeast-4','ca-central-1','eu-central-1','eu-central-2','eu-north-1', + 'eu-south-1','eu-south-2','eu-west-1','eu-west-2','eu-west-3','il-central-1','me-central-1','me-south-1', 'sa-east-1', + 'us-east-1','us-east-2', 'us-west-1', 'us-west-2'] + uses: ./.github/workflows/dotnet-eks-retry.yml + secrets: inherit + with: + aws-region: ${{ matrix.aws-region }} + test-cluster-name: 'e2e-dotnet-canary-test' + caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' eks-windows: strategy: From 67197975f6932175a5d15b4e99915465eca4c157 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 15:37:30 -0700 Subject: [PATCH 36/42] Remove Windows out of Linux EKS Canary --- .github/workflows/dotnet-eks-canary.yml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/dotnet-eks-canary.yml b/.github/workflows/dotnet-eks-canary.yml index 214878e71..e77e2ffca 100644 --- a/.github/workflows/dotnet-eks-canary.yml +++ b/.github/workflows/dotnet-eks-canary.yml @@ -34,16 +34,4 @@ jobs: with: aws-region: ${{ matrix.aws-region }} test-cluster-name: 'e2e-dotnet-canary-test' - caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' - - eks-windows: - strategy: - fail-fast: false - matrix: - aws-region: ['us-east-1'] - uses: ./.github/workflows/dotnet-eks-windows-test.yml - secrets: inherit - with: - aws-region: ${{ matrix.aws-region }} - test-cluster-name: 'e2e-dotnet-windows-canary-test' - caller-workflow-name: 'appsignals-dotnet-windows-e2e-eks-canary-test' \ No newline at end of file + caller-workflow-name: 'appsignals-dotnet-e2e-eks-canary-test' \ No newline at end of file From ff8303bfef41b7eeebcb867efadad60a3a9ff9fa Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 16:38:06 -0700 Subject: [PATCH 37/42] Rename Dotnet Windows EKS Canary --- ...net-windows-eks-canary.yml => dotnet-eks-windows-canary.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{dotnet-windows-eks-canary.yml => dotnet-eks-windows-canary.yml} (95%) diff --git a/.github/workflows/dotnet-windows-eks-canary.yml b/.github/workflows/dotnet-eks-windows-canary.yml similarity index 95% rename from .github/workflows/dotnet-windows-eks-canary.yml rename to .github/workflows/dotnet-eks-windows-canary.yml index aaf3a7764..a4654d35e 100644 --- a/.github/workflows/dotnet-windows-eks-canary.yml +++ b/.github/workflows/dotnet-eks-windows-canary.yml @@ -5,7 +5,7 @@ ## test the artifacts for Application Signals enablement. It will deploy a sample app and remote ## service onto an EKS cluster, call the APIs, and validate the generated telemetry, ## including logs, metrics, and traces. -name: Dotnet EKS Enablement Canary Testing +name: Dotnet EKS Windows Enablement Canary Testing on: schedule: - cron: '* */1 * * *' # run the workflow every one hour From 2f635ceaca805eb2babc5b23f7e4f2c8efea2c9b Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 16:40:19 -0700 Subject: [PATCH 38/42] Use Correct Account and Region --- .github/workflows/dotnet-eks-windows-canary.yml | 2 +- .github/workflows/dotnet-eks-windows-test.yml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dotnet-eks-windows-canary.yml b/.github/workflows/dotnet-eks-windows-canary.yml index a4654d35e..7312184fa 100644 --- a/.github/workflows/dotnet-eks-windows-canary.yml +++ b/.github/workflows/dotnet-eks-windows-canary.yml @@ -28,7 +28,7 @@ jobs: strategy: fail-fast: false matrix: - aws-region: ['ap-southeast-3'] + aws-region: ['us-east-1'] uses: ./.github/workflows/dotnet-eks-windows-test.yml secrets: inherit with: diff --git a/.github/workflows/dotnet-eks-windows-test.yml b/.github/workflows/dotnet-eks-windows-test.yml index 5c0e21776..c0d3f0cbd 100644 --- a/.github/workflows/dotnet-eks-windows-test.yml +++ b/.github/workflows/dotnet-eks-windows-test.yml @@ -34,8 +34,7 @@ permissions: contents: read env: -# E2E_TEST_ACCOUNT_ID: ${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ACCOUNT_ID }} - E2E_TEST_ACCOUNT_ID: ${{ secrets.EKS_WINDOWS_TEST_ROLE_ID }} + E2E_TEST_ACCOUNT_ID: ${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ACCOUNT_ID }} E2E_TEST_ROLE_NAME: ${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ROLE_NAME }} E2E_TEST_AWS_REGION: ${{ inputs.aws-region }} CLUSTER_NAME: ${{ inputs.test-cluster-name }} From b89a99f0d692ba9fb6da453247a71c0f396f3802 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 17:01:33 -0700 Subject: [PATCH 39/42] Remove unneeded test code --- .github/workflows/dotnet-eks-windows-canary.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/dotnet-eks-windows-canary.yml b/.github/workflows/dotnet-eks-windows-canary.yml index 7312184fa..8357c0d76 100644 --- a/.github/workflows/dotnet-eks-windows-canary.yml +++ b/.github/workflows/dotnet-eks-windows-canary.yml @@ -10,9 +10,6 @@ on: schedule: - cron: '* */1 * * *' # run the workflow every one hour workflow_dispatch: # be able to run the workflow on demand - push: - branches: - - "dotnet-windows-eks" concurrency: group: ${{ github.workflow }} From 57fe6605bf644150d3ed754eb39a8fad80f06d9f Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 20:05:52 -0700 Subject: [PATCH 40/42] Revert "Remove unneeded test code" This reverts commit b89a99f0d692ba9fb6da453247a71c0f396f3802. --- .github/workflows/dotnet-eks-windows-canary.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/dotnet-eks-windows-canary.yml b/.github/workflows/dotnet-eks-windows-canary.yml index 8357c0d76..7312184fa 100644 --- a/.github/workflows/dotnet-eks-windows-canary.yml +++ b/.github/workflows/dotnet-eks-windows-canary.yml @@ -10,6 +10,9 @@ on: schedule: - cron: '* */1 * * *' # run the workflow every one hour workflow_dispatch: # be able to run the workflow on demand + push: + branches: + - "dotnet-windows-eks" concurrency: group: ${{ github.workflow }} From 05d5e76d6e1e71d132c83a0a3b4c1ce781b925c6 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 20:07:00 -0700 Subject: [PATCH 41/42] Use Manual Created EKS on Test Region --- .github/workflows/dotnet-eks-windows-canary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet-eks-windows-canary.yml b/.github/workflows/dotnet-eks-windows-canary.yml index 7312184fa..bed0b25f9 100644 --- a/.github/workflows/dotnet-eks-windows-canary.yml +++ b/.github/workflows/dotnet-eks-windows-canary.yml @@ -33,5 +33,5 @@ jobs: secrets: inherit with: aws-region: ${{ matrix.aws-region }} - test-cluster-name: 'e2e-dotnet-windows-canary-test' + test-cluster-name: 'eks-windows-manual' caller-workflow-name: 'appsignals-dotnet-windows-e2e-eks-canary-test' \ No newline at end of file From 0647c70c5ced65eb8721c4718763346e5087d714 Mon Sep 17 00:00:00 2001 From: Xinran Zhang Date: Thu, 26 Sep 2024 21:03:38 -0700 Subject: [PATCH 42/42] Remove Test Code --- .github/workflows/dotnet-eks-windows-canary.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/dotnet-eks-windows-canary.yml b/.github/workflows/dotnet-eks-windows-canary.yml index bed0b25f9..13538ecf0 100644 --- a/.github/workflows/dotnet-eks-windows-canary.yml +++ b/.github/workflows/dotnet-eks-windows-canary.yml @@ -10,9 +10,6 @@ on: schedule: - cron: '* */1 * * *' # run the workflow every one hour workflow_dispatch: # be able to run the workflow on demand - push: - branches: - - "dotnet-windows-eks" concurrency: group: ${{ github.workflow }}