{"record":{"id":"6a27b4d47e5fafff","repo":"kubernetes/kops","slug":"failed-to-build-load-balancer-client-w","errorCode":null,"errorMessage":"failed to build load balancer client: %w","messagePattern":"failed to build load balancer client: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstack/cloud.go","lineNumber":440,"sourceCode":"\t\t\treturn nil, fmt.Errorf(\"error building dns client: %w\", err)\n\t\t}\n\t}\n\n\tc := &openstackCloud{\n\t\tcinderClient:  cinderClient,\n\t\tneutronClient: neutronClient,\n\t\tnovaClient:    novaClient,\n\t\tdnsClient:     dnsClient,\n\t\tglanceClient:  glanceClient,\n\t\ttags:          tags,\n\t\tregion:        region,\n\t\tuseOctavia:    false,\n\t}\n\n\tsetFloatingIPSupport(c, spec)\n\terr = buildLoadBalancerClient(c, spec, provider, region)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to build load balancer client: %w\", err)\n\t}\n\topenstackCloudInstances[region] = c\n\n\treturn c, nil\n\n}\n\nfunc setFloatingIPSupport(c *openstackCloud, spec *kops.OpenstackSpec) {\n\tif spec == nil || spec.Router == nil {\n\t\tc.floatingEnabled = false\n\t\tklog.V(2).Infof(\"Floating IP support for OpenStack disabled\")\n\t\treturn\n\t}\n\n\tc.floatingEnabled = true\n\tc.extNetworkName = spec.Router.ExternalNetwork\n\n\tif spec.Router.ExternalSubnet != nil {","sourceCodeStart":422,"sourceCodeEnd":458,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstack/cloud.go#L422-L458","documentation":"Wraps an error from buildLoadBalancerClient, which creates either an Octavia (NewLoadBalancerV2) or Neutron-lbaas (NewNetworkV2) service client. It means the load-balancer service client could not be constructed for the region, typically because the service endpoint is missing or auth failed.","triggerScenarios":"kops setFloatingIPSupport/buildLoadBalancerClient call path: openstack.NewLoadBalancerV2 or openstack.NewNetworkV2 fails due to no 'load-balancer' (octavia) or 'network' endpoint in the catalog, bad region, or authentication error.","commonSituations":"Cluster without Octavia deployed while LB is configured; mistyped region; expired/invalid credentials; service catalog entry missing for the project.","solutions":["Confirm Octavia (service type 'load-balancer') exists in the region: openstack service list / openstack loadbalancer list","Correct the region in the cluster spec so EndpointOpts resolves an endpoint","Fix OpenStack credentials (OS_* env or clouds.yaml) and verify with an LB CLI call","Ensure the project has RBAC access to the load-balancing service"],"exampleFix":"// before: spec without octavia in a neutron-lbaas-only cloud\n// after: deploy Octavia or set spec.Loadbalancer.UseOctavia = false and ensure neutron lbaasv2 endpoint exists","handlingStrategy":"validation","validationCode":"// verify an LB service endpoint exists for the region before building the cluster\nendpoints, _ := client.ServiceEndpointDiscovery(\"load-balancer\")\nif endpoints == nil { return errors.New(\"region lacks load-balancer service\") }","typeGuard":null,"tryCatchPattern":"// go\nif err != nil && strings.Contains(err.Error(), \"failed to build load balancer client\") {\n    klog.Errorf(\"check octavia/neutron lbaas endpoint for region %s\", region)\n}","preventionTips":["Ensure Octavia is part of the deployment baseline","Validate region names against 'openstack endpoint list'","Run kops with valid, non-expired credentials"],"tags":["openstack","loadbalancer","gophercloud","octavia"],"backgroundTag":"openstack-service-endpoint-not-found","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"}