{"id":25733628,"url":"https://github.com/joshua-woolf/k8s-local-dev","last_synced_at":"2026-04-07T16:32:37.993Z","repository":{"id":279483876,"uuid":"916942443","full_name":"joshua-woolf/k8s-local-dev","owner":"joshua-woolf","description":"A baseline setup of a Kubernetes cluster for local development and an example dashboard application that displays information on the applications running inside the cluster.","archived":false,"fork":false,"pushed_at":"2026-02-16T12:18:58.000Z","size":740,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-16T20:52:52.298Z","etag":null,"topics":["bind9","cert-manager","distribution","elastic","external-dns","flagger","gatekeeper","grafana","keda","kind","kubernetes","local","macos","metrics-server","opentelemetry","prometheus","traefik"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/joshua-woolf.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-15T03:38:57.000Z","updated_at":"2026-02-16T12:18:55.000Z","dependencies_parsed_at":"2025-02-25T20:33:41.516Z","dependency_job_id":"6255cc66-8b85-47a3-b9eb-12be80e2ce7a","html_url":"https://github.com/joshua-woolf/k8s-local-dev","commit_stats":null,"previous_names":["joshua-woolf/k8s-local-dev"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/joshua-woolf/k8s-local-dev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshua-woolf%2Fk8s-local-dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshua-woolf%2Fk8s-local-dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshua-woolf%2Fk8s-local-dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshua-woolf%2Fk8s-local-dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshua-woolf","download_url":"https://codeload.github.com/joshua-woolf/k8s-local-dev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshua-woolf%2Fk8s-local-dev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31520543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["bind9","cert-manager","distribution","elastic","external-dns","flagger","gatekeeper","grafana","keda","kind","kubernetes","local","macos","metrics-server","opentelemetry","prometheus","traefik"],"created_at":"2025-02-26T04:22:16.846Z","updated_at":"2026-04-07T16:32:37.971Z","avatar_url":"https://github.com/joshua-woolf.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kubernetes Local Dev\n\n## Overview\n\nThis repository contains a baseline setup of a Kubernetes cluster for local development and an example dashboard application that displays information on the applications running inside the cluster.\n\nThe dashboard can be locally built and deployed to the cluster and includes canary deployments, OpenTelemetry integration and smoke tests to verify that the application is working as expected when deployed.\n\nThe baseline includes:\n- Kubernetes:\n  - [Kind Cluster](https://kind.sigs.k8s.io)\n- Container Registry:\n  - [Distribution Registry](https://distribution.github.io/distribution)\n  - [Registry UI](https://github.com/Joxit/docker-registry-ui)\n- DNS:\n  - [Bind9](https://bind9.net)\n  - [External DNS](https://kubernetes-sigs.github.io/external-dns)\n- Ingress:\n  - [Traefik](https://traefik.io/traefik)\n  - [Cert Manager](https://cert-manager.io)\n- Observability:\n  - [Metrics Server](https://kubernetes-sigs.github.io/metrics-server)\n  - [Prometheus](https://prometheus.io)\n  - [Grafana](https://grafana.com)\n  - [Elastic Stack](https://www.elastic.co/guide/en/cloud-on-k8s/current)\n  - [OpenTelemetry Collector](https://opentelemetry.io/docs/collector)\n- Progressive Delivery:\n  - [Flagger](https://flagger.app)\n- Other:\n  - [Gatekeeper](https://open-policy-agent.github.io/gatekeeper)\n  - [KEDA](https://keda.sh)\n\nAll of the container images are scanned using [Trivy](https://trivy.dev) and cached in the local container registry to speed up cluster provisioning between changes.\n\n## Prerequisites\n\nSince this is a hobby project, it hasn't been built with cross-platform compatibility in mind.\n\nThere are some commands specific to macOS used in the setup and teardown scripts, so it would take some effort to get this working on other platforms. I run this on a Mac M4 Pro and have included a [Brewfile](./Brewfile) with the dependencies I used when working on this project.\n\nYou can install [Homebrew](https://brew.sh) and the dependencies with the following commands:\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n\nbrew bundle\n```\n\nYou may need to allow execution of the scripts by running the following command:\n\n```bash\nchmod +x ./setup.sh\nchmod +x ./teardown.sh\n```\n\n## Getting Started\n\n*⚠️ Before running the project it's a good idea to understand what the setup is going to do as it will need to change some of your host machine's configuration to trust a generated root CA certificate and modify DNS settings on your active network. This is done to enable secure access services running inside the cluster from your host machine with working DNS and TLS. When running the scripts you may be prompted to enter your password for elevated privileges. The teardown script will revert the changes made.*\n\nTo setup the cluster, you can run the following command:\n\n```bash\n./setup.sh\n```\n\nTo teardown the cluster, you can run the following command:\n\n```bash\n./teardown.sh\n```\n\n## Troubleshooting\n\nThere is sometimes an issue where the DNS cache on the host machine needs to be flushed if names are not resolving. You can flush the cache with the following commands:\n\n```bash\nsudo dscacheutil -flushcache\nsudo killall -HUP mDNSResponder\n```\n\n## Contributing\n\nSince this is a hobby project, it won't be actively maintained. However, if you have any suggestions or feedback, please feel free to open an issue or submit a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshua-woolf%2Fk8s-local-dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshua-woolf%2Fk8s-local-dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshua-woolf%2Fk8s-local-dev/lists"}