tailscale/tailscale · error
error retrieving ingress services configuration: %w
Error message
error retrieving ingress services configuration: %w
What it means
Error "error retrieving ingress services configuration: %w" thrown in tailscale/tailscale.
Source
Thrown at cmd/k8s-operator/svc-for-pg.go:262
}
// TODO(irbekrm): right now if two Service resources attempt to apply different Tailscale Service configs (different
// tags) we can end up reconciling those in a loop. We should detect when a Service
// with the same generation number has been reconciled ~more than N times and stop attempting to apply updates.
if existingTSSvc == nil ||
!reflect.DeepEqual(tsSvc.Tags, existingTSSvc.Tags) ||
!ownersAreSetAndEqual(tsSvc, *existingTSSvc) {
logger.Infof("Ensuring Tailscale Service exists and is up to date")
if err = tsClient.VIPServices().CreateOrUpdate(ctx, tsSvc); err != nil {
return false, fmt.Errorf("error creating Tailscale Service: %w", err)
}
existingTSSvc = &tsSvc
}
cm, cfgs, err := ingressSvcsConfigs(ctx, r.Client, pg.Name, r.tsNamespace)
if err != nil {
return false, fmt.Errorf("error retrieving ingress services configuration: %w", err)
}
if cm == nil {
logger.Info("ConfigMap not yet created, waiting..")
return false, nil
}
if len(existingTSSvc.Addrs) == 0 {
existingTSSvc, err = tsClient.VIPServices().Get(ctx, tsSvc.Name)
switch {
case err != nil:
return false, fmt.Errorf("error getting Tailscale Service: %w", err)
case len(existingTSSvc.Addrs) == 0:
// TODO(irbekrm): this should be a retry
return false, fmt.Errorf("unexpected: Tailscale Service addresses not populated")
}
}
var tsSvcIPv4 netip.AddrView on GitHub (pinned to cfe32b8be6)
When it happens
Trigger: Thrown at cmd/k8s-operator/svc-for-pg.go:262 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@cfe32b8be6 (2026-08-15).
Data as JSON: /api/errors/7f1afacf04adac82.
Report an issue: GitHub.