Quickstart
Use this guide to install the controller with Helm and publish a Kubernetes Service through Cloudflare Tunnel using a standard Ingress resource.
Prerequisites
Section titled “Prerequisites”- A Kubernetes cluster running version 1.26 or later with cluster-admin access.
kubectlandhelmconfigured for the cluster.- A Cloudflare account with an active zone and Argo Tunnel access enabled.
- A Cloudflare API token with
Account.Cloudflare Tunnel:Edit,Zone.DNS:Edit, andZone.Zone:Readpermissions. Create it quickly using this template, or see Cloudflare credentials for details. - Your Cloudflare account ID.
- A Service named
kubernetes-dashboardin thekubernetes-dashboardnamespace.
1. Install the controller
Section titled “1. Install the controller”Replace the placeholders with your API token, account ID, and preferred tunnel name. Helm installs the controller and creates its credential Secret.
helm upgrade --install --wait \ cloudflare-tunnel-ingress-controller \ cloudflare-tunnel-ingress-controller \ --repo https://helm.strrl.dev \ --namespace cloudflare-tunnel-ingress-controller \ --create-namespace \ --set cloudflare.apiToken="<CLOUDFLARE_API_TOKEN>" \ --set cloudflare.accountId="<CLOUDFLARE_ACCOUNT_ID>" \ --set cloudflare.tunnelName="<TUNNEL_NAME>"2. Create your first Ingress
Section titled “2. Create your first Ingress”Save the following manifest as dashboard-ingress.yaml. Replace dash.example.com with a hostname in your Cloudflare zone.
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: dashboard namespace: kubernetes-dashboardspec: ingressClassName: cloudflare-tunnel rules: - host: dash.example.com http: paths: - path: / pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 80Apply the manifest:
kubectl apply -f dashboard-ingress.yaml3. Verify the Ingress
Section titled “3. Verify the Ingress”Open https://dash.example.com, using the hostname you chose. The Kubernetes Dashboard should load through Cloudflare Tunnel.
If something goes wrong, see troubleshooting.