kubernetes/kops · error
base URL must be absolute
Error message
base URL must be absolute
What it means
Guard on the configured intermediate-fetch base URL: it parsed but is not absolute (no scheme) or has no host, so candidate AIA URLs cannot be normalized onto it. Configuration error.
Source
Thrown at upup/pkg/fi/cloudup/azure/attest.go:498
}
return nil
}
// microsoftIntermediateCandidateURLs treats signer AIA values as untrusted input. It keeps only
// entries that stay within the configured Microsoft PKI host/path allowlist and normalizes them
// onto the configured scheme and host.
func microsoftIntermediateCandidateURLs(baseURL string, signer *x509.Certificate) ([]string, error) {
if signer == nil {
return nil, fmt.Errorf("signer certificate is required")
}
base, err := url.Parse(baseURL)
if err != nil {
return nil, fmt.Errorf("parsing base URL: %w", err)
}
if !base.IsAbs() || base.Host == "" {
return nil, fmt.Errorf("base URL must be absolute")
}
basePath := path.Clean(strings.TrimRight(base.Path, "/"))
if basePath == "." || basePath == "/" {
return nil, fmt.Errorf("base URL path is too broad")
}
var urls []string
seen := make(map[string]struct{})
for _, rawURL := range signer.IssuingCertificateURL {
normalized, ok := normalizeMicrosoftIntermediateURL(base, basePath, rawURL)
if !ok {
continue
}
if _, found := seen[normalized]; found {
continue
}
seen[normalized] = struct{}{}View on GitHub (pinned to 4c8573c808)
Solutions
- Set the base URL to an absolute https:// URL with a host
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/azure/attest.go:498 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/50b0f9391823f00b.
Report an issue: GitHub.