mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Fix federated service reconcilation issue due to addition of ExternalTrafficPolicy field to v1.Service
This commit is contained in:
parent
3227f44157
commit
d22527522f
@ -664,6 +664,11 @@ func (s *ServiceController) getOperationsToPerformOnCluster(cluster *v1beta1.Clu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// If ExternalTrafficPolicy is not set in federated service, use the ExternalTrafficPolicy
|
||||||
|
// defaulted to in federated cluster.
|
||||||
|
if desiredService.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyType("") {
|
||||||
|
desiredService.Spec.ExternalTrafficPolicy = clusterService.Spec.ExternalTrafficPolicy
|
||||||
|
}
|
||||||
|
|
||||||
// Update existing service, if needed.
|
// Update existing service, if needed.
|
||||||
if !Equivalent(desiredService, clusterService) {
|
if !Equivalent(desiredService, clusterService) {
|
||||||
|
@ -379,10 +379,13 @@ func deleteServiceShard(c *fedframework.Cluster, namespace, service string) erro
|
|||||||
|
|
||||||
// equivalent returns true if the two services are equivalent. Fields which are expected to differ between
|
// equivalent returns true if the two services are equivalent. Fields which are expected to differ between
|
||||||
// federated services and the underlying cluster services (e.g. ClusterIP, NodePort) are ignored.
|
// federated services and the underlying cluster services (e.g. ClusterIP, NodePort) are ignored.
|
||||||
func equivalent(federationService, clusterService v1.Service) bool {
|
func equivalent(clusterService, federationService v1.Service) bool {
|
||||||
clusterService.Spec.ClusterIP = federationService.Spec.ClusterIP
|
federationService.Spec.ClusterIP = clusterService.Spec.ClusterIP
|
||||||
for i := range clusterService.Spec.Ports {
|
for i := range federationService.Spec.Ports {
|
||||||
clusterService.Spec.Ports[i].NodePort = federationService.Spec.Ports[i].NodePort
|
federationService.Spec.Ports[i].NodePort = clusterService.Spec.Ports[i].NodePort
|
||||||
|
}
|
||||||
|
if federationService.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyType("") {
|
||||||
|
federationService.Spec.ExternalTrafficPolicy = clusterService.Spec.ExternalTrafficPolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
if federationService.Name != clusterService.Name || federationService.Namespace != clusterService.Namespace {
|
if federationService.Name != clusterService.Name || federationService.Namespace != clusterService.Namespace {
|
||||||
|
Loading…
Reference in New Issue
Block a user