{"record":{"id":"7f7f9ed2a833ccef","repo":"kubernetes/kops","slug":"error-getting-ingress-status-v","errorCode":null,"errorMessage":"error getting ingress status: %v","messagePattern":"error getting ingress status: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/commands/toolbox_enroll.go","lineNumber":728,"sourceCode":"\t\treturn *b.wellKnownAddresses, nil\n\t}\n\n\tcloud, err := b.GetCloud(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfullCluster, err := b.GetFullCluster(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Determine the well-known addresses for the cluster.\n\twellKnownAddresses := make(model.WellKnownAddresses)\n\t{\n\t\tingresses, err := cloud.GetApiIngressStatus(fullCluster)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error getting ingress status: %v\", err)\n\t\t}\n\n\t\tfor _, ingress := range ingresses {\n\t\t\t// TODO: Do we need to support hostnames?\n\t\t\t// if ingress.Hostname != \"\" {\n\t\t\t// \tapiserverAdditionalIPs = append(apiserverAdditionalIPs, ingress.Hostname)\n\t\t\t// }\n\t\t\tif ingress.IP != \"\" {\n\t\t\t\twellKnownAddresses[wellknownservices.KubeAPIServer] = append(wellKnownAddresses[wellknownservices.KubeAPIServer], ingress.IP)\n\t\t\t}\n\t\t}\n\t}\n\tif len(wellKnownAddresses[wellknownservices.KubeAPIServer]) == 0 {\n\t\t// TODO: Should we support DNS?\n\t\treturn nil, fmt.Errorf(\"unable to determine IP address for kube-apiserver\")\n\t}\n\tfor k := range wellKnownAddresses {\n\t\tsort.Strings(wellKnownAddresses[k])","sourceCodeStart":710,"sourceCodeEnd":746,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/pkg/commands/toolbox_enroll.go#L710-L746","documentation":"GetWellKnownAddresses queries the cloud load balancer for the API ingress status via cloud.GetApiIngressStatus(fullCluster). If that cloud API call fails, the error is wrapped as 'error getting ingress status: %v'. It indicates the load-balancer/ingress object backing the kube-apiserver could not be described.","triggerScenarios":"GetBootstrapData -> GetWellKnownAddresses calling GetApiIngressStatus when the cloud LB API errors: LB not yet provisioned, throttling, auth failure, or the loadBalancer object is absent from the cluster spec.","commonSituations":"Newly created cluster where the API load balancer is still provisioning; IAM/credentials lacking elb/loadBalancer read permissions; cloud API outage or rate limiting; running from a network that cannot reach the cloud endpoint.","solutions":["Read the wrapped cause to identify whether it is auth, throttling, or not-found.","Confirm the API load balancer exists in the cloud console / `kops get cluster -oyaml` (spec.api.loadBalancer).","Re-check cloud credentials and IAM permissions for describing load balancers.","Wait for LB provisioning to finish and retry; add backoff for throttling errors."],"exampleFix":"// before\nwellKnownAddresses built directly after one call, no retry\n// after\ningresses, err := cloud.GetApiIngressStatus(fullCluster)\nif err != nil {\n\t// retry with backoff for transient API/throttling errors before failing\n\treturn nil, fmt.Errorf(\"error getting ingress status: %v\", err)\n}","handlingStrategy":"retry","validationCode":"// Confirm the API load balancer is described by the cloud SDK before building addresses\n// e.g. aws elbv2 describe-load-balancers --names <apiserver-lb>","typeGuard":null,"tryCatchPattern":"if err != nil {\n\tvar throttle *ThrottlingError\n\tif errors.As(err, &throttle) {\n\t\ttime.Sleep(backoff) // then retry GetApiIngressStatus\n\t}\n\treturn fmt.Errorf(\"error getting ingress status: %v\", err)\n}","preventionTips":["Wait for kops validate cluster to pass before enrolling","Ensure IAM permissions include load-balancer describe/read","Add exponential backoff for cloud API calls"],"tags":["kops","load-balancer","cloud-api","ingress"],"backgroundTag":"ingress-status-lookup-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"}