kubernetes/kops · error

on Azure, subnets must include Regions

Error message

on Azure, subnets must include Regions

What it means

A configuration validation in BuildCloud for Azure clusters: no subnet in spec.networking.subnets defines a Region, so kOps cannot determine the Azure region for the cloud client. As with GCE, on Azure the region is inferred from subnet definitions; all-empty Regions make cluster construction impossible.

Source

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

			var zoneNames []string
			for _, subnet := range cluster.Spec.Networking.Subnets {
				if !fi.ArrayContains(zoneNames, subnet.Zone) {
					zoneNames = append(zoneNames, subnet.Zone)
				}
			}
			osc.UseZones(zoneNames)
			cloud = osc
		}

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

			cloudTags := map[string]string{azure.TagClusterName: cluster.ObjectMeta.Name}
			for k, v := range cluster.Spec.CloudLabels {
				cloudTags[k] = v
			}

			subscriptionID := cluster.Spec.CloudProvider.Azure.SubscriptionID
			resourceGroupName := cluster.AzureResourceGroupName()
			azureCloud, err := azure.NewAzureCloud(subscriptionID, resourceGroupName, region, cloudTags)
			if err != nil {
				return nil, err
			}

			cloud = azureCloud
		}
	case kops.CloudProviderScaleway:
		{

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Set region on at least one subnet in spec.networking.subnets to a valid Azure region (e.g. westeurope)
  2. Use kops edit cluster to fix the spec, then re-run
  3. When generating clusters programmatically, populate subnet regions from the target Azure location
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/utils.go:160 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/20a83f9e0a07ca88. Report an issue: GitHub.