kubernetes/kops · error

unknown CloudProvider %q

Error message

unknown CloudProvider %q

What it means

BuildCloud switches on the cluster's configured cloud provider and has no case for the given value, so it rejects any provider kops does not recognize with this message, echoing the raw provider string with %q.

Source

Thrown at upup/pkg/fi/cloudup/utils.go:229

	case kops.CloudProviderLinode:
		for _, subnet := range cluster.Spec.Networking.Subnets {
			if subnet.Region != "" {
				region = subnet.Region
				break
			}
		}
		if region == "" {
			return nil, fmt.Errorf("on Akamai (Linode), subnets must include Regions")
		}

		linodeCloud, err := linode.NewCloud(region)
		if err != nil {
			return nil, fmt.Errorf("error initializing Akamai (Linode) cloud: %w", err)
		}

		cloud = linodeCloud
	default:
		return nil, fmt.Errorf("unknown CloudProvider %q", cluster.GetCloudProvider())
	}
	return cloud, nil
}

func FindDNSHostedZone(dns dnsprovider.Interface, clusterDNSName string, dnsType kops.DNSType) (string, error) {
	klog.V(2).Infof("Querying for all DNS zones to find match for %q", clusterDNSName)

	clusterDNSName = "." + strings.TrimSuffix(clusterDNSName, ".")

	zonesProvider, ok := dns.Zones()
	if !ok {
		return "", fmt.Errorf("dns provider %T does not support zones", dns)
	}

	allZones, err := zonesProvider.List()
	if err != nil {
		return "", fmt.Errorf("error querying zones: %v", err)
	}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Set cloudProvider to a supported value: aws, gce, azure, do, hetzner, openstack, scaleway, linode (akamai), metal, or vsphere depending on build.
  2. Check spelling/casing in `kops get cluster <name> -o yaml` and correct the field via `kops edit cluster`.
  3. Ensure your kops version supports the provider; upgrade the binary if using a newer provider (e.g. Hetzner/Scaleway) on an old kops.

Example fix

# before
cloudProvider: awss
# after
cloudProvider: aws
Defensive patterns

Strategy: validation

Validate before calling

valid := map[string]bool{"aws":true,"gce":true,"azure":true,"do":true,"hetzner":true,"openstack":true,"scaleway":true,"linode":true,"metal":true,"vsphere":true}
if !valid[cluster.Spec.CloudProvider] {
    return fmt.Errorf("unsupported cloudProvider %q", cluster.Spec.CloudProvider)
}

Prevention

When it happens

Trigger: Any kops command that calls BuildCloud (create cluster, create ig, delete cluster, delete instance, etc.) where cluster.spec.cloudProvider is a misspelled, unsupported, or empty value, e.g. "vmware", "linode" vs an unexpected casing, or a null/zero-value string.

Common situations: Typos in a hand-edited cluster manifest (`cloudProvider: awss`); using a provider not compiled into this kops build; an empty spec because the field was never set; config generated by external tooling using non-kops provider names.

Related errors


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