{"record":{"id":"fbe43d4a9ba190cf","repo":"kubernetes/kops","slug":"scaleway-cloud-provider-currently-supports-only-on","errorCode":null,"errorMessage":"scaleway cloud provider currently supports only one availability zone","messagePattern":"scaleway cloud provider currently supports only one availability zone","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/new_cluster.go","lineNumber":856,"sourceCode":"\tcase api.CloudProviderAWS:\n\t\tif len(opt.Zones) > 0 && len(opt.SubnetIDs) > 0 {\n\t\t\tzoneToSubnetProviderID, err = getAWSZoneToSubnetProviderID(cluster.Spec.Networking.NetworkID, opt.Zones[0][:len(opt.Zones[0])-1], opt.SubnetIDs)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\tcase api.CloudProviderOpenstack:\n\t\tif len(opt.Zones) > 0 && len(opt.SubnetIDs) > 0 {\n\t\t\tzoneToSubnetProviderID, err = getOpenstackZoneToSubnetProviderID(cluster, allZones.List(), opt.SubnetIDs)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\tcase api.CloudProviderScaleway:\n\t\tif len(opt.Zones) > 1 {\n\t\t\treturn nil, fmt.Errorf(\"scaleway cloud provider currently supports only one availability zone\")\n\t\t}\n\t}\n\n\tfor _, zoneName := range allZones.List() {\n\t\t// We create default subnets named the same as the zones\n\t\tsubnetName := zoneName\n\n\t\tsubnet := model.FindSubnet(cluster, subnetName)\n\t\tif subnet == nil {\n\t\t\tsubnet = &api.ClusterSubnetSpec{\n\t\t\t\tName:   subnetName,\n\t\t\t\tZone:   subnetName,\n\t\t\t\tEgress: opt.Egress,\n\t\t\t}\n\t\t\tif subnetID, ok := zoneToSubnetProviderID[zoneName]; ok {\n\t\t\t\tsubnet.ID = subnetID\n\t\t\t}\n\t\t\tcluster.Spec.Networking.Subnets = append(cluster.Spec.Networking.Subnets, *subnet)","sourceCodeStart":838,"sourceCodeEnd":874,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/new_cluster.go#L838-L874","documentation":"setupZones enforces the same single-zone constraint for Scaleway that Hetzner has: kOps can only provision a Scaleway cluster into one availability zone. When opt.Zones contains more than one entry for CloudProviderScaleway, cluster creation is aborted with this error.","triggerScenarios":"Running `kops create cluster --cloud scaleway --zones fr-par-1,fr-par-2 ...` (any --zones list with more than one Scaleway AZ) triggers this during NewCluster.","commonSituations":"Attempting multi-AZ HA setups on Scaleway; scripts templated for AWS that expand multiple zones; typos where a comma accidentally splits one AZ into two entries.","solutions":["Pass exactly one Scaleway availability zone, e.g. --zones fr-par-1.","Check the --zones flag (and any generated cluster spec) for stray commas or extra entries.","Move to a multi-zone-capable provider if multiple AZs are a hard requirement."],"exampleFix":"// before\nkops create cluster --cloud scaleway --zones fr-par-1,nl-ams-1 mycluster.k8s.local\n// after\nkops create cluster --cloud scaleway --zones fr-par-1 mycluster.k8s.local","handlingStrategy":"validation","validationCode":"zones := strings.Split(*zonesFlag, \",\")\nif cloud == \"scaleway\" && len(zones) > 1 {\n    return fmt.Errorf(\"scaleway supports exactly one AZ; got %q\", zones)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use exactly one Scaleway AZ (e.g. fr-par-1) per cluster command.","Trim/parse --zones to catch stray commas producing empty or duplicate entries.","Keep provider-specific zone rules in your provisioning wrapper, not ad-hoc CLI calls."],"tags":["scaleway","zones","cluster-creation","validation"],"backgroundTag":"single-zone-provider-limit","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}