kubernetes/kops · error

Scaleway support is currently alpha, and is feature-gated.

Error message

Scaleway support is currently alpha, and is feature-gated.  export KOPS_FEATURE_FLAGS=Scaleway

What it means

Scaleway support in kOps is alpha and gated behind the 'Scaleway' feature flag. In apply_cluster.go's Run, any apply targeting cloudProvider=scaleway without the flag enabled returns this error before any cloud API calls are made.

Source

Thrown at upup/pkg/fi/cloudup/apply_cluster.go:488

			if len(sshPublicKeys) != 1 {
				return nil, fmt.Errorf("exactly one 'admin' SSH public key can be specified when running with AzureCloud; please delete a key using `kops delete secret`")
			}
		}
	case kops.CloudProviderOpenstack:
		{
			if len(sshPublicKeys) == 0 {
				return nil, fmt.Errorf("SSH public key must be specified when running with Openstack (create with `kops create secret --name %s sshpublickey admin -i ~/.ssh/id_rsa.pub`)", cluster.ObjectMeta.Name)
			}

			if len(sshPublicKeys) != 1 {
				return nil, fmt.Errorf("exactly one 'admin' SSH public key can be specified when running with Openstack; please delete a key using `kops delete secret`")
			}
		}

	case kops.CloudProviderScaleway:
		{
			if !featureflag.Scaleway.Enabled() {
				return nil, fmt.Errorf("Scaleway support is currently alpha, and is feature-gated.  export KOPS_FEATURE_FLAGS=Scaleway")
			}

			if len(sshPublicKeys) == 0 {
				return nil, fmt.Errorf("SSH public key must be specified when running with Scaleway (create with `kops create secret --name %s sshpublickey admin -i ~/.ssh/id_rsa.pub`)", cluster.ObjectMeta.Name)
			}
			if len(sshPublicKeys) != 1 {
				return nil, fmt.Errorf("exactly one 'admin' SSH public key can be specified when running with Scaleway; please delete a key using `kops delete secret`")
			}

			scwCloud := cloud.(scaleway.ScwCloud)
			scwZone = scwCloud.Zone()
		}

	case kops.CloudProviderLinode:
		{
			if !featureflag.Linode.Enabled() {
				return nil, fmt.Errorf("Akamai (Linode) support is currently alpha, and is feature-gated. Please export KOPS_FEATURE_FLAGS=Linode")
			}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Export the feature flag: `export KOPS_FEATURE_FLAGS=Scaleway` and rerun the command
  2. If multiple flags are needed, comma-separate them: `export KOPS_FEATURE_FLAGS=Scaleway,AlphaAllowGCE`
  3. Verify with `kops version`/docs that your kOps build still ships Scaleway behind the flag

Example fix

// before
kops update cluster --name scw.example.com
// after
export KOPS_FEATURE_FLAGS=Scaleway
kops update cluster --name scw.example.com
Defensive patterns

Strategy: validation

Validate before calling

export KOPS_FEATURE_FLAGS=${KOPS_FEATURE_FLAGS:+$KOPS_FEATURE_FLAGS,}Scaleway; [ "${KOPS_FEATURE_FLAGS#*Scaleway}" != "$KOPS_FEATURE_FLAGS" ] && echo ok

Try / catch

if err := run(); err != nil { if strings.Contains(err.Error(), "feature-gated") { return fmt.Errorf("set KOPS_FEATURE_FLAGS=%s: %w", "Scaleway", err) } return err }

Prevention

When it happens

Trigger: `kops update cluster` (or create/apply paths reaching Run) on a cluster whose spec sets cloudProvider=scaleway while KOPS_FEATURE_FLAGS does not include 'Scaleway'.

Common situations: Users following Scaleway tutorials without setting the env var, CI environments missing KOPS_FEATURE_FLAGS, or exporting the flag with wrong case/extra whitespace.

Related errors


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