{"record":{"id":"2528f90fbc3fbb3d","repo":"kubernetes/kops","slug":"error-loading-channel-q-v","errorCode":null,"errorMessage":"error loading channel %q: %v","messagePattern":"error loading channel %q: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"channels/pkg/cmd/apply_channel.go","lineNumber":345,"sourceCode":"\treturn channelVersions, nil\n}\n\nfunc buildMenu(vfsContext *vfs.VFSContext, kubernetesVersion semver.Version, channelLocation string) (*channels.AddonMenu, error) {\n\tmenu := channels.NewAddonMenu()\n\n\tlocation, err := url.Parse(channelLocation)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"unable to parse argument %q as url\", channelLocation)\n\t}\n\tif !location.IsAbs() {\n\t\texpanded := \"https://raw.githubusercontent.com/kubernetes/kops/master/addons/\" + channelLocation + \"/addon.yaml\"\n\t\t// Disallow the use of legacy addons from the \"well-known\" location starting Kubernetes 1.23:\n\t\t// https://raw.githubusercontent.com/kubernetes/kops/master/addons/<name>/addon.yaml\n\t\treturn nil, fmt.Errorf(\"legacy addons are deprecated and unmaintained, use managed addons instead of %s\", expanded)\n\t}\n\to, err := channels.LoadAddons(vfsContext, channelLocation, location)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error loading channel %q: %v\", location, err)\n\t}\n\n\tcurrent, err := o.GetCurrent(kubernetesVersion)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error processing latest versions in %q: %v\", location, err)\n\t}\n\tmenu.MergeAddons(current)\n\treturn menu, nil\n}\n","sourceCodeStart":327,"sourceCodeEnd":355,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/channels/pkg/cmd/apply_channel.go#L327-L355","documentation":"After parsing an absolute location, buildMenu calls channels.LoadAddons to fetch and parse the addon manifest. Any failure (fetch error, invalid YAML, schema violation) is wrapped as 'error loading channel %q: %v'. This is the error surface for unusable or unreachable channel manifests.","triggerScenarios":"channels.LoadAddons fails during `kops apply channel <abs-url>`: 404 on addon.yaml, TLS/proxy failures, VFS path errors, or malformed/invalid manifest content.","commonSituations":"Typo in the addon.yaml URL, private repo requiring auth, corporate proxy blocking raw.githubusercontent.com, hand-authored addon.yaml failing schema validation.","solutions":["Confirm the addon.yaml URL is reachable and valid (curl/browser)","Fix the URL path/branch/tag or the VFS path to the channel manifest","Validate custom addon.yaml against the kOps addon schema","Check proxy/TLS settings if the wrapped cause is a fetch error"],"exampleFix":"// before\nkops apply channel https://raw.githubusercontent.com/kubernetes/kops/main/addons/dns-controller/addon.yaml  # 404, wrong branch\n// after\nkops apply channel https://raw.githubusercontent.com/kubernetes/kops/master/addons/dns-controller/addon.yaml","handlingStrategy":"fallback","validationCode":"resp, err := http.Get(channelLocation)\nif err != nil {\n\treturn fmt.Errorf(\"channel manifest unreachable: %w\", err)\n}\nif resp.StatusCode != http.StatusOK {\n\treturn fmt.Errorf(\"channel manifest returned %d; check URL\", resp.StatusCode)\n}","typeGuard":null,"tryCatchPattern":"o, err := channels.LoadAddons(vfsContext, channelLocation, location)\nif err != nil {\n\tif fallback := os.Getenv(\"FALLBACK_CHANNEL_URL\"); fallback != \"\" {\n\t\treturn buildMenu(vfsContext, kubernetesVersion, fallback)\n\t}\n\treturn nil, fmt.Errorf(\"error loading channel %q: %v\", location, err)\n}","preventionTips":["curl the addon.yaml URL before applying to verify reachability","Pin manifests to a specific tag/commit instead of a mutable branch","Validate custom addon.yaml against the kOps addon schema","Configure proxy/TLS settings for restricted networks"],"tags":["network","addons","manifest","vfs"],"backgroundTag":"channel-manifest-load-failed","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}