cloudflared-mirror/cmd/cloudflared/tunnel
Mahendra Singh Rathore af04ee52f1 feat: add native Kubernetes service discovery and auto-ingress (#1607)
Implements native Kubernetes API integration for cloudflared, enabling
automatic discovery and exposure of annotated Kubernetes services through
Cloudflare Tunnel without manual ingress configuration.

## New k8s/ package
- Lightweight REST client (no client-go dependency) supporting both
  in-cluster service account auth and kubeconfig-based auth
- Annotation-based service discovery:
  - cloudflared.cloudflare.com/tunnel: "true" (required)
  - cloudflared.cloudflare.com/hostname (override generated hostname)
  - cloudflared.cloudflare.com/port (select specific service port)
  - cloudflared.cloudflare.com/scheme (http/https)
  - cloudflared.cloudflare.com/path (path regex for ingress rule)
  - cloudflared.cloudflare.com/no-tls-verify (disable TLS verify)
  - cloudflared.cloudflare.com/origin-server-name (SNI override)
- Ingress rule generation from discovered services with merge/dedup
- Periodic watcher with configurable resync interval for runtime updates

## CLI subcommands (cloudflared tunnel kubernetes)
- discover: one-shot service discovery (table/json/yaml output)
- watch: continuous watching with live updates
- generate-config: output mergeable ingress YAML

## Config file support
  kubernetes:
    enabled: true
    baseDomain: example.com
    namespace: default
    exposeAPIServer: true
    apiServerHostname: k8s.example.com

## Integration
- Startup: discovered services merged into ingress rules at tunnel start
- Runtime: watcher updates orchestrator config on service changes
- Optional Kubernetes API server exposure through the tunnel

Closes #1607
2026-03-07 19:09:55 +00:00
..
cmd.go feat: add native Kubernetes service discovery and auto-ingress (#1607) 2026-03-07 19:09:55 +00:00
cmd_test.go TUN-1669: Update license message in help text. Also fix test 2019-04-18 10:42:48 -05:00
configuration.go feat: add native Kubernetes service discovery and auto-ingress (#1607) 2026-03-07 19:09:55 +00:00
configuration_test.go TUN-7584: Bump go 1.20.6 2023-07-26 13:52:40 -07:00
credential_finder.go TUN-9998: Don't need to read origin cert to determine if the endpoint is fedramp 2026-01-14 15:07:51 +00:00
filesystem.go TUN-7590: Remove usages of ioutil 2023-07-17 19:08:38 +00:00
info.go TUN-5482: Refactor tunnelstore client related packages for more coherent package 2021-12-28 17:17:49 +00:00
ingress_subcommands.go CUSTESC-33731: Make rule match test report rule in 0-index base 2023-10-03 12:18:49 +01:00
k8s_subcommands.go feat: add native Kubernetes service discovery and auto-ingress (#1607) 2026-03-07 19:09:55 +00:00
login.go AUTH-7480 update fed callback url for login helper 2025-08-19 18:54:31 +00:00
quick_tunnel.go TUN-8914: Create a flags module to group all cloudflared cli flags 2025-02-06 03:30:27 -08:00
signal.go TUN-4067: Reformat code for consistent import order, grouping, and fix formatting. Added goimports target to the Makefile to make this easier in the future. 2021-03-24 10:53:29 -05:00
signal_test.go TUN-7584: Bump go 1.20.6 2023-07-26 13:52:40 -07:00
subcommand_context.go TUN-9755: Set endpoint in tunnel credentials when generating locally managed tunnel with a Fed token 2025-08-27 15:57:58 +00:00
subcommand_context_teamnet.go TUN-7787: Refactor cloudflared to use new route endpoints based on route IDs 2023-09-19 09:56:02 +00:00
subcommand_context_test.go TUN-7813: Improve tunnel delete command to use cascade delete 2023-09-20 12:35:43 +01:00
subcommand_context_vnets.go ZTC-446: Allow to force delete a vnet 2023-01-20 11:52:56 +00:00
subcommands.go TUN-9473: Add --dns-resolver-addrs flag 2025-06-30 15:20:32 -07:00
subcommands_test.go TUN-5679: Add support for service install using Tunnel Token 2022-03-03 18:59:03 +00:00
tag.go TUN-8423: Deprecate older legacy tunnel capnp interfaces 2024-05-23 11:17:49 -07:00
tag_test.go TUN-8423: Deprecate older legacy tunnel capnp interfaces 2024-05-23 11:17:49 -07:00
teamnet_subcommands.go chore: fix linter rules 2025-04-01 18:57:55 +01:00
vnets_subcommands.go ZTC-446: Allow to force delete a vnet 2023-01-20 11:52:56 +00:00