Skip to content

Changing a Service from type: LoadBalancer to type: ClusterIP doesn't remove status.loadBalancer.ingress[] #9972

Open
@dsharp-pivotal

Description

@dsharp-pivotal

Steps to reproduce the issue:

  1. minikube start --memory 8192 --cpus 8 --disk-size 80g
  2. minikube tunnel
  3. Create a Service my-svc with type: LoadBalancer
  4. Observe kubectl get service my-svc -o yaml shows status.loadBalancer.ingress[0].ip with the service's clusterIP
  5. kubectl patch service my-svc --type=merge -p "spec: {type: ClusterIP}"

Actual:

status.loadBalancer.ingress[0].ip remains.

Expected:

status.loadBalancer.ingress should be removed.

This would help automated tests that need to work with both minikube and cloud k8s clusters like GKE, that test adding and removing external access on Service.

We took a look at LoadBalancerEmulator, and saw that it has a method cleanupService(). However, it is only called on Services with type: LoadBalancer, and the cleanup methods are only called during shutdown.

Ideally, it seems like PatchServices should reconcile all Services to add or remove status.loadBalancer.ingress as appropriate.

Metadata

Metadata

Assignees

Labels

help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.kind/bugCategorizes issue or PR as related to a bug.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.long-term-supportLong-term support issues that can't be fixed in codepriority/backlogHigher priority than priority/awaiting-more-evidence.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions