Skip to content

KindToResource naive pluralization silently breaks watches for irregular Kubernetes resource names #2003

@adityathebe

Description

@adityathebe

Summary

KindToResource in scrapers/kubernetes/informers.go pluralizes Kind to Resource by appending "s" (strings.ToLower(kind) + "s"). This produces incorrect resource names for Kubernetes types with irregular plurals, causing the dynamic informer to make requests to non-existent API endpoints and retry silently forever.

Affected Kinds

Kind KindToResource output Correct resource
Ingress ingresss ingresses
IngressClass ingressclasss ingressclasses
NetworkPolicy networkpolicys networkpolicies
Endpoints endpointss endpoints
StorageClass storageclasss storageclasses
RuntimeClass runtimeclasss runtimeclasses
PriorityClass priorityclasss priorityclasses
IPAddress ipaddresss ipaddresses
ComponentStatus componentstatuss componentstatuses
CSIStorageCapacity csistoragecapacitys csistoragecapacities

CRDs with non-standard plurals (defined in the CRD spec) are also affected.

References

  • KindToResource: scrapers/kubernetes/informers.go:354
  • Upstream resource list: k8s.io/client-go/informers/generic.go (ForResource switch)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions