{"id":21871500,"url":"https://github.com/niv-devops/circleci-argocd","last_synced_at":"2026-04-13T12:31:50.190Z","repository":{"id":262976789,"uuid":"887986558","full_name":"niv-devops/circleCI-argoCD","owner":"niv-devops","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-30T11:27:36.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T22:28:10.041Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/niv-devops.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}},"created_at":"2024-11-13T16:09:27.000Z","updated_at":"2024-11-30T11:27:39.000Z","dependencies_parsed_at":"2025-03-21T22:37:32.427Z","dependency_job_id":null,"html_url":"https://github.com/niv-devops/circleCI-argoCD","commit_stats":null,"previous_names":["niv-devops/circleci-argocd"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/niv-devops/circleCI-argoCD","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niv-devops%2FcircleCI-argoCD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niv-devops%2FcircleCI-argoCD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niv-devops%2FcircleCI-argoCD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niv-devops%2FcircleCI-argoCD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niv-devops","download_url":"https://codeload.github.com/niv-devops/circleCI-argoCD/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niv-devops%2FcircleCI-argoCD/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31753078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2024-11-28T06:14:25.010Z","updated_at":"2026-04-13T12:31:50.177Z","avatar_url":"https://github.com/niv-devops.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CircleCI pipeline to deploy with TF, EKS and ArgoCD\n\nThis repository contains the configuration and code to deploy a **Weather WebApp** to an **EKS (Elastic Kubernetes Service)** cluster using **ArgoCD** for GitOps-based continuous deployment. Additionally, we implement **Chaos Engineering** using **Netflix Chaos Monkey** and **Chaos Mesh** to ensure the resilience of the cluster by intentionally injecting failures.\n\n## Table of Contents\n- [Features](#features)\n- [Architecture Overview](#architecture-overview)\n- [Prerequisites](#prerequisites)\n- [Setup Instructions](#setup-instructions)\n  - [Clone the Repository](#1-clone-the-repository)\n  - [Configure AWS Credentials](#2-configure-aws-credentials)\n  - [Terraform Configuration](#3-terraform-configuration)\n  - [ArgoCD Setup](#4-argocd-setup)\n  - [Chaos Engineering Setup with Chaos Mesh](#5-chaos-engineering-setup-with-chaos-mesh)\n  - [CircleCI Configuration](#6-circleci-configuration)\n  - [Validate the System](#7-validate-the-system)\n- [Conclusion](#conclusion)\n\n## Features\n- **EKS Cluster Deployment**: Terraform-managed EKS cluster.\n- **ArgoCD Integration**: Continuous deployment of apps to Kubernetes using ArgoCD.\n- **Chaos Engineering**: Implemented using Netflix's Chaos Monkey and Chaos Mesh to simulate pod failures and ensure resilience.\n- **CI/CD Pipeline**: Automated deployment and resilience testing using CircleCI.\n\n## Architecture Overview\n1. **Terraform**: Manages the infrastructure, including the creation of the EKS cluster.\n2. **ArgoCD**: GitOps continuous deployment tool that syncs application deployments from Git to Kubernetes.\n3. **Chaos Engineering**: Utilizes **Chaos Mesh** to simulate failures in the EKS cluster, ensuring that the app is resilient to failures.\n4. **CircleCI**: Automates the build, test, and deployment processes, including resilience tests post-deployment.\n\n## Prerequisites\n\n- **AWS Account**: You need an AWS account with appropriate IAM permissions to create and manage EKS clusters.\n- **Kubernetes**: Kubernetes 1.21+ configured to interact with EKS.\n- **Terraform**: Version 1.1 or later for infrastructure provisioning.\n- **ArgoCD**: Set up ArgoCD on the EKS cluster for managing Kubernetes applications.\n- **CircleCI Account**: Used to automate the CI/CD pipeline.\n- **Docker**: For building and pushing the Docker container image.\n\n## Setup Instructions\n\n### 1. **Clone the Repository**\n\n```bash\ngit clone https://github.com/your-org/weather-webapp.git\ncd weather-webapp\n```\n\n### 2. **Configure AWS Credentials**\n\nMake sure your AWS credentials are set up either via the AWS CLI, environment variables, or IAM roles if running within AWS infrastructure.\n\n```bash\naws configure\n```\n\n### 3. **Terraform Configuration**\n\nTerraform is used to provision your EKS cluster.\n\n#### Initialize Terraform\n\n```bash\nterraform init\n```\n\n#### Apply Terraform Configuration\n\nThis will create the necessary AWS infrastructure, including the EKS cluster.\n\n```bash\nterraform apply -auto-approve\n```\n\n### 4. **ArgoCD Setup**\n\nArgoCD will be used for continuous delivery of the application to the EKS cluster. We assume you already have ArgoCD set up on your cluster. If not, refer to the [ArgoCD documentation](https://argoproj.github.io/argo-cd/) for installation instructions.\n\n#### Add ArgoCD App to Kubernetes\n\nArgoCD will manage the deployment of the application and chaos experiments. You need to set up an ArgoCD application that points to the `manifests` directory in your repository.\n\nCommit and push this file to your repository. ArgoCD will automatically deploy and manage the application based on the Git repository.\n\n### 5. **Chaos Engineering Setup with Chaos Mesh**\n\nTo simulate pod failures and validate that your app can recover, we use **Chaos Mesh**.\n\n#### Deploy Chaos Mesh\n\nApply the Chaos Mesh deployment YAML:\n\n```bash\nkubectl apply -f chaos-monkey-deployment.yaml\n```\n\nThis will deploy the Chaos Monkey pod in the `default` namespace. Ensure that it is running properly by checking the pods:\n\n```bash\nkubectl get pods -n default\n```\n\n#### Configure Chaos Experiment\n\nTo simulate random pod termination, create a Chaos Experiment YAML file (e.g., `chaos-monkey-experiment.yaml`) to run the chaos monkey experiment on your EKS cluster:\n\n#### Apply the Chaos Experiment\n\n```bash\nkubectl apply -f chaos-monkey-experiment.yaml\n```\n\nThis will randomly terminate a pod every minute.\n\n### 6. **CircleCI Configuration**\n\nYour CircleCI pipeline will handle the build, test, and deployment process. It will also run a resilience test post-deployment to verify the system's ability to handle failures caused by Chaos Monkey.\n\n### 7. **Validate the System**\n\nAfter the pipeline finishes, validate that the chaos experiments were executed and that the app was able to recover from the injected failure. You can do this by checking the logs of the pods and the status of the deployment.\n\n## Conclusion\n\nThis setup allows you to:\n\n- Automate the deployment of your **Weather WebApp** to an EKS cluster using **ArgoCD**.\n- Ensure the system can tolerate failures by introducing **Chaos Engineering**.\n- Continuously test the application's resilience via **CircleCI**.\n\nThis approach ensures high availability and reliability by simulating real-world failures and verifying that the system can self-heal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniv-devops%2Fcircleci-argocd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniv-devops%2Fcircleci-argocd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniv-devops%2Fcircleci-argocd/lists"}