| Chart reference | Description |
|---|---|
coreweave/tailscale-operator | CoreWeave’s Helm chart for deploying Tailscale Operator on CKS clusters |
tailscale-operator Helm chart on a CKS cluster, including the Tailnet policy changes recommended for CKS and the procedures for exposing in-cluster services to your Tailnet. This page is for cluster administrators who want to provide secure, private access to in-cluster resources and the Kubernetes API server without exposing them publicly.
About Tailscale
Tailscale is a mesh network VPN service that powers encrypted peer-to-peer private network communication. With native support for Kubernetes and a Kubernetes Operator, Tailscale is a popular choice for securely accessing in-cluster resources and the Kubernetes API server without exposing them publicly. To work well in the CKS environment, CoreWeave packages a customized version of the tailscale-operator Helm chart and a CoreWeave-specific container image.Usage
Before you install the Helm chart, update your Tailnet so it is compatible with CKS networking. The following sections outline the policy changes required to avoid IP overlap with CKS control-plane services and to take advantage of CoreWeave-hosted relays.Tailnet configuration
Edit your Tailnet policy JSON for use with CKS. The following sections outline the recommended changes to your Tailnet configuration.Tailnet ipPool
Tailscale’s default configuration assigns an IP address from the 100.64.0.0/10 range to each device joined to a Tailnet. Because CKS operates some control-plane services in the 100.124.0.0/18 address range, a Tailnet used with CKS should allocate addresses from a smaller, non-overlapping pool.
Tailscale supports configurable IP Pools for this purpose. The largest contiguous non-overlapping address pool for use with CKS is 100.64.0.0/13.
Example policy JSON using the 100.64.0.0/13 CIDR range
tailscale-operator chart and container image provide the customizations needed to support a non-overlapping ipPool out of the box.
Tailnet derpMap
Tailscale runs relay servers worldwide to help establish direct connections to endpoints on your Tailnet. When direct connections are impossible, the relays forward traffic to your endpoints.
To complement the Tailscale-hosted relays, CoreWeave hosts its own relays in select regions to provide a last-mile hop to your CKS workloads.
To consume CoreWeave hosted relays, you must add them to Tailnet’s configuration.
By default, the Tailscale client chooses a relay closest to connection origin, which isn’t always a CoreWeave hosted relay. To ensure exclusive consumption of CoreWeave relays, enable
OmitDefaultRegions in your Tailnet configuration. This configuration may not be optimal when connecting to endpoints outside a CoreWeave Region.A Policy JSON example
A Policy JSON example
This example outlines all the recommended objects for your Tailnet’s Policy JSON.
Deploy the tailscale-operator chart
The CoreWeave Charts tailscale-operator chart is based on the upstream Tailscale chart, with optimizations that work best with CKS.
The CoreWeave tailscale-operator Helm chart includes the following:
- A default
ProxyClassapplied to all exposed services to configure proxy-specific settings. - Support for CKS-specific
TS_CGNAT_OVERRIDE_RANGE, to allow cluster-local communication in the100.124.0.0/18address range. - Default resource limits.
- A post-install hook to declaratively expose existing in-cluster services to your Tailnet.
tailscale-operator can communicate with the Tailscale Control Plane. You can find detailed information about OAuth clients in Tailscale’s documentation.
Tailnet policy JSON to allow the operator
tailscale-operator chart using one of the following methods. Both methods produce the same result. Choose the one that best fits how you manage secrets in your cluster.
Install with the Secret pre-created
In this method, thetailscale namespace is pre-created, and the Kubernetes Secret operator-oauth is populated with the credentials that the tailscale-operator requires. Use this approach when you prefer to manage the OAuth Secret separately from the Helm release, for example when another workflow or sealed-secrets tool creates the Secret.
First, create the tailscale namespace.
Install by setting the OAuth secret in Helm values
This method installs the Secrets, and creates thetailscale namespace, during the Helm chart installation. Use this approach when you want a single Helm command to handle namespace creation and OAuth credentials in one step.
Verify the installation
After the installation is complete, verify that thetailscale-operator is running in the tailscale namespace.

Expose services
To expose Kubernetes services to Tailnet, you can annotate a Kubernetes service, or configure the services in Helm values. Choose annotations for one-off or ad-hoc exposures, and Helm values when you want exposed services tracked declaratively with the chart release.Annotate a Kubernetes service
To expose a service to Tailnet, annotate the service with thetailscale.com/expose: true annotation.
tailscale namespace.
[NAMESPACE]-[SERVICE-NAME].[MAGICDNS-HOSTNAME].
Configure services in Helm
To expose a service to Tailnet, modify your Helm values to include the service.- Tailscale documentation: Using the Tailscale Kubernetes Operator.
- Tailscale documentation: Managing egress traffic and managing ingress traffic from your cluster with Tailscale.