kubernetes/kops · error

ClusterName is missing

Error message

ClusterName is missing

What it means

GetCluster fetches the kops.Cluster from the state store, but first requires b.ClusterName. If the builder has no cached Cluster and ClusterName is empty, this sentinel error is returned — the builder cannot know which cluster to read.

Source

Thrown at pkg/commands/toolbox_enroll.go:652

		return nil, err
	}

	instanceGroupList, err := clientset.InstanceGroupsFor(cluster).List(ctx, metav1.ListOptions{})
	if err != nil {
		return nil, fmt.Errorf("reading instance groups: %w", err)
	}

	b.instanceGroups = instanceGroupList
	return instanceGroupList, nil
}

func (b *ConfigBuilder) GetCluster(ctx context.Context) (*kops.Cluster, error) {
	if b.Cluster != nil {
		return b.Cluster, nil
	}

	if b.ClusterName == "" {
		return nil, fmt.Errorf("ClusterName is missing")
	}

	clientset, err := b.GetClientset(ctx)
	if err != nil {
		return nil, err
	}
	cluster, err := clientset.GetCluster(ctx, b.ClusterName)
	if err != nil {
		return nil, err
	}
	if cluster == nil {
		return nil, fmt.Errorf("cluster %q not found", b.ClusterName)
	}
	b.Cluster = cluster
	return cluster, nil
}

func (b *ConfigBuilder) GetAssetBuilder(ctx context.Context) (*assets.AssetBuilder, error) {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Set ClusterName on the ConfigBuilder (or pass --name on the CLI)
  2. Check for a cached b.Cluster if you expected the pre-set object to be used
  3. Add an early guard that surfaces the missing cluster name as a usage error

Example fix

// before
b := ConfigBuilder{Clientset: cs}
cluster, err := b.GetCluster(ctx) // "ClusterName is missing"
// after
b := ConfigBuilder{Clientset: cs, ClusterName: "c1.example.com"}
Defensive patterns

Strategy: validation

Validate before calling

if b.ClusterName == "" && b.Cluster == nil {
    return errors.New("--name (cluster name) is required")
}

Type guard

func (b *ConfigBuilder) HasClusterRef() bool { return b.Cluster != nil || b.ClusterName != "" }

Prevention

When it happens

Trigger: Calling GetCluster (or anything downstream: GetCloud, GetFullCluster, GetInstanceGroups, GetAssetBuilder) on a ConfigBuilder with Cluster == nil and ClusterName == "".

Common situations: Omitting --name on `kops toolbox enroll`; programmatic builder use without setting ClusterName; refactors dropping the flag-to-builder wiring.

Understand the failure class

Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.

Related errors


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