kubernetes/kops · error

error reading manifest: %w

Error message

error reading manifest: %w

What it means

While updating an addon, updateAddon copies the manifest from its (often remote, e.g. s3://) URL via the VFS context; this error wraps a failure reading that manifest file. The manifest URL itself was resolved, but fetching its bytes failed (missing object, auth, or network).

Source

Thrown at channels/pkg/channels/addon.go:197

		if err != nil {
			merr = multierr.Append(merr, err)
		}
	}
	return required, merr
}

func (a *Addon) updateAddon(ctx context.Context, k8sClient kubernetes.Interface, vfsContext *vfs.VFSContext, pruner *Pruner, applier Applier, required *AddonUpdate) error {
	manifestURL, err := a.GetManifestFullUrl()
	if err != nil {
		return err
	}

	klog.Infof("Applying update from %q", manifestURL)

	// We copy the manifest to a temp file because it is likely e.g. an s3 URL, which kubectl can't read
	data, err := vfsContext.ReadFile(manifestURL.String())
	if err != nil {
		return fmt.Errorf("error reading manifest: %w", err)
	}

	var merr error
	var applyError, pruneError error

	if applyError = applier.Apply(ctx, data); applyError != nil {
		merr = multierr.Append(merr, fmt.Errorf("error applying update: %w", applyError))
	}

	if pruneError = pruner.Prune(ctx, data, a.Spec.Prune); pruneError != nil {
		merr = multierr.Append(merr, fmt.Errorf("error pruning manifest: %w", pruneError))
	}

	if applyError != nil && pruneError == nil {
		// If we failed to apply, but not prune, we should try to apply again
		if err := applier.Apply(ctx, data); err != nil {
			merr = multierr.Append(merr, fmt.Errorf("error applying update after prune: %w", err))
		} else {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check that the manifest URL logged just above ('Applying update from %q') exists and is readable
  2. Verify credentials/permissions for the VFS backend (e.g. S3 or GCS access)
  3. Retry if the failure was transient network/storage unavailability
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at channels/pkg/channels/addon.go:197 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/32219c94273dc5d7. Report an issue: GitHub.