{"record":{"id":"ceee10cdd3126d6a","repo":"kubernetes/kops","slug":"unsupported-cloud-provider-s-ceee10","errorCode":null,"errorMessage":"unsupported cloud provider: %s","messagePattern":"unsupported cloud provider: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/nodeup/nodetasks/prefix.go","lineNumber":55,"sourceCode":"\ntype Prefix struct {\n\tName string\n}\n\nvar _ fi.HasName = (*Prefix)(nil)\n\nfunc (f *Prefix) GetName() *string {\n\treturn &f.Name\n}\n\n// String returns a string representation, implementing the Stringer interface\nfunc (p *Prefix) String() string {\n\treturn fmt.Sprintf(\"Prefix: %s\", p.Name)\n}\n\nfunc (e *Prefix) Find(c *fi.NodeupContext) (*Prefix, error) {\n\tif c.T.BootConfig.CloudProvider != kops.CloudProviderAWS {\n\t\treturn nil, fmt.Errorf(\"unsupported cloud provider: %s\", c.T.BootConfig.CloudProvider)\n\t}\n\n\tmac, err := getInstanceMetadataFirstValue(c.Context(), \"mac\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tprefixes, err := getInstanceMetadataList(c.Context(), path.Join(\"network/interfaces/macs/\", mac, \"/ipv6-prefix\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(prefixes) == 0 {\n\t\treturn nil, nil\n\t}\n\n\tklog.V(2).Infof(\"found prefix for primary network interface: %q\", prefixes[0])\n\tactual := &Prefix{\n\t\tName: e.Name,","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/nodeup/nodetasks/prefix.go#L37-L73","documentation":"Prefix.Find validates that the node's boot config targets AWS before attempting to reconcile an IPv6 prefix delegation task; any other cloud provider returns this error. Prefix delegation via EC2 AssignIpv6Addresses only exists on AWS, so the task is AWS-only.","triggerScenarios":"A Prefix task (IPv6 prefix delegation) is present in nodeup's task map while BootConfig.CloudProvider is GCE, OpenStack, Azure, Hetzner, DO, etc.","commonSituations":"Copying an AWS cluster spec as a template for another cloud and leaving the IPv6/prefix settings enabled; switching a cluster's cloudProvider without removing prefix-related configuration.","solutions":["Remove or disable IPv6 prefix delegation settings in the cluster spec when the cloud is not AWS.","Set cloudProvider correctly and regenerate the nodeup config with `kops update cluster`.","Only define the Prefix task on AWS instance groups."],"exampleFix":"// before\nspec:\n  cloudProvider: openstack\n  nonMasqueradeCIDR: fd00::/8  # ipv6 prefix config left over\n// after\nspec:\n  cloudProvider: openstack\n  # prefix/ipv6-delegation config removed","handlingStrategy":"validation","validationCode":"if bootConfig.CloudProvider != kops.CloudProviderAWS {\n    // do not define Prefix tasks on non-AWS clouds\n    return nil\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Do not copy IPv6 prefix-delegation config between clouds","Regenerate nodeup config after changing cloudProvider","Audit cluster spec for AWS-only fields when migrating templates"],"tags":["ipv6","aws","nodeup","cloud-provider"],"backgroundTag":"unsupported-cloud-provider","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"}