-
Bug
-
Resolution: Done-Errata
-
Major
-
4.13, 4.14
Description of problem:
Ingress operator is constantly reverting Internal Services when it detects a service change that are default values.
Version-Release number of selected component (if applicable):
4.13, 4.14
How reproducible:
100%
Steps to Reproduce:
1. Create an ingress controller 2. Watch ingress operator logs for excess updates "updated internal service" [I'll provide a more specific reproducer if needed]
Actual results:
Excess: 2023-05-04T02:08:02.331Z INFO operator.ingress_controller ingress/internal_service.go:44 updated internal service ...
Expected results:
No updates
Additional info:
The diff looks like: 2023-05-05T15:12:06.668Z INFO operator.ingress_controller ingress/internal_service.go:44 updated internal service {"namespace": "openshift-ingress", "name": "router-internal-default", "diff": " &v1.Service{ TypeMeta: {}, ObjectMeta: {Name: \"router-internal-default\", Namespace: \"openshift-ingress\", UID: \"815f1499-a4d4-4cb8-9a5b-9905580e0ffd\", ResourceVersion: \"8031\", ...}, Spec: v1.ServiceSpec{ Ports: {{Name: \"http\", Protocol: \"TCP\", Port: 80, TargetPort: {Type: 1, StrVal: \"http\"}, ...}, {Name: \"https\", Protocol: \"TCP\", Port: 443, TargetPort: {Type: 1, StrVal: \"https\"}, ...}, {Name: \"metrics\", Protocol: \"TCP\", Port: 1936, TargetPort: {Type: 1, StrVal: \"metrics\"}, ...}}, Selector: {\"ingresscontroller.operator.openshift.io/deployment-ingresscontroller\": \"default\"}, ClusterIP: \"172.30.56.107\", - ClusterIPs: []string{\"172.30.56.107\"}, + ClusterIPs: nil, Type: \"ClusterIP\", ExternalIPs: nil, - SessionAffinity: \"None\", + SessionAffinity: \"\", LoadBalancerIP: \"\", LoadBalancerSourceRanges: nil, ... // 3 identical fields PublishNotReadyAddresses: false, SessionAffinityConfig: nil, - IPFamilies: []v1.IPFamily{\"IPv4\"}, + IPFamilies: nil, - IPFamilyPolicy: &\"SingleStack\", + IPFamilyPolicy: nil, AllocateLoadBalancerNodePorts: nil, LoadBalancerClass: nil, - InternalTrafficPolicy: &\"Cluster\", + InternalTrafficPolicy: nil, }, Status: {}, } "}
Messing around with unit testing, it looks like internalServiceChanged triggers true when spec.IPFamilies, spec.IPFamilyPolicy, and spec.InternalTrafficPolicy are set to the default values that you see in the diff above.
Ingress operator then resets back to nil, then the API server sets them to their defaults, and this process repeats.
internalServiceChanged should either ignore, or explicitly set these values.
- is cloned by
-
OCPBUGS-33990 [4.13] Ingress Operator is needlessly reverting default values in Internal Services
- Closed
- is depended on by
-
OCPBUGS-33990 [4.13] Ingress Operator is needlessly reverting default values in Internal Services
- Closed
- links to
-
RHEA-2023:5006 rpm