kubernetes/kops · error

Cloud Provider is not set

Error message

Cloud Provider is not set

What it means

Thrown in CloudControllerConfigArgv when neither ExternalCloudControllerManager.CloudProvider nor cluster.GetCloudProvider() yields a cloud provider name, so the required --cloud-provider flag cannot be emitted. The cluster spec is missing its cloudProvider designation entirely — an inconsistent or incompletely specified cluster.

Source

Thrown at upup/pkg/fi/cloudup/template_functions.go:704

		return nil, fmt.Errorf("ExternalCloudControllerManager is nil")
	}

	argv, err := flagbuilder.BuildFlagsList(cluster.Spec.ExternalCloudControllerManager)
	if err != nil {
		return nil, err
	}

	// default verbosity to 2
	if cluster.Spec.ExternalCloudControllerManager.LogLevel == 0 {
		argv = append(argv, "--v=2")
	}

	// take the cloud provider value from clusterSpec if unset
	if cluster.Spec.ExternalCloudControllerManager.CloudProvider == "" {
		if cluster.GetCloudProvider() != "" {
			argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.GetCloudProvider()))
		} else {
			return nil, fmt.Errorf("Cloud Provider is not set")
		}
	}

	// default use-service-account-credentials to true
	if cluster.Spec.ExternalCloudControllerManager.UseServiceAccountCredentials == nil {
		argv = append(argv, fmt.Sprintf("--use-service-account-credentials=%t", true))
	}

	switch cluster.GetCloudProvider() {
	case kops.CloudProviderHetzner:
		// Hetzner does not use cloud config.
	case kops.CloudProviderAzure:
		// Azure reads its cloud config from the azure-cloud-provider Secret.
	default:
		argv = append(argv, "--cloud-config=/etc/kubernetes/cloud.config")
	}

	return argv, nil

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Set spec.cloudProvider in the cluster spec (e.g. aws, gce, openstack)
  2. Or set spec.externalCloudControllerManager.cloudProvider explicitly if it should differ from the cluster-level provider
  3. Re-create or edit the cluster with kops edit cluster to fix the spec
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/template_functions.go:704 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/c2c35da5b528fe7a. Report an issue: GitHub.