@@ -15,17 +15,12 @@ import (
15
15
v1 "github.com/rancher/rancher/pkg/generated/norman/core/v1"
16
16
managementv3 "github.com/rancher/rancher/pkg/generated/norman/management.cattle.io/v3"
17
17
"github.com/rancher/rancher/pkg/ingresswrapper"
18
- "github.com/rancher/rancher/pkg/namespace"
19
18
nodehelper "github.com/rancher/rancher/pkg/node"
20
19
"github.com/rancher/rancher/pkg/settings"
21
20
"github.com/rancher/rancher/pkg/types/config"
22
21
"github.com/sirupsen/logrus"
23
22
corev1 "k8s.io/api/core/v1"
24
- kextv1beta1 "k8s.io/api/extensions/v1beta1"
25
- knetworkingv1 "k8s.io/api/networking/v1"
26
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27
23
"k8s.io/apimachinery/pkg/labels"
28
- "k8s.io/apimachinery/pkg/runtime"
29
24
"k8s.io/apimachinery/pkg/util/sets"
30
25
"k8s.io/apimachinery/pkg/util/validation"
31
26
)
@@ -35,87 +30,38 @@ const (
35
30
endpointsAnnotation = "field.cattle.io/publicEndpoints"
36
31
)
37
32
38
- func Register (ctx context.Context , workload * config.UserContext ) {
39
- isRKE := false
40
- cluster , err := workload .Management .Management .Clusters ("" ).Get (workload .ClusterName , metav1.GetOptions {})
41
- if err != nil {
42
- logrus .WithError (err ).Warnf ("Can not get cluster %s when registering endpoint controller" , workload .ClusterName )
43
- }
44
- if cluster != nil {
45
- //assume that cluster always has a spec
46
- isRKE = cluster .Spec .RancherKubernetesEngineConfig != nil
47
- }
48
-
49
- ignore := func () bool {
50
- return false
51
- }
52
- if cluster .Spec .Internal {
53
- deployments := workload .Apps .Deployments ("" ).Controller ().Lister ()
54
- ignore = func () bool {
55
- _ , err := deployments .Get (namespace .System , "cattle-cluster-agent" )
56
- return err == nil
57
- }
58
- }
59
-
33
+ func Register (ctx context.Context , workload * config.UserOnlyContext ) {
60
34
s := & ServicesController {
61
35
services : workload .Core .Services ("" ),
62
- workloadController : workloadUtil .NewWorkloadController (ctx , workload . UserOnlyContext () , nil ),
63
- machinesLister : workload .Management . Management . Nodes (workload . ClusterName ).Controller ().Lister (),
36
+ workloadController : workloadUtil .NewWorkloadController (ctx , workload , nil ),
37
+ nodesLister : workload .Core . Nodes ("" ).Controller ().Lister (),
64
38
clusterName : workload .ClusterName ,
65
39
}
66
- workload .Core .Services ("" ).AddHandler (ctx , "servicesEndpointsController" , func (key string , obj * corev1.Service ) (runtime.Object , error ) {
67
- if ignore () {
68
- return obj , nil
69
- }
70
- return s .sync (key , obj )
71
- })
40
+ workload .Core .Services ("" ).AddHandler (ctx , "servicesEndpointsController" , s .sync )
72
41
73
42
p := & PodsController {
74
43
podLister : workload .Core .Pods ("" ).Controller ().Lister (),
75
- workloadController : workloadUtil .NewWorkloadController (ctx , workload . UserOnlyContext () , nil ),
44
+ workloadController : workloadUtil .NewWorkloadController (ctx , workload , nil ),
76
45
}
77
- workload .Core .Pods ("" ).AddHandler (ctx , "hostPortEndpointsController" , func (key string , obj * corev1.Pod ) (runtime.Object , error ) {
78
- if ignore () {
79
- return obj , nil
80
- }
81
- return p .sync (key , obj )
82
- })
46
+ workload .Core .Pods ("" ).AddHandler (ctx , "hostPortEndpointsController" , p .sync )
83
47
84
48
w := & WorkloadEndpointsController {
85
- ingressLister : ingresswrapper .NewCompatLister (workload .Networking , workload .Extensions , workload .K8sClient ),
86
- serviceLister : workload .Core .Services ("" ).Controller ().Lister (),
87
- podLister : workload .Core .Pods ("" ).Controller ().Lister (),
88
- machinesLister : workload .Management .Management .Nodes (workload .ClusterName ).Controller ().Lister (),
89
- nodeLister : workload .Core .Nodes ("" ).Controller ().Lister (),
90
- clusterName : workload .ClusterName ,
91
- isRKE : isRKE ,
92
- }
93
- w .WorkloadController = workloadUtil .NewWorkloadController (ctx , workload .UserOnlyContext (), func (key string , workload * workloadUtil.Workload ) error {
94
- if ignore () {
95
- return nil
96
- }
97
- return w .UpdateEndpoints (key , workload )
98
- })
49
+ ingressLister : ingresswrapper .NewCompatLister (workload .Networking , workload .Extensions , workload .K8sClient ),
50
+ serviceLister : workload .Core .Services ("" ).Controller ().Lister (),
51
+ podLister : workload .Core .Pods ("" ).Controller ().Lister (),
52
+ nodeLister : workload .Core .Nodes ("" ).Controller ().Lister (),
53
+ clusterName : workload .ClusterName ,
54
+ }
55
+ w .WorkloadController = workloadUtil .NewWorkloadController (ctx , workload , w .UpdateEndpoints )
99
56
100
57
i := & IngressEndpointsController {
101
- workloadController : workloadUtil .NewWorkloadController (ctx , workload . UserOnlyContext () , nil ),
58
+ workloadController : workloadUtil .NewWorkloadController (ctx , workload , nil ),
102
59
ingressInterface : ingresswrapper .NewCompatInterface (workload .Networking , workload .Extensions , workload .K8sClient ),
103
- isRKE : isRKE ,
104
60
}
105
61
if i .ingressInterface .ServerSupportsIngressV1 {
106
- workload .Networking .Ingresses ("" ).AddHandler (ctx , "ingressEndpointsController" , func (key string , obj * knetworkingv1.Ingress ) (runtime.Object , error ) {
107
- if ignore () {
108
- return obj , nil
109
- }
110
- return ingresswrapper .CompatSyncV1 (i .sync )(key , obj )
111
- })
62
+ workload .Networking .Ingresses ("" ).AddHandler (ctx , "ingressEndpointsController" , ingresswrapper .CompatSyncV1 (i .sync ))
112
63
} else {
113
- workload .Extensions .Ingresses ("" ).AddHandler (ctx , "ingressEndpointsController" , func (key string , obj * kextv1beta1.Ingress ) (runtime.Object , error ) {
114
- if ignore () {
115
- return obj , nil
116
- }
117
- return ingresswrapper .CompatSyncV1Beta1 (i .sync )(key , obj )
118
- })
64
+ workload .Extensions .Ingresses ("" ).AddHandler (ctx , "ingressEndpointsController" , ingresswrapper .CompatSyncV1Beta1 (i .sync ))
119
65
}
120
66
}
121
67
@@ -220,7 +166,7 @@ func convertServiceToPublicEndpoints(svc *corev1.Service, clusterName string, no
220
166
return eps , nil
221
167
}
222
168
223
- func convertHostPortToEndpoint (pod * corev1.Pod , clusterName string , node * managementv3 .Node ) ([]v32.PublicEndpoint , error ) {
169
+ func convertHostPortToEndpoint (pod * corev1.Pod , clusterName string , node * v1 .Node ) ([]v32.PublicEndpoint , error ) {
224
170
var eps []v32.PublicEndpoint
225
171
if pod .DeletionTimestamp != nil {
226
172
return eps , nil
@@ -240,7 +186,7 @@ func convertHostPortToEndpoint(pod *corev1.Pod, clusterName string, node *manage
240
186
if p .HostIP != "" {
241
187
address = p .HostIP
242
188
} else {
243
- address = nodehelper .GetEndpointNodeIP (node )
189
+ address = nodehelper .GetEndpointV1NodeIP (node )
244
190
}
245
191
p := v32.PublicEndpoint {
246
192
NodeName : fmt .Sprintf ("%s:%s" , clusterName , node .Name ),
@@ -262,21 +208,14 @@ func publicEndpointToString(p v32.PublicEndpoint) string {
262
208
return fmt .Sprintf ("%s_%v_%v_%s_%s_%s_%s_%s_%s" , p .NodeName , p .Addresses , p .Port , p .Protocol , p .ServiceName , p .PodName , p .IngressName , p .Hostname , p .Path )
263
209
}
264
210
265
- func getNodeNameToMachine (clusterName string , machineLister managementv3. NodeLister , nodeLister v1.NodeLister ) (map [string ]* managementv3 .Node , error ) {
266
- machines , err := machineLister .List (clusterName , labels .NewSelector ())
211
+ func getNodeNameToMachine (nodeLister v1.NodeLister ) (map [string ]* v1 .Node , error ) {
212
+ nodes , err := nodeLister .List ("" , labels .NewSelector ())
267
213
if err != nil {
268
214
return nil , err
269
215
}
270
- machineMap := map [string ]* managementv3.Node {}
271
- for _ , machine := range machines {
272
- var node * corev1.Node
273
- node , err = nodehelper .GetNodeForMachine (machine , nodeLister )
274
- if err != nil {
275
- return nil , err
276
- }
277
- if node != nil {
278
- machineMap [node .Name ] = machine
279
- }
216
+ machineMap := map [string ]* v1.Node {}
217
+ for _ , node := range nodes {
218
+ machineMap [node .Name ] = node
280
219
}
281
220
return machineMap , nil
282
221
}
@@ -290,15 +229,15 @@ func isMachineReady(machine *managementv3.Node) bool {
290
229
return false
291
230
}
292
231
293
- func getAllNodesPublicEndpointIP (machineLister managementv3 .NodeLister , clusterName string ) (string , error ) {
232
+ func getAllNodesPublicEndpointIP (nodesLister v1 .NodeLister , clusterName string ) (string , error ) {
294
233
var addresses []string
295
- machines , err := machineLister .List (clusterName , labels .NewSelector ())
234
+ nodes , err := nodesLister .List (clusterName , labels .NewSelector ())
296
235
if err != nil {
297
236
return "" , err
298
237
}
299
- for _ , machine := range machines {
300
- if machine . Spec . Worker && nodehelper .IsMachineReady ( machine ) {
301
- nodePublicIP := getEndpointNodeAddress (machine )
238
+ for _ , node := range nodes {
239
+ if node . Labels [ "node-role.kubernetes.io/worker" ] == "true" && nodehelper .IsNodeReady ( node ) {
240
+ nodePublicIP := getEndpointNodeAddress (node )
302
241
if nodePublicIP != "" {
303
242
addresses = append (addresses , nodePublicIP )
304
243
}
@@ -396,8 +335,8 @@ func convertIngressToPublicEndpoints(obj ingresswrapper.Ingress, isRKE bool) ([]
396
335
return eps , nil
397
336
}
398
337
399
- func getEndpointNodeAddress (machine * managementv3 .Node ) string {
400
- endpointAddress := nodehelper .GetEndpointNodeIP (machine )
338
+ func getEndpointNodeAddress (machine * v1 .Node ) string {
339
+ endpointAddress := nodehelper .GetEndpointV1NodeIP (machine )
401
340
if endpointAddress == "" {
402
341
return ""
403
342
}
0 commit comments