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.Addr

View 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.