{"id":26419047,"url":"https://github.com/shivamkumar2002/personal-k8s-cluster","last_synced_at":"2026-04-15T12:36:57.852Z","repository":{"id":259727990,"uuid":"879255923","full_name":"ShivamKumar2002/personal-k8s-cluster","owner":"ShivamKumar2002","description":"Personal Kubernetes cluster managed using GitOps principles with ArgoCD.","archived":false,"fork":false,"pushed_at":"2025-06-16T15:31:44.000Z","size":280,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-16T16:38:55.328Z","etag":null,"topics":["argo-cd","argocd","gitops","kubernetes"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShivamKumar2002.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-27T12:35:01.000Z","updated_at":"2025-05-29T18:02:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"c50823b3-d0af-4008-a3e1-d9615e3f6a96","html_url":"https://github.com/ShivamKumar2002/personal-k8s-cluster","commit_stats":null,"previous_names":["shivamkumar2002/personal-k8s-cluster"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ShivamKumar2002/personal-k8s-cluster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShivamKumar2002%2Fpersonal-k8s-cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShivamKumar2002%2Fpersonal-k8s-cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShivamKumar2002%2Fpersonal-k8s-cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShivamKumar2002%2Fpersonal-k8s-cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShivamKumar2002","download_url":"https://codeload.github.com/ShivamKumar2002/personal-k8s-cluster/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShivamKumar2002%2Fpersonal-k8s-cluster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260988951,"owners_count":23093590,"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":["argo-cd","argocd","gitops","kubernetes"],"created_at":"2025-03-18T01:59:59.771Z","updated_at":"2026-04-15T12:36:52.816Z","avatar_url":"https://github.com/ShivamKumar2002.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Kubernetes Cluster GitOps Repository\n\nThis repository contains the declarative configuration for my personal Kubernetes cluster, managed using GitOps principles with [ArgoCD](https://argo-cd.readthedocs.io/en/stable/). The setup leverages ArgoCD's ability to automatically sync and deploy applications based on the state defined in this repository.\n\n\n## Important Note\n\nThis GitOps repository is tailored to my personal Kubernetes cluster setup and preferences. While it can serve as a valuable reference or starting point, it's not intended for direct use in other environments. If you find this structure and approach helpful:\n\n- Consider forking this repository and adapting it to your specific needs.\n- Use it as inspiration for your own GitOps setup, incorporating the parts that align with your requirements.\n- Remember to review and modify all configurations, before applying them to your own cluster.\n\n\n## Getting Started\n\n- Fork this repository or create a new one based on this structure.\n- Customize the configurations to match your cluster setup and requirements.\n- Ensure you have a Kubernetes cluster set up and running.\n- Install ArgoCD on your cluster using the files in the `cluster/argocd/` directory.\n- Configure ArgoCD to use your customized repository as its source of truth.\n- Make sure to update the relevant Application resources in the `cluster/bootstrap/` directory to point to your repository.\n- Apply the bootstrap applications from the `cluster/bootstrap/` directory to start managing your cluster with ArgoCD.\n\n\n## Repository Structure\n\nThe repository is organized as follows:\n\n```\n.\n|--- README.md\n|--- cluster/\n    |--- main.yaml\n    |\n    |--- apps/\n    |   |--- category1/\n    |   |   |--- app1/\n    |   |   |   |--- kustomization.yaml\n    |   |   |--- app2/\n    |   |       |--- kustomization.yaml\n    |   |       |--- values.yaml\n    |   |--- category2/\n    |       |--- app3/\n    |           |--- values.yaml\n    |\n    |--- argocd/\n    |   |--- kustomization.yaml\n    |   |--- namespace.yaml\n    |   |--- values.yaml\n    |\n    |--- bootstrap/\n        |--- category1/\n        |   |--- app1.yaml\n        |   |--- app2.yaml\n        |--- category2/\n            |--- app3.yaml\n```\n\n### cluster/\n\nThis directory contains all the Kubernetes manifests and configuration files for the cluster.\n\n### cluster/main.yaml\n\nThe `cluster/main.yaml` file serves as the primary entry point for ArgoCD in this GitOps setup. It defines an ArgoCD Application resource that targets the `cluster/bootstrap/` directory. This Application is configured to recursively apply all Application resources found within the bootstrap directory. By using the `directory.recurse: true` option, it ensures that all nested Application definitions are processed. The `main.yaml` file also specifies important sync policies, such as automated pruning and self-healing, which help maintain the desired cluster state. Additionally, it sets up server-side apply and namespace creation options, facilitating a smooth deployment process. This centralized approach allows for efficient management of the entire cluster configuration through a single ArgoCD Application.\n\n#### cluster/apps/\n\nThe `cluster/apps/` directory contains contains folders for individual applications or services. Each application folder may have:\n\n- A `kustomization.yaml` file for Kustomize-based deployments.\n- Kubernetes manifest files for direct application.\n- Helm values files (`values.yaml`) for Helm-based deployments.\n- Any additional files and configurations required for that specific application or service.\n\nThis structure allows for flexible deployment strategies, including direct manifest application, Kustomize overlays, and Helm chart deployments.\n\n#### cluster/argocd/\n\nThe `cluster/argocd/` directory contains the necessary files for deploying ArgoCD itself on the cluster. This includes the core ArgoCD components and any additional configurations or customizations specific to this setup.\n\n#### cluster/bootstrap/\n\nThe `bootstrap/` directory contains YAML files defining ArgoCD `Application` (`argoproj.io/v1alpha1/Application`) resources. These Application resources define how ArgoCD manages the specific app/service in the cluster.\n\n\n## How ArgoCD Works in This Setup\n\nThis repository uses the [App of Apps](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#app-of-apps) pattern with ArgoCD to manage the cluster state. Here's how it works:\n\n- The main entry point is defined in `cluster/main.yaml` file, which is an ArgoCD Application that points to the `cluster/bootstrap/` directory.\n\n- ArgoCD applies the `cluster/main.yaml` Application, which then recursively applies all Application resources found in the `cluster/bootstrap/` directory.\n\n- Each Application in `cluster/bootstrap/` typically points to a corresponding folder under `cluster/apps/`.\n\n- ArgoCD then processes each of these Applications:\n   - It applies any Kubernetes manifest files found in the specified `cluster/apps/` subdirectory.\n   - It also applies any Manifests or Kustomizations defined within each Application's spec.\n\nThis setup provides several benefits:\n- Clear separation between application definitions (`cluster/apps/`) and deployment instructions (`cluster/bootstrap/`).\n- Scalable and maintainable GitOps structure.\n- Easy addition or removal of entire applications by modifying the `cluster/bootstrap/` directory.\n- Centralized management of all cluster applications through a single ArgoCD Application (`cluster/main.yaml`).\n\nTo make changes to the cluster:\n\n1. Modify the relevant files in `cluster/apps/` or `cluster/bootstrap/`.\n2. Commit and push your changes.\n3. ArgoCD will automatically detect the changes and apply them to the cluster, ensuring the desired state matches the repository state.\n\nThis approach allows for efficient management of multiple applications in a Kubernetes cluster while adhering to GitOps principles.\n\n\n## Best Practices\n\n- Always use declarative configuration.\n- Utilize Kustomize overlays for managing environment-specific variations.\n- Keep sensitive information out of the repository. Use [External Secrets Operator](https://external-secrets.io/latest/) or a similar solution for managing secrets.\n- Regularly update applications and ArgoCD to the latest stable versions.\n\n\n## Contributing\n\nContributions are welcome! If you'd like to fix an issue, please follow these steps:\n\n- Fork the repository.\n- Create a new branch.\n- Add and test your fix.\n- Commit and push your changes.\n- Submit a pull request to this repository.\n\n## Support\n\nFor any questions or issues, please open an issue in this repository.\n\n## Inspirations\n\n- [clearlybaffled/homelab](https://github.com/clearlybaffled/homelab)\n- [onedr0p/home-ops](https://github.com/onedr0p/home-ops)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshivamkumar2002%2Fpersonal-k8s-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshivamkumar2002%2Fpersonal-k8s-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshivamkumar2002%2Fpersonal-k8s-cluster/lists"}