Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Test Samples Workflow - Set up Test EKS Cluster for Dapr #2013

Merged
merged 2 commits into from
Jan 24, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 34 additions & 11 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -111,18 +111,11 @@ jobs:
RUN_TEST=true
fi

if [[ "${{ matrix.enableDapr }}" == "true" ]]; then
ENABLE_DAPR=true
else
ENABLE_DAPR=false
fi

# Set output variables to be used in the other jobs
echo "RUN_IDENTIFIER=${RUN_IDENTIFIER}" >> $GITHUB_OUTPUT
echo "TEST_AZURE_RESOURCE_GROUP=rg-${RUN_IDENTIFIER}" >> $GITHUB_OUTPUT
echo "TEST_EKS_CLUSTER_NAME=eks-${RUN_IDENTIFIER}" >> $GITHUB_OUTPUT
echo "RUN_TEST=${RUN_TEST}" >> $GITHUB_OUTPUT
echo "ENABLE_DAPR=${ENABLE_DAPR}" >> $GITHUB_OUTPUT
- name: Generate Radius version variables
id: gen-radius-version
if: steps.gen-id.outputs.RUN_TEST == 'true'
Expand Down Expand Up @@ -233,26 +226,56 @@ jobs:
if: steps.gen-id.outputs.RUN_TEST == 'true' && matrix.credential == 'aws'
id: create-eks
run: |
# Install eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin

# Create EKS cluster
eksctl create cluster \
--name ${{ steps.gen-id.outputs.TEST_EKS_CLUSTER_NAME }} \
--nodes-min 1 --nodes-max 2 --node-type t3.large \
--zones ${{ env.AWS_ZONES }} \
--managed \
--region ${{ env.AWS_REGION }}

# Wait for the EKS cluster to be active
while [[ "$(eksctl get cluster ${{ steps.gen-id.outputs.TEST_EKS_CLUSTER_NAME }} --region ${{ env.AWS_REGION }} -o json | jq -r .[0].Status)" != "ACTIVE" ]]; do
echo "Waiting for EKS cluster to be created..."
sleep 60
done

# Update kubeconfig
aws eks update-kubeconfig --region ${{ env.AWS_REGION }} --name ${{ steps.gen-id.outputs.TEST_EKS_CLUSTER_NAME }}
timeout-minutes: 60
continue-on-error: false
- name: Install Dapr
Copy link
Contributor Author

@kachawla kachawla Jan 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing this step since Dapr is installed by default with Radius now radius-project/radius#8033

if: steps.gen-id.outputs.RUN_TEST == 'true' && steps.gen-id.outputs.ENABLE_DAPR == 'true'
- name: Configure EKS for Dapr
if: steps.gen-id.outputs.RUN_TEST == 'true' && matrix.credential == 'aws'
run: |
helm repo add dapr https://dapr.github.io/helm-charts/
helm install dapr dapr/dapr --version=1.6 --namespace dapr-system --create-namespace --wait
# Fetch the node group name dynamically
NODEGROUP_NAME=$(eksctl get nodegroup \
--cluster ${{ steps.gen-id.outputs.TEST_EKS_CLUSTER_NAME }} \
--region ${{ env.AWS_REGION }} \
-o json | jq -r '.[0].Name')

# Fetch the security group ID for the EKS worker nodes
NODE_SECURITY_GROUP_ID=$(eksctl get nodegroup \
--cluster ${{ steps.gen-id.outputs.TEST_EKS_CLUSTER_NAME }} \
--name $NODEGROUP_NAME \
--region ${{ env.AWS_REGION }} \
-o json | jq -r '.[0].Resources.SecurityGroup.ID')
Comment on lines +254 to +265
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can consolidate this into a single step using the below command.

aws eks describe-cluster --name <cluster_name> --query 'cluster.resourcesVpcConfig.clusterSecurityGroupId' --region <region>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will follow up on this in a separate PR

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated here #2030. Thanks for the feedback.


# Authorize port 4000 for Dapr sidecar communication within the same security group
# https://docs.dapr.io/operations/hosting/kubernetes/cluster/setup-eks/#add-dapr-requirements-for-sidecar-access-and-default-storage-class
aws ec2 authorize-security-group-ingress \
--group-id $NODE_SECURITY_GROUP_ID \
--protocol tcp \
--port 4000 \
--source-group $NODE_SECURITY_GROUP_ID

# Add a default storage class
kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
timeout-minutes: 30
continue-on-error: false
- uses: oras-project/setup-oras@main
if: steps.gen-id.outputs.RUN_TEST == 'true'
with:
Expand Down
Loading