{"id":28323344,"url":"https://github.com/thatmlopsguy/dokaseca-terraform","last_synced_at":"2025-06-24T00:31:00.846Z","repository":{"id":279379418,"uuid":"931117107","full_name":"thatmlopsguy/dokaseca-terraform","owner":"thatmlopsguy","description":"GitOps Configuration and documentation of my Kubernetes homelab powered by ArgoCD","archived":false,"fork":false,"pushed_at":"2025-05-28T17:32:13.000Z","size":2222,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T23:53:01.286Z","etag":null,"topics":["argocd","devops","dokaseca","gitops","gitops-bridge","homelab","k8s","kubernetes","platform-engineering","terraform"],"latest_commit_sha":null,"homepage":"https://thatmlopsguy.github.io/dokaseca-terraform/","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thatmlopsguy.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":"2025-02-11T18:39:26.000Z","updated_at":"2025-05-24T12:38:57.000Z","dependencies_parsed_at":"2025-04-17T21:41:36.364Z","dependency_job_id":"8913d1f0-5ff8-41a5-88b5-86e0092161ba","html_url":"https://github.com/thatmlopsguy/dokaseca-terraform","commit_stats":null,"previous_names":["thatmlopsguy/k8s-homelab","thatmlopsguy/dokaseca-terraform"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thatmlopsguy/dokaseca-terraform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fdokaseca-terraform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fdokaseca-terraform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fdokaseca-terraform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fdokaseca-terraform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thatmlopsguy","download_url":"https://codeload.github.com/thatmlopsguy/dokaseca-terraform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thatmlopsguy%2Fdokaseca-terraform/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261582508,"owners_count":23180603,"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":["argocd","devops","dokaseca","gitops","gitops-bridge","homelab","k8s","kubernetes","platform-engineering","terraform"],"created_at":"2025-05-25T15:11:32.543Z","updated_at":"2025-06-24T00:31:00.840Z","avatar_url":"https://github.com/thatmlopsguy.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doka Seca Terraform\n\n[![GitHub](https://img.shields.io/github/stars/thatmlopsguy/k8s-homelab?style=flat\u0026label=GitHub%20%E2%AD%90)](https://github.com/thatmlopsguy/k8s-homelab)\n[![GitHub last commit](https://img.shields.io/github/last-commit/thatmlopsguy/k8s-homelab.svg)](https://github.com/thatmlopsguy/k8s-homelab/commits/main)\n[![GitHub issues](https://img.shields.io/github/issues/thatmlopsguy/k8s-homelab.svg)](https://github.com/thatmlopsguy/k8s-homelab/issues)\n[![GitHub PRs](https://img.shields.io/github/issues-pr/thatmlopsguy/k8s-homelab)](https://github.com/thatmlopsguy/k8s-homelab/pulls)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/thatmlopsguy/k8s-homelab/blob/dev/LICENSE)\n[![Website](https://img.shields.io/website-up-down-green-red/http/shields.io.svg)](https://thatmlopsguy.github.io/k8s-homelab/)\n\n## Introduction\n\nWelcome to my homelab Kubernetes cluster repository! This project serves as both a personal learning journey and a\nresource for others interested in setting up their own Kubernetes Homelabs.\n\n## Prerequisite\n\n* [Docker](https://www.docker.com/)\n* [Terraform](https://www.terraform.io/)\n* [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/), [k0s](https://docs.k0sproject.io/stable/) and/or [k3d](https://k3d.io/stable/)\n* [jq](https://jqlang.github.io/jq/)\n* [Helm](https://helm.sh/docs/intro/install/)\n* [Kubectl](https://kubernetes.io/docs/tasks/tools/)\n* [kustomize](https://kustomize.io/)\n* [k9s](https://k9scli.io/) or [freelens](https://github.com/freelensapp/freelens) (optional, if you'd like to inspect your cluster visually)\n\n## Optional tools\n\n* [argocd](https://argo-cd.readthedocs.io/en/stable/cli_installation/)\n* [vcluster](https://www.vcluster.com/docs/platform/install/quick-start-guide)\n* [falcoctl](https://github.com/falcosecurity/falcoctl)\n* [karmor](https://kubearmor.io/)\n* [clusteradm](https://github.com/open-cluster-management-io/clusteradm)\n* [cosign](https://github.com/sigstore/cosign)\n* [velero](https://github.com/vmware-tanzu/velero)\n\n```sh\n$ kubectl version\nClient Version: v1.31.0\nKustomize Version: v5.4.2\nServer Version: v1.30.0\n\n$ kind version\nkind v0.27.0 go1.23.6 linux/amd64\n\n$ k3d --version\nk3d version v5.8.3\nk3s version v1.31.5-k3s1 (default)\n\n$ k0s version\nv1.32.4+k0s.0\n\n$ helm version\nversion.BuildInfo{Version:\"v3.16.1\", GitCommit:\"v3.16.1\", GitTreeState:\"\", GoVersion:\"go1.22.7\"}\n```\n\nTo increase these limits temporarily run the following commands on the host:\n\n```sh\nsudo sysctl fs.inotify.max_user_watches=1048576\nsudo sysctl fs.inotify.max_user_instances=8192\n```\n\nSource: [Pod errors due to “too many open files”](https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files)\n\n## Installation\n\nThe following command with create a kind cluster.\n\n```sh\nmake terraform-apply\n```\n\nYou can inspect the deployed clusters by typing:\n\n```sh\n$ kind get clusters\ncontrol-plane-dev\n```\n\nIf you enable in `terraform.tfvars` the gitops bridge by setting `enable_gitops_bridge = true`, then argocd will be also\ninstalled and all the enabled addons. You can see that terraform will add GitOps Bridge Metadata to the ArgoCD secret.\nThe annotations contain metadata for the addons' Helm charts and ArgoCD ApplicationSets.\n\n```sh\nkubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster -o json | jq '.items[0].metadata.annotations'\n```\n\nThe output looks like the following:\n\n```json\n{\n  \"addons_extras_repo_basepath\": \"stable\",\n  \"addons_extras_repo_revision\": \"main\",\n  \"addons_extras_repo_url\": \"https://github.com/thatmlopsguy/helm-charts\",\n  \"addons_repo_basepath\": \"argocd\",\n  \"addons_repo_path\": \"appsets\",\n  \"addons_repo_revision\": \"main\",\n  \"addons_repo_url\": \"https://github.com/thatmlopsguy/dokaseca-addons\",\n  \"cluster_name\": \"control-plane-dev\",\n  \"cluster_repo_basepath\": \"gitops/argocd\",\n  \"cluster_repo_path\": \"clusters\",\n  \"cluster_repo_revision\": \"dev\",\n  \"cluster_repo_url\": \"https://github.com/thatmlopsguy/k8s-homelab\",\n  \"environment\": \"dev\",\n  \"workload_repo_basepath\": \"gitops/argocd\",\n  \"workload_repo_path\": \"workloads\",\n  \"workload_repo_revision\": \"dev\",\n  \"workload_repo_url\": \"https://github.com/thatmlopsguy/k8s-homelab\"\n}\n```\n\nThe labels offer a straightforward way to enable or disable an addon in ArgoCD for the cluster.\n\n```sh\nkubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster -o json | jq '.items[0].metadata.labels'\n```\n\nThe output looks like the following:\n\n```json\n{\n  \"argocd.argoproj.io/secret-type\": \"cluster\",\n  \"cloud_provider\": \"local\",\n  \"cluster_name\": \"control-plane-dev\",\n  \"enable_alloy\": \"false\",\n  \"enable_argo_cd\": \"true\",\n  \"enable_argo_cd_image_updater\": \"false\",\n  \"enable_argo_events\": \"false\",\n  \"enable_argo_rollouts\": \"false\",\n  \"enable_argo_workflows\": \"false\",\n  \"enable_trivy\": \"false\",\n  \"enable_vault\": \"false\",\n  \"enable_vcluster\": \"false\",\n  \"enable_vector\": \"false\",\n  \"enable_victoria_metrics_k8s_stack\": \"true\",\n  \"enable_zipkin\": \"false\",\n  \"environment\": \"dev\",\n  \"k8s_cluster_name\": \"control-plane-dev\",\n  \"k8s_domain_name\": \"k8s-home.lab\",\n  \"kubernetes_version\": \"1.31.2\"\n}\n```\n\n## Destroy kind Cluster\n\nTo tear down all the resources and the kind cluster, run the following command:\n\n```sh\nmake terraform-destroy\n```\n\n## :handshake: Contributing\n\nAnyone is welcome to collaborate to this project. Check out our [contributing guidelines](CONTRIBUTING.md).\n\n## :bookmark: License\n\nDoca Seca is licensed under [Apache License, Version 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthatmlopsguy%2Fdokaseca-terraform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthatmlopsguy%2Fdokaseca-terraform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthatmlopsguy%2Fdokaseca-terraform/lists"}