{"id":13643567,"url":"https://github.com/STRRL/cloudflare-tunnel-ingress-controller","last_synced_at":"2025-04-21T02:30:38.619Z","repository":{"id":173248744,"uuid":"645628625","full_name":"STRRL/cloudflare-tunnel-ingress-controller","owner":"STRRL","description":"🚀 Expose the website directly into the internet! The Kuberntes Ingress Controller based on Cloudflare Tunnel.","archived":false,"fork":false,"pushed_at":"2025-04-11T06:01:53.000Z","size":670,"stargazers_count":816,"open_issues_count":31,"forks_count":50,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-14T08:03:41.498Z","etag":null,"topics":["cloudflare","cloudflare-tunnel","ingress","ingress-controller","kubernetes","selfhosted"],"latest_commit_sha":null,"homepage":"","language":"Go","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/STRRL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["strrl"],"buy_me_a_coffee":"strrl"}},"created_at":"2023-05-26T04:49:25.000Z","updated_at":"2025-04-14T02:52:37.000Z","dependencies_parsed_at":"2023-11-25T09:42:02.597Z","dependency_job_id":"db112449-99d7-48c7-ae37-d5820da224a4","html_url":"https://github.com/STRRL/cloudflare-tunnel-ingress-controller","commit_stats":{"total_commits":72,"total_committers":9,"mean_commits":8.0,"dds":"0.38888888888888884","last_synced_commit":"a109a59d1b3fab4481e45fa8904c22e7ea47b5cb"},"previous_names":["strrl/cloudflare-tunnel-ingress-controller"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRRL%2Fcloudflare-tunnel-ingress-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRRL%2Fcloudflare-tunnel-ingress-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRRL%2Fcloudflare-tunnel-ingress-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/STRRL%2Fcloudflare-tunnel-ingress-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/STRRL","download_url":"https://codeload.github.com/STRRL/cloudflare-tunnel-ingress-controller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249986022,"owners_count":21356310,"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":["cloudflare","cloudflare-tunnel","ingress","ingress-controller","kubernetes","selfhosted"],"created_at":"2024-08-02T01:01:49.376Z","updated_at":"2025-04-21T02:30:37.533Z","avatar_url":"https://github.com/STRRL.png","language":"Go","funding_links":["https://github.com/sponsors/strrl","https://buymeacoffee.com/strrl"],"categories":["Go"],"sub_categories":[],"readme":"# Cloudflare Tunnel Ingress Controller\n\nTLDR; This project simplifies exposing Kubernetes services to the internet easily and securely using Cloudflare Tunnel.\n\n## Prerequisites\n\nTo use the Cloudflare Tunnel Ingress Controller, you need to have a Cloudflare account and a domain configured on Cloudflare. You also need to create a Cloudflare API token with the following permissions: `Zone:Zone:Read`, `Zone:DNS:Edit`, and `Account:Cloudflare Tunnel:Edit`.\n\nAdditionally, you need to fetch the Account ID from the Cloudflare dashboard.\n\nFinally, you need to have a Kubernetes cluster with public Internet access.\n\n## Get Started\n\nTake a look on this video to see how smoothly and easily it works:\n\n[![Less than 4 minutes! Bootstrap a Kubernetes Cluster and Expose Kubernetes Dashboard to the Internet.](https://markdown-videos.vercel.app/youtube/e-ARlEnS4zQ)](http://www.youtube.com/watch?v=e-ARlEnS4zQ \"Less than 4 minutes! Bootstrap a Kubernetes Cluster and Expose Kubernetes Dashboard to the Internet.\")\n\nWant to DIY? The following instructions would help your bootstrap a minikube Kubernetes Cluster, then expose the Kubernetes Dashboard to the internet via Cloudflare Tunnel Ingress Controller.\n\n- You should have a Cloudflare account and a domain configured on Cloudflare.\n- Create a Cloudflare API token with the following:\n  - `Zone:Zone:Read`\n  - `Zone:DNS:Edit`\n  - `Account:Cloudflare Tunnel:Edit`\n- Fetch the Account ID from the Cloudflare dashboard, follow the instructions [here](https://developers.cloudflare.com/fundamentals/get-started/basic-tasks/find-account-and-zone-ids/).\n- Bootstrap a minikube cluster\n\n```bash\nminikube start\n```\n\n- Add Helm Repository;\n\n```bash\nhelm repo add strrl.dev https://helm.strrl.dev\nhelm repo update\n```\n\n- Install with Helm:\n\n```bash\nhelm upgrade --install --wait \\\n  -n cloudflare-tunnel-ingress-controller --create-namespace \\\n  cloudflare-tunnel-ingress-controller \\\n  strrl.dev/cloudflare-tunnel-ingress-controller \\\n  --set=cloudflare.apiToken=\"\u003ccloudflare-api-token\u003e\",cloudflare.accountId=\"\u003ccloudflare-account-id\u003e\",cloudflare.tunnelName=\"\u003cyour-favorite-tunnel-name\u003e\" \n```\n\n\u003e if the tunnel does not exist, controller will create it for you.\n\n- Then enable some awesome features in minikube, like kubernetes-dashboard:\n\n```bash\nminikube addons enable dashboard\nminikube addons enable metrics-server\n```\n\n- Then expose the dashboard to the internet by creating an `Ingress`:\n\n```bash\nkubectl -n kubernetes-dashboard \\\n  create ingress dashboard-via-cf-tunnel \\\n  --rule=\"\u003cyour-favorite-domain\u003e/*=kubernetes-dashboard:80\"\\\n  --class cloudflare-tunnel\n```\n\n\u003e for example, I would use `dash.strrl.cloud` as my favorite domain here.\n\n- At last, access the dashboard via the domain you just created:\n\n![dash.strrl.cloud](./static/dash.strrl.cloud.png)\n\n- Done! Enjoy! 🎉\n\n## Alternative\n\nThere is also an awesome project which could integrate with Cloudflare Tunnel as CRD, check it out [adyanth/cloudflare-operator](https://github.com/adyanth/cloudflare-operator)!\n\n## Contributing\n\nContributions are welcome! If you find a bug or have a feature request, please open an issue or submit a pull request.\n\n## License\n\nThis project is licensed under the MIT License. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSTRRL%2Fcloudflare-tunnel-ingress-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSTRRL%2Fcloudflare-tunnel-ingress-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSTRRL%2Fcloudflare-tunnel-ingress-controller/lists"}