tailscale/tailscale · error
failed to get ProxyClass %q: %w
Error message
failed to get ProxyClass %q: %w
What it means
Raised in getProxyClass when the PeerRelay spec names a ProxyClass that cannot be fetched (does not exist, or API error). An empty ProxyClass name is skipped; only a non-empty, unresolvable reference fires this, blocking StatefulSet creation.
Source
Thrown at k8s-operator/reconciler/peerrelay/statefulset.go:103
})
return tailscaled.ApplyProxyClass(ss, pc, managedLabelKeys, nil)
}
var managedLabelKeys = []string{
kubetypes.LabelManaged,
reconciler.LabelParentType,
reconciler.LabelParentName,
}
func (r *Reconciler) getProxyClass(ctx context.Context, pr *tsapi.PeerRelay) (*tsapi.ProxyClass, error) {
if pr.Spec.ProxyClass == "" {
return nil, nil
}
var pc tsapi.ProxyClass
if err := r.Get(ctx, types.NamespacedName{Name: pr.Spec.ProxyClass}, &pc); err != nil {
return nil, fmt.Errorf("failed to get ProxyClass %q: %w", pr.Spec.ProxyClass, err)
}
return &pc, nil
}
View on GitHub (pinned to 6e0912f979)
Solutions
- Getting the ProxyClass failed; verify the named ProxyClass exists and the operator has get permission on ProxyClasses.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at k8s-operator/reconciler/peerrelay/statefulset.go:103 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18).
Data as JSON: /api/errors/6c11f99249c081dc.
Report an issue: GitHub.