K8s: don't publish metrics for local services that are always available (#101003)

This commit is contained in:
Charandas
2025-02-19 22:39:40 +02:00
committed by GitHub
parent ffefe9013e
commit b00f2e02c7
@@ -127,7 +127,10 @@ func NewAvailableConditionController(
func (c *AvailableConditionController) sync(key string) error {
originalAPIService, err := c.apiServiceLister.Get(key)
if apierrors.IsNotFound(err) {
c.metrics.ForgetAPIService(key)
if originalAPIService.Spec.Service != nil {
// Only reset state, if the service was a remote service
c.metrics.ForgetAPIService(key)
}
return nil
}
if err != nil {
@@ -292,7 +295,10 @@ func (c *AvailableConditionController) sync(key string) error {
// apiservices. Doing that means we don't want to quickly issue no-op updates.
func (c *AvailableConditionController) updateAPIServiceStatus(originalAPIService, newAPIService *apiregistrationv1.APIService) (*apiregistrationv1.APIService, error) {
// update this metric on every sync operation to reflect the actual state
c.metrics.SetUnavailableGauge(newAPIService)
if newAPIService.Spec.Service != nil {
// Only expose the metric for remote services, trusts the type on the new object
c.metrics.SetUnavailableGauge(newAPIService)
}
if equality.Semantic.DeepEqual(originalAPIService.Status, newAPIService.Status) {
return newAPIService, nil
@@ -319,7 +325,10 @@ func (c *AvailableConditionController) updateAPIServiceStatus(originalAPIService
return nil, err
}
c.metrics.SetUnavailableCounter(originalAPIService, newAPIService)
if newAPIService.Spec.Service != nil {
// Only expose the metric for remote services, trusts the type on the new object
c.metrics.SetUnavailableCounter(originalAPIService, newAPIService)
}
return newAPIService, nil
}