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, nilView on GitHub (pinned to 4c8573c808)
Solutions
- Set spec.cloudProvider in the cluster spec (e.g. aws, gce, openstack)
- Or set spec.externalCloudControllerManager.cloudProvider explicitly if it should differ from the cluster-level provider
- 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.