tailscale/tailscale · error
failed to delete config Secrets for PeerRelay %q: %w
Error message
failed to delete config Secrets for PeerRelay %q: %w
What it means
Raised in delete when deleteConfigSecretsFrom (all replicas) cannot list or delete the tailscaled config Secrets. Devices and the StatefulSet are already gone; the finalizer is retained until the Secrets are removed.
Source
Thrown at k8s-operator/reconciler/peerrelay/peerrelay.go:392
return fmt.Errorf("failed to update PeerRelay status: %w", err)
}
return nil
}
func (r *Reconciler) delete(ctx context.Context, logger *zap.SugaredLogger, pr *tsapi.PeerRelay) (reconcile.Result, error) {
logger.Infof("deleting PeerRelay %q", pr.Name)
if err := r.deleteDevicesFrom(ctx, logger, pr, 0); err != nil {
return reconcile.Result{}, fmt.Errorf("failed to delete tailnet devices for PeerRelay %q: %w", pr.Name, err)
}
if err := r.deleteStatefulSet(ctx, logger, pr); err != nil {
return reconcile.Result{}, fmt.Errorf("failed to delete StatefulSet for PeerRelay %q: %w", pr.Name, err)
}
if err := r.deleteConfigSecretsFrom(ctx, logger, pr, 0); err != nil {
return reconcile.Result{}, fmt.Errorf("failed to delete config Secrets for PeerRelay %q: %w", pr.Name, err)
}
if err := r.deleteServicesFrom(ctx, logger, pr, 0); err != nil {
return reconcile.Result{}, fmt.Errorf("failed to delete Services for PeerRelay %q: %w", pr.Name, err)
}
if err := reconciler.ClearFinalizer(ctx, r.Client, pr, reconciler.Finalizer); err != nil {
return reconcile.Result{}, fmt.Errorf("failed to remove finalizer from PeerRelay %q: %w", pr.Name, err)
}
r.tracker.Remove(pr.UID)
r.reissuer.RemoveState(pr.Name)
return reconcile.Result{}, nil
}
func (r *Reconciler) ensureService(ctx context.Context, logger *zap.SugaredLogger, desired *corev1.Service) error {
logger.Debugf("applying Service %q", desired.Name)View on GitHub (pinned to 6e0912f979)
Solutions
- Deleting the config Secrets failed; check RBAC delete permission on Secrets and retry.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at k8s-operator/reconciler/peerrelay/peerrelay.go:392 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/474b58c56f92da4c.
Report an issue: GitHub.