{"id":13820765,"url":"https://github.com/samip5/k8s-cluster","last_synced_at":"2025-04-05T12:03:17.137Z","repository":{"id":36993241,"uuid":"387935428","full_name":"samip5/k8s-cluster","owner":"samip5","description":"GitOps/Flux2 managed full-stack Kubernetes clusters","archived":false,"fork":false,"pushed_at":"2025-04-02T16:04:11.000Z","size":11164,"stargazers_count":125,"open_issues_count":12,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T16:09:33.843Z","etag":null,"topics":["docker","helm","k8s-at-home","kubernetes","kubernetes-cluster"],"latest_commit_sha":null,"homepage":"","language":"Python","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/samip5.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},"funding":{"github":"samip5","custom":"https://www.buymeacoffee.com/skykrypt"}},"created_at":"2021-07-20T23:14:46.000Z","updated_at":"2025-04-02T16:04:13.000Z","dependencies_parsed_at":"2024-05-21T01:49:34.845Z","dependency_job_id":"9c231312-a509-41e6-8360-a6891295d252","html_url":"https://github.com/samip5/k8s-cluster","commit_stats":{"total_commits":11139,"total_committers":9,"mean_commits":"1237.6666666666667","dds":0.4978902953586498,"last_synced_commit":"71c4081b9cf0026efe0d08cace25ec9f730d959b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samip5%2Fk8s-cluster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samip5%2Fk8s-cluster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samip5%2Fk8s-cluster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samip5%2Fk8s-cluster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samip5","download_url":"https://codeload.github.com/samip5/k8s-cluster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247332560,"owners_count":20921853,"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":["docker","helm","k8s-at-home","kubernetes","kubernetes-cluster"],"created_at":"2024-08-04T08:01:08.496Z","updated_at":"2025-04-05T12:03:17.116Z","avatar_url":"https://github.com/samip5.png","language":"Python","funding_links":["https://github.com/sponsors/samip5","https://www.buymeacoffee.com/skykrypt"],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n### My Home Operations Repository :octocat:\n\n_... managed with Flux, Renovate, and GitHub Actions_ 🤖\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Talos](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dtalos_version\u0026style=for-the-badge\u0026logo=talos\u0026logoColor=white\u0026label=%20\u0026color=blue)](https://talos.dev)\u0026nbsp;\u0026nbsp;\n![Kubernetes](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dkubernetes_version\u0026style=for-the-badge\u0026logo=kubernetes\u0026logoColor=white\u0026label=%20\u0026color=blue)\n[![Renovate](https://img.shields.io/github/actions/workflow/status/samip5/k8s-cluster/schedule-renovate.yaml?branch=main\u0026label=\u0026logo=renovatebot\u0026style=for-the-badge\u0026color=blue)](https://github.com/samip5/k8s-cluster/actions/workflows/schedule-renovate.yaml)\n\n\u003c/div\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n\n[![Age-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_age_days\u0026style=flat-square\u0026label=Age)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Uptime-Days](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_uptime_days\u0026style=flat-square\u0026label=Uptime)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Node-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_node_count\u0026style=flat-square\u0026label=Nodes)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Pod-Count](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_pod_count\u0026style=flat-square\u0026label=Pods)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Pod-Count-Average-Per-Node](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_avg_per_node_pod_count\u0026style=flat-square\u0026label=PodsPerNodeAvg)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Firing Prom Alerts](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dprometheus_active_alerts\u0026style=flat-square)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![CPU-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_cpu_usage\u0026style=flat-square\u0026label=CPU)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Memory-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_memory_usage\u0026style=flat-square\u0026label=Memory)](https://github.com/kashalls/kromgo/)\u0026nbsp;\u0026nbsp;\n[![Power-Usage](https://img.shields.io/endpoint?url=https%3A%2F%2Fkromgo.skylab.fi%2Fquery%3Fformat%3Dendpoint%26metric%3Dcluster_power_usage\u0026style=flat-square\u0026label=Power)](https://github.com/kashalls/kromgo/)\n\n\u003c/div\u003e\n\n### :wrench:\u0026nbsp; Tools\n\n| Tool                                                               | Purpose                                                             |\n|--------------------------------------------------------------------|---------------------------------------------------------------------|\n| [flux](https://toolkit.fluxcd.io/)                                 | Operator that manages your k8s cluster based on your Git repository |\n| [go-task](https://github.com/go-task/task)                         | A task runner / simpler Make alternative written in Go              |\n| [sops](https://github.com/mozilla/sops)                            | Encrypts k8s secrets with GnuPG                                     |\n\n\n## 💻 Nodes\n| Node                          | Hostname | RAM  | Storage                                            | Function    | Operating System |\n|-------------------------------|----------|------|----------------------------------------------------|-------------|------------------|\n| Raspberry Pi Compute Module 4 | w7       | 8GB  | 2TB SSD                                            | Kube Worker | Talos            |\n| Raspberry Pi Compute Module 4 | cm4-1    | 8GB  | 32GB eMMC                                          | Kube Worker | Talos            |\n| Lenovo ThinkCentre M910q Tiny | w-amd-1  | 32GB | 1TB Kingston DC SSD + 256GB SSD                    | Kube Worker | Talos            |\n| Random Chinese N100 board     | w-amd-2  | 32GB | 480GB Transcend SSD, 275GB Crucial SSD + 320GB HDD | Kube Worker | Talos            |\n| HP EliteDesk 800 G2           | w-amd-3  | 32GB | 256GB SSD                                          | Kube Worker | Talos            |\n| Lenovo ThinkCentre M910q Tiny | m1       | 16GB | 256GB SSD x 2                                      | Kube Master | Talos            |\n\n## Storage\n| Node         | Hostname | RAM  | Storage                                                                                  | Function   | Operating System |\n|--------------|----------|------|------------------------------------------------------------------------------------------|------------|------------------|\n| Synology NAS | NAS      | 16GB | 2 x 3TB HDD (SMR for backups), 2 x 8TB HDD, 1 TB NVME, 256GB NVME for storage pool cache | NFS Server | DSM 7            |\n\n## Network\n\n| Vendor   | Model         | Function                                           |\n|----------|---------------|----------------------------------------------------|\n| Juniper  | EX2200-48P-4g | Hallway switch with PoE+ and fiber uplinks to rack |\n| Juniper  | EX3300-48P    | Rack switch with PoE++ and 10G SFP+                |\n| TP-Link  | TL-SG108E     | Bedroom switching behind desk                      |\n| Mikrotik | RB5009        | Main router                                        |\n\nAll nodes are connected to a dual-stack network, with private IPv4 and public IPv6. \nKubernetes' nodes are on their own VLAN which has access to the NAS.\n\n## ☁️ Cloud Dependencies\n\nWhile most of my infrastructure and workloads are self-hosted I do rely upon the cloud for certain key parts of my setup. This saves me from having to worry about two things. (1) Dealing with chicken/egg scenarios and (2) services I critically need whether my cluster is online or not.\n\nThe alternative solution to these two problems would be to host a Kubernetes cluster in the cloud and deploy applications like [HCVault](https://www.vaultproject.io/), [Vaultwarden](https://github.com/dani-garcia/vaultwarden), [ntfy](https://ntfy.sh/), and [Gatus](https://gatus.io/). However, maintaining another cluster and monitoring another group of workloads is a lot more time and effort than I am willing to put in.\n\n| Service                                                               | Use                                                                | Cost                |\n|-----------------------------------------------------------------------|--------------------------------------------------------------------|---------------------|\n| [Cloudflare](https://www.cloudflare.com/)                             | Domain(s) and S3                                                   | ~$20/yr             |\n| [GitHub](https://github.com/)                                         | Hosting this repository and continuous integration/deployments     | Free                |\n| [Mailbox](https://mailbox.org/)                                       | Email hosting                                                      | ~30€/12 months        |\n| [NextDNS](https://nextdns.io/?from=dm7g7gda)                                        | My router DNS server which includes AdBlocking                     | ~$20/yr             |\n| [Kapsi internet-users association](https://www.kapsi.fi/english.html) | Hosts my off-site backup aka minio (S3) and own website            | 40€/yr              |\n| [Bilance](https://www.bilanceapp.com)                                 | Budgeting app for iOS and Android                                  | ~30€/yr             |\n| [1Password](https://1password.eu)                                     | External Secrets and secret management                             | 20€/yr (Student discount) |\n|                                                                       |                                                                    | Total: ~140€/yr      |\n\n## Stargazers\n\n[![Star History Chart](https://api.star-history.com/svg?repos=samip5/k8s-cluster\u0026type=Date)](https://star-history.com/#samip5/k8s-cluster\u0026Date)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamip5%2Fk8s-cluster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamip5%2Fk8s-cluster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamip5%2Fk8s-cluster/lists"}