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 README #323

Merged
merged 2 commits into from
Oct 4, 2024
Merged
Show file tree
Hide file tree
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
60 changes: 0 additions & 60 deletions .github/workflows/code-format-validation.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Python Unit Tests
name: Python Validation

on:
pull_request:
Expand All @@ -8,7 +8,7 @@ on:
env:
PYTHON_MODULES_DIR: modules/python
jobs:
python-unit-tests:
python-validation:
runs-on: ubuntu-latest

steps:
Expand Down
40 changes: 0 additions & 40 deletions .github/workflows/terraform-validate.yml

This file was deleted.

71 changes: 71 additions & 0 deletions .github/workflows/terraform-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Terraform Validation

on:
pull_request:
paths:
- '**.tf'
- '**.tfvars'

env:
TERRAFORM_AZURE_MODULES_DIR: modules/terraform/azure
TERRAFORM_AWS_MODULES_DIR: modules/terraform/aws
jobs:
terraform-validation:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.5.6

- name: Terraform Format Check
if: always()
run: terraform fmt --check -recursive --diff

- name: Terraform Azure Validation Check
if: always()
working-directory: ${{ env.TERRAFORM_AZURE_MODULES_DIR }}
run: |
terraform init
terraform validate
- name: Terraform AWS Validation Check
if: always()
working-directory: ${{ env.TERRAFORM_AWS_MODULES_DIR }}
run: |
terraform init
terraform validate

- uses: terraform-linters/setup-tflint@v4
name: Setup TFLint

- name: Show version
run: tflint --version

- name: Init TFLint
run: tflint --init
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Terraform Lint Check
run: tflint --recursive --config "$GITHUB_WORKSPACE/.tflint.hcl" --minimum-failure-severity=warning

- name: Scenario name check
if: always()
run: |
set -eu
SCENARIO_NAME_MAX_LENGTH=30
check_failed=false
scenario_names=$(find $GITHUB_WORKSPACE/scenarios/ -name "*.tfvars" | awk -F'/' '{print $9}' | sort -u)
for name in $scenario_names; do
if [ ${#name} -gt $SCENARIO_NAME_MAX_LENGTH ]; then
echo "::error::Scenario folder name $name is greater than $SCENARIO_NAME_MAX_LENGTH characters. Please rename the folder to a shorter name."
check_failed=true
fi
done
if [ "$check_failed" = true ]; then
exit 1
fi
29 changes: 29 additions & 0 deletions .github/workflows/yaml-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: YAML Validation

on:
pull_request:

jobs:
yaml-validation:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Python Version Check
run: python --version

- name: Install Yamllint
run: pip install yamllint

- name: Yamllint Version Check
run: yamllint --version

- name: Yamllint Check
run: yamllint -c $GITHUB_WORKSPACE/.yamllint . --no-warnings
25 changes: 17 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
[![Terraform Validation](https://github.com/Azure/telescope/actions/workflows/terraform-validation.yml/badge.svg)](https://github.com/Azure/telescope/actions/workflows/terraform-validation.yml) [![Python Validation](https://github.com/Azure/telescope/actions/workflows/python-validation.yml/badge.svg)](https://github.com/Azure/telescope/actions/workflows/python-validation.yml) [![YAML Validation](https://github.com/Azure/telescope/actions/workflows/yaml-validation.yml/badge.svg)](https://github.com/Azure/telescope/actions/workflows/yaml-validation.yml) [![Security Scan](https://github.com/Azure/telescope/actions/workflows/security-scan.yml/badge.svg)](https://github.com/Azure/telescope/actions/workflows/security-scan.yml)

# Telescope

Telescope is a framework designed for testing and comparing cloud products and features, specifically evaluating functionality and performance. It empowers users to make data-driven decisions on their multi-cloud strategy, currently supporting Azure and AWS, with GCP support coming soon.
Telescope is a framework built to test and compare cloud products and services, focusing on evaluating scalability and performance. It enables users to make informed, data-driven decisions for their multi-cloud strategies. Currently, Telescope supports Azure and AWS, with plans to include GCP in the near future.

The currently available test scenarios are:
1. Kubernetes API server benchmark using [kperf](https://github.com/Azure/kperf/pkgs/container/kperf)
2. Kubernetes Autoscaling benchmark using [clusterloader2](https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/)

with more coming soon.

## Design
![design](./docs/imgs/design.png)
As the achitecture diagram above shows, Telescope streamlines the evaluation process through five key steps:

## Achitecture
![arch](./docs/imgs/arch.png)
As the achitecture diagram above shows, Telescope streamlines the evaluation process in 5 steps:
1. Provision Resources
2. Validate Resources
3. Execute Tests
4. Cleanup Resources
5. Publish Results

and provides 3 major re-usable components:
Telescope offers three primary reusable components:

* Terraform modules to manage target test resources
* Azure Pipeline to ochestrate and automate test runs
* Azure Blob Storage, Event Hub and Data Explorer for test reporting
1. **Terraform modules** to manage test resource setup and provide reproducibility.
2. **Python modules** for seamless integration with testing and measurement tools.
3. **Azure services** including Pipeline, Blob Storage, Event Hub, and Data Explorer for continuous monitoring.

## Quick Start
1. Setup test framework by running commands as follows:
Expand Down
Binary file removed docs/imgs/arch.png
Binary file not shown.
Binary file added docs/imgs/design.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.