kubernetes/kops · error

kubernetes feature gate must include a feature name

Error message

kubernetes feature gate must include a feature name

What it means

parseKubernetesFeatureGate returns this sentinel validation error when an entry consists only of a +/- sign with no feature name after it (e.g. '+,'). The sign was parsed but the remaining gate string is empty, so the entry is invalid.

Source

Thrown at upup/pkg/fi/cloudup/new_cluster.go:634

}

func parseKubernetesFeatureGate(featureGate string) (string, bool, error) {
	featureGate = strings.TrimSpace(featureGate)
	if featureGate == "" {
		return "", false, fmt.Errorf("kubernetes feature gate must not be empty")
	}

	enabled := true
	switch featureGate[0] {
	case '+':
		featureGate = strings.TrimSpace(featureGate[1:])
	case '-':
		enabled = false
		featureGate = strings.TrimSpace(featureGate[1:])
	}

	if featureGate == "" {
		return "", false, fmt.Errorf("kubernetes feature gate must include a feature name")
	}

	return featureGate, enabled, nil
}

func setupVPC(opt *NewClusterOptions, cluster *api.Cluster, cloud fi.Cloud) error {
	ctx := context.TODO()
	cluster.Spec.Networking.NetworkID = opt.NetworkID

	switch cluster.GetCloudProvider() {
	case api.CloudProviderAWS:
		if cluster.Spec.Networking.NetworkID == "" && len(opt.SubnetIDs) > 0 {
			awsCloud := cloud.(awsup.AWSCloud)
			res, err := awsCloud.EC2().DescribeSubnets(ctx, &ec2.DescribeSubnetsInput{
				SubnetIds: []string{opt.SubnetIDs[0]},
			})
			if err != nil {
				return fmt.Errorf("error describing subnet %s: %v", opt.SubnetIDs[0], err)

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Provide a feature name after the +/- sign (e.g. +CSIMigration)
  2. Fix scripts interpolating empty gate variables into the flag
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/new_cluster.go:634 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/6d6451ce64e02ec9. Report an issue: GitHub.