This README provides instructions for deploying the LLM Benchmark Simulation Application to Amazon EKS (Elastic Kubernetes Service) using Helm and GitHub Actions.
- Overview
- Prerequisites
- Repository Structure
- Helm Chart
- GitHub Actions Workflow
- Deployment Steps
- Monitoring and Troubleshooting
- Cleaning Up
- License
The LLM Benchmark Simulation Application consists of three main components:
These services work together to simulate LLM usage, perform benchmarks, and provide an API for accessing benchmark results.
Before deploying the application, ensure you have the following:
- An AWS account with permissions to create and manage EKS clusters
- AWS CLI installed and configured
- kubectl installed
- Helm 3 installed
- An Amazon EKS cluster set up and running
- Amazon ECR repositories created for each service
- GitHub repository with your application code
Your repository should have the following structure:
.
├── .github
│ └── workflows
│ └── deploy-to-aws.yml
├── benchmark-api
│ └── Dockerfile
├── benchmarking
│ └── Dockerfile
├── simulation
│ └── Dockerfile
├── llm-benchsim-chart
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates
│ ├── benchmark-api
│ ├── benchmarking
│ ├── monitoring
│ ├── simulation
│ └── shared
└── README.md
The Helm chart (llm-benchsim-chart) defines the Kubernetes resources for deploying the application. Key files include:
Chart.yaml: Metadata about the chartvalues.yaml: Default configuration valuestemplates/: Kubernetes resource templates
Customize the values.yaml file to match your specific requirements.
The workflow file (.github/workflows/aws-deployment-pipeline.yml) automates the deployment process to aws. It performs the following steps:
- Builds Docker images for each service
- Pushes images to Amazon ECR
- Deploys the application to EKS using Helm
-
Set up GitHub Secrets
Add the following secrets to your GitHub repository:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYBENCHMARKING_DB_PASSWORDSIMULATION_DB_PASSWORDRABBITMQ_PASSWORD
-
Configure GitHub Actions Workflow
Update the
deploy-to-aws.ymlfile with your specific AWS region and EKS cluster name:env: AWS_REGION: us-west-2 # Change this to your AWS region EKS_CLUSTER_NAME: your-eks-cluster-name # Change this to your EKS cluster name
-
Trigger Deployment
The deployment will be triggered automatically on pushes to the
mainbranch. You can also manually trigger the workflow from the GitHub Actions tab. -
Monitor Deployment
Watch the GitHub Actions workflow execution for any errors or successes.
-
Use
kubectlto check the status of your pods:kubectl get pods -
View logs for a specific pod:
kubectl logs <pod-name> -
Use AWS CloudWatch for monitoring if configured
To remove the deployment:
-
Delete the Helm release:
helm uninstall llm-benchsim-chart -
Optionally, delete the EKS cluster if no longer needed:
eksctl delete cluster --name=<your-cluster-name>
Remember to delete any associated AWS resources (e.g., load balancers, ECR repositories) to avoid unnecessary costs.
For any issues or questions, please open an issue in the GitHub repository.
This project is licensed under the MIT License - see the LICENSE file for details.