{"record":{"id":"215c7543e67595b0","repo":"kubernetes/kops","slug":"error-building-designate-dns-provider-v","errorCode":null,"errorMessage":"error building (Designate) DNS provider: %v","messagePattern":"error building \\(Designate\\) DNS provider: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstack/cloud.go","lineNumber":562,"sourceCode":"\treturn c.dnsClient\n}\n\nfunc (c *openstackCloud) ImageClient() *gophercloud.ServiceClient {\n\treturn c.glanceClient\n}\n\nfunc (c *openstackCloud) Region() string {\n\treturn c.region\n}\n\nfunc (c *openstackCloud) ProviderID() kops.CloudProviderID {\n\treturn kops.CloudProviderOpenstack\n}\n\nfunc (c *openstackCloud) DNS() (dnsprovider.Interface, error) {\n\tprovider, err := dnsprovider.GetDnsProvider(designate.ProviderName, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error building (Designate) DNS provider: %v\", err)\n\t}\n\treturn provider, nil\n}\n\n// FindVPCInfo list subnets in network\nfunc (c *openstackCloud) FindVPCInfo(id string) (*fi.VPCInfo, error) {\n\treturn findVPCInfo(c, id, c.zones)\n}\n\nfunc findVPCInfo(c OpenstackCloud, id string, zones []string) (*fi.VPCInfo, error) {\n\tvpcInfo := &fi.VPCInfo{}\n\t// Find subnets in the network\n\t{\n\t\tif len(zones) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"could not initialize zones\")\n\t\t}\n\t\tklog.V(2).Infof(\"Calling ListSubnets for subnets in Network %q\", id)\n\t\topt := subnets.ListOpts{","sourceCodeStart":544,"sourceCodeEnd":580,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstack/cloud.go#L544-L580","documentation":"Returned by openstackCloud.DNS() when dnsprovider.GetDnsProvider for the Designate provider fails to instantiate the DNS provider interface. It indicates the Designate dnsprovider plugin could not initialize, usually because the underlying OpenStack DNS client/auth could not be built.","triggerScenarios":"DNS() is called (e.g. during cluster DNS operations) and designate.ProviderName cannot be resolved to a working provider — nil config with no ambient OpenStack credentials, or the Designate client creation inside the provider errors.","commonSituations":"Running kops where OS_* credentials are missing/expired so Designate auth fails; Designate not deployed; dnsprovider registry not including designate (build issue); project lacks access to the dns service.","solutions":["Export valid OpenStack credentials (OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_PROJECT_NAME, OS_REGION_NAME) and verify 'openstack zone list' works","Confirm Designate is deployed and reachable","Rebuild with the designate dnsprovider plugin registered (check imports of dnsprovider/plugins/openstack/designate)","Check the underlying %v message for the specific provider init failure"],"exampleFix":"// before: running without credentials\n$ kops update cluster ... // no OS_* env\n// after\n$ source openstack-rc.sh && kops update cluster ...","handlingStrategy":"validation","validationCode":"// ensure credentials and designate availability before calling DNS()\nif os.Getenv(\"OS_AUTH_URL\") == \"\" { return errors.New(\"OpenStack credentials not configured\") }\n// optionally: openstack zone list must succeed","typeGuard":null,"tryCatchPattern":"// go\nprovider, err := cloud.DNS()\nif err != nil {\n    return fmt.Errorf(\"DNS unavailable; check designate and OS_* credentials: %w\", err)\n}","preventionTips":["Source the OpenStack rc file before kops commands","Ensure Designate is deployed where clusters live","Verify the designate dnsprovider plugin is registered in the build"],"tags":["openstack","dns","designate","provider"],"backgroundTag":"dns-provider-init-failed","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"}