{"id":26276679,"url":"https://github.com/jsabo/gremlin-demo","last_synced_at":"2025-09-13T03:33:01.153Z","repository":{"id":258696924,"uuid":"868993712","full_name":"jsabo/gremlin-demo","owner":"jsabo","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-13T01:19:23.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-26T18:44:19.619Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jsabo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-07T14:36:04.000Z","updated_at":"2025-06-13T01:19:27.000Z","dependencies_parsed_at":"2025-05-01T14:24:21.307Z","dependency_job_id":"fcc8daa5-c973-4d79-b322-32ff2010a670","html_url":"https://github.com/jsabo/gremlin-demo","commit_stats":null,"previous_names":["jsabo/tfstacks-aws","jsabo/gremlin-demo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jsabo/gremlin-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsabo%2Fgremlin-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsabo%2Fgremlin-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsabo%2Fgremlin-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsabo%2Fgremlin-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsabo","download_url":"https://codeload.github.com/jsabo/gremlin-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsabo%2Fgremlin-demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265820261,"owners_count":23833563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-14T11:19:01.475Z","updated_at":"2025-07-18T19:36:21.922Z","avatar_url":"https://github.com/jsabo.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gremlin Demo Environments\n\nThis repository provides infrastructure as code (IaC) to deploy managed Kubernetes clusters across multiple cloud providers, along with reliability tooling including **Gremlin**, **OpenTelemetry Demo**, **Honeycomb**, and **Dynatrace**.\n\n## 🚀 Overview\n\nUse this repository to:\n\n* Provision managed Kubernetes clusters on AWS, Azure, and GCP.\n* Deploy Gremlin for fault injection testing.\n* Deploy the OpenTelemetry demo application to generate observability signals.\n* Configure Honeycomb and Dynatrace integrations.\n* Run scripts for chaos engineering experiments, health checks, and annotation management.\n\n## 🌐 Cloud Environments\n\nEach cloud-specific folder includes Terraform code to deploy a Kubernetes cluster and related components:\n\n* **AWS** (`./aws-us-east-1`)\n\n  * EKS + supporting components\n  * Helm charts for Gremlin, OpenTelemetry Demo, WordPress, and more\n\n* **Azure** (`./azure-northeurope`)\n\n  * AKS + VNet module\n  * Helm charts for Gremlin and OpenTelemetry Demo\n\n* **GCP** (`./gke-us-east1`)\n\n  * GKE (Standard + Autopilot)\n  * Helm charts for cert-manager, trust-manager, and RabbitMQ Operator\n\n## 🧰 Scripts\n\nScripts are available under the `./scripts/` directory for operational tasks:\n\n### 📎 Manage Annotations\n\n* **Storefront Annotations:**\n\n  ```bash\n  ./scripts/manage-storefront-annotations.sh \u003cadd|remove\u003e \u003cSuffix\u003e \u003cTeam ID\u003e \u003cNamespace\u003e\n  ```\n\n* **WordPress Annotations:**\n\n  ```bash\n  ./scripts/manage-wordpress-annotations.sh \u003cadd|remove\u003e \u003cSuffix\u003e \u003cTeam ID\u003e \u003cNamespace\u003e\n  ```\n\n### 🔬 Run Reliability Tests\n\n* Run tests for services in a given team:\n\n  ```bash\n  ./scripts/test-services.sh \u003cTeam ID\u003e\n  ```\n\n### 🛠 Other Utilities\n\n* `run-scenario.sh`: Execute saved Gremlin scenarios\n* `retrieve-services-scores.sh`: Fetch service health scores\n* `evaluate-service-health.sh`: Evaluate cluster and service health\n* `run-failure-flag-experiments.sh`: Test Failure Flags integration\n\n## 📊 Observability Integrations\n\n### 🐝 Honeycomb\n\nInteract with the Honeycomb API:\n\n* **List Triggers:**\n\n  ```bash\n  curl -s -X GET https://api.honeycomb.io/1/triggers/frontendproxy \\\n    -H \"X-Honeycomb-Team: $TF_VAR_honeycomb_storefront_api_key\" | jq .\n  ```\n\n* **Get SLOs:**\n\n  ```bash\n  curl -s -X GET https://api.honeycomb.io/1/slos/frontendproxy \\\n    -H \"X-Honeycomb-Team: $TF_VAR_honeycomb_storefront_api_key\" | jq .\n  ```\n\n* **Send Marker Example:**\n\n  ```json\n  {\n    \"message\": \"Gremlin ${ATTACK_TYPE} attack (ID: ${ATTACK_ID}) is ${STATUS} (Final Stage: ${STAGE}) from ${SOURCE}\",\n    \"type\": \"attack-${ATTACK_TYPE}\",\n    \"url\": \"https://app.gremlin.com/attacks/${ATTACK_ID}\"\n  }\n  ```\n\n### 📡 Dynatrace\n\n* Get synthetic monitor locations filtered by name and platform:\n\n  ```bash\n  curl -X GET -s -H \"Authorization: Api-Token $TF_VAR_dnyatrace_api_token\" \\\n    https://qpm46186.live.dynatrace.com/api/v1/synthetic/locations | \\\n    jq '.locations[] | select(.name==\"Dublin\" and .cloudPlatform==\"AMAZON_EC2\")'\n  ```\n\n## 📁 Directory Structure\n\n```\naws-us-east-1/         # AWS infrastructure and Helm values\nazure-northeurope/     # Azure infrastructure with VNet modules\ngke-us-east1/          # GCP infrastructure for GKE clusters\nscripts/               # Utility and automation scripts\nmanifests/             # Kubernetes manifests for demo apps\ndocs/                  # Documentation (e.g., Cloud Foundry on AWS)\n```\n\n## 📄 License\n\nThis project is licensed under the terms of the [MIT License](./LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsabo%2Fgremlin-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsabo%2Fgremlin-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsabo%2Fgremlin-demo/lists"}