setf.BoolVar(&setArgs.runWebClient,"webclient",false,"expose the web interface for managing this node over Tailscale at port 5252")
setf.BoolVar(&setArgs.runWebClient,"webclient",false,"expose the web interface for managing this node over Tailscale at port 5252")
setf.BoolVar(&setArgs.sync,"sync",false,hidden+"actively sync configuration from the control plane (set to false only for network failure testing)")
setf.BoolVar(&setArgs.sync,"sync",false,hidden+"actively sync configuration from the control plane (set to false only for network failure testing)")
setf.StringVar(&setArgs.relayServerPort,"relay-server-port","","UDP port number (0 will pick a random unused port) for the relay server to bind to, on all interfaces, or empty string to disable relay server functionality")
setf.StringVar(&setArgs.relayServerPort,"relay-server-port","","UDP port number (0 will pick a random unused port) for the relay server to bind to, on all interfaces, or empty string to disable relay server functionality")
setf.StringVar(&setArgs.relayServerStaticEndpoints,"relay-server-static-endpoints","","static IP:port endpoints to advertise as candidates for relay connections (comma-separated, e.g. \"[2001:db8::1]:40000,192.0.2.1:40000\") or empty string to not advertise any static endpoints")
Title:"Tailscale state store failed to initialize",
Text:func(argshealth.Args)string{
returnfmt.Sprintf("State store failed to initialize, Tailscale will not work until this is resolved. See https://tailscale.com/s/state-store-init-error. Error: %s",args[health.ArgError])
},
ImpactsConnectivity:true,
})
// CurrentProfileID returns the StateKey that stores the
// CurrentProfileID returns the StateKey that stores the
// current profile ID. The value is a JSON-encoded LoginProfile.
// current profile ID. The value is a JSON-encoded LoginProfile.
// If the userID is empty, the key returned is CurrentProfileStateKey,
// If the userID is empty, the key returned is CurrentProfileStateKey,
RecorderSpec describes a tsrecorder instance to be deployed in the cluster
@ -900,6 +900,7 @@ _Appears in:_
| `tags`_[Tags](#tags)_ | Tags that the Tailscale device will be tagged with. Defaults to [tag:k8s].<br/>If you specify custom tags here, make sure you also make the operator<br/>an owner of these tags.<br/>See https://tailscale.com/kb/1236/kubernetes-operator/#setting-up-the-kubernetes-operator.<br/>Tags cannot be changed once a Recorder node has been created.<br/>Tag values must be in form ^tag:[a-zA-Z][a-zA-Z0-9-]*$. | | Pattern: `^tag:[a-zA-Z][a-zA-Z0-9-]*$`<br/>Type: string <br/> |
| `tags`_[Tags](#tags)_ | Tags that the Tailscale device will be tagged with. Defaults to [tag:k8s].<br/>If you specify custom tags here, make sure you also make the operator<br/>an owner of these tags.<br/>See https://tailscale.com/kb/1236/kubernetes-operator/#setting-up-the-kubernetes-operator.<br/>Tags cannot be changed once a Recorder node has been created.<br/>Tag values must be in form ^tag:[a-zA-Z][a-zA-Z0-9-]*$. | | Pattern: `^tag:[a-zA-Z][a-zA-Z0-9-]*$`<br/>Type: string <br/> |
| `enableUI`_boolean_ | Set to true to enable the Recorder UI. The UI lists and plays recorded sessions.<br/>The UI will be served at <MagicDNSnameoftherecorder>:443. Defaults to false.<br/>Corresponds to --ui tsrecorder flag https://tailscale.com/kb/1246/tailscale-ssh-session-recording#deploy-a-recorder-node.<br/>Required if S3 storage is not set up, to ensure that recordings are accessible. | | |
| `enableUI`_boolean_ | Set to true to enable the Recorder UI. The UI lists and plays recorded sessions.<br/>The UI will be served at <MagicDNSnameoftherecorder>:443. Defaults to false.<br/>Corresponds to --ui tsrecorder flag https://tailscale.com/kb/1246/tailscale-ssh-session-recording#deploy-a-recorder-node.<br/>Required if S3 storage is not set up, to ensure that recordings are accessible. | | |
| `storage`_[Storage](#storage)_ | Configure where to store session recordings. By default, recordings will<br/>be stored in a local ephemeral volume, and will not be persisted past the<br/>lifetime of a specific pod. | | |
| `storage`_[Storage](#storage)_ | Configure where to store session recordings. By default, recordings will<br/>be stored in a local ephemeral volume, and will not be persisted past the<br/>lifetime of a specific pod. | | |
| `replicas`_integer_ | Replicas specifies how many instances of tsrecorder to run. Defaults to 1. | | Minimum: 0 <br/> |
// RecorderSpec describes a tsrecorder instance to be deployed in the cluster
// +kubebuilder:validation:XValidation:rule="!(self.replicas > 1 && (!has(self.storage) || !has(self.storage.s3)))",message="S3 storage must be used when deploying multiple Recorder replicas"
typeRecorderSpecstruct{
typeRecorderSpecstruct{
// Configuration parameters for the Recorder's StatefulSet. The operator
// Configuration parameters for the Recorder's StatefulSet. The operator
// deploys a StatefulSet for each Recorder resource.
// deploys a StatefulSet for each Recorder resource.
@ -74,6 +76,11 @@ type RecorderSpec struct {
// lifetime of a specific pod.
// lifetime of a specific pod.
// +optional
// +optional
StorageStorage`json:"storage,omitempty"`
StorageStorage`json:"storage,omitempty"`
// Replicas specifies how many instances of tsrecorder to run. Defaults to 1.
t.Skip("cmd/natc isn't supported on Windows, so skipping tsconsensus tests on CI for now; see https://github.com/tailscale/tailscale/issues/16340")
t.Skip("these integration tests don't always work well in CI and that's bad for CI; see https://github.com/tailscale/tailscale/issues/16340 and https://github.com/tailscale/tailscale/issues/18022")
}
}
// -race AND Parallel makes things start to take too long.
// -race AND Parallel makes things start to take too long.