...
1
16
17 package metaproxier
18
19 import (
20 v1 "k8s.io/api/core/v1"
21 discovery "k8s.io/api/discovery/v1"
22 "k8s.io/klog/v2"
23 "k8s.io/kubernetes/pkg/proxy"
24 "k8s.io/kubernetes/pkg/proxy/config"
25 )
26
27 type metaProxier struct {
28
29 ipv4Proxier proxy.Provider
30
31 ipv6Proxier proxy.Provider
32
33 config.NoopNodeHandler
34 }
35
36
37
38
39 func NewMetaProxier(ipv4Proxier, ipv6Proxier proxy.Provider) proxy.Provider {
40 return proxy.Provider(&metaProxier{
41 ipv4Proxier: ipv4Proxier,
42 ipv6Proxier: ipv6Proxier,
43 })
44 }
45
46
47
48 func (proxier *metaProxier) Sync() {
49 proxier.ipv4Proxier.Sync()
50 proxier.ipv6Proxier.Sync()
51 }
52
53
54
55 func (proxier *metaProxier) SyncLoop() {
56 go proxier.ipv6Proxier.SyncLoop()
57 proxier.ipv4Proxier.SyncLoop()
58 }
59
60
61 func (proxier *metaProxier) OnServiceAdd(service *v1.Service) {
62 proxier.ipv4Proxier.OnServiceAdd(service)
63 proxier.ipv6Proxier.OnServiceAdd(service)
64 }
65
66
67
68 func (proxier *metaProxier) OnServiceUpdate(oldService, service *v1.Service) {
69 proxier.ipv4Proxier.OnServiceUpdate(oldService, service)
70 proxier.ipv6Proxier.OnServiceUpdate(oldService, service)
71 }
72
73
74
75 func (proxier *metaProxier) OnServiceDelete(service *v1.Service) {
76 proxier.ipv4Proxier.OnServiceDelete(service)
77 proxier.ipv6Proxier.OnServiceDelete(service)
78
79 }
80
81
82
83 func (proxier *metaProxier) OnServiceSynced() {
84 proxier.ipv4Proxier.OnServiceSynced()
85 proxier.ipv6Proxier.OnServiceSynced()
86 }
87
88
89
90 func (proxier *metaProxier) OnEndpointSliceAdd(endpointSlice *discovery.EndpointSlice) {
91 switch endpointSlice.AddressType {
92 case discovery.AddressTypeIPv4:
93 proxier.ipv4Proxier.OnEndpointSliceAdd(endpointSlice)
94 case discovery.AddressTypeIPv6:
95 proxier.ipv6Proxier.OnEndpointSliceAdd(endpointSlice)
96 default:
97 klog.ErrorS(nil, "EndpointSlice address type not supported", "addressType", endpointSlice.AddressType)
98 }
99 }
100
101
102
103 func (proxier *metaProxier) OnEndpointSliceUpdate(oldEndpointSlice, newEndpointSlice *discovery.EndpointSlice) {
104 switch newEndpointSlice.AddressType {
105 case discovery.AddressTypeIPv4:
106 proxier.ipv4Proxier.OnEndpointSliceUpdate(oldEndpointSlice, newEndpointSlice)
107 case discovery.AddressTypeIPv6:
108 proxier.ipv6Proxier.OnEndpointSliceUpdate(oldEndpointSlice, newEndpointSlice)
109 default:
110 klog.ErrorS(nil, "EndpointSlice address type not supported", "addressType", newEndpointSlice.AddressType)
111 }
112 }
113
114
115
116 func (proxier *metaProxier) OnEndpointSliceDelete(endpointSlice *discovery.EndpointSlice) {
117 switch endpointSlice.AddressType {
118 case discovery.AddressTypeIPv4:
119 proxier.ipv4Proxier.OnEndpointSliceDelete(endpointSlice)
120 case discovery.AddressTypeIPv6:
121 proxier.ipv6Proxier.OnEndpointSliceDelete(endpointSlice)
122 default:
123 klog.ErrorS(nil, "EndpointSlice address type not supported", "addressType", endpointSlice.AddressType)
124 }
125 }
126
127
128
129 func (proxier *metaProxier) OnEndpointSlicesSynced() {
130 proxier.ipv4Proxier.OnEndpointSlicesSynced()
131 proxier.ipv6Proxier.OnEndpointSlicesSynced()
132 }
133
134
135 func (proxier *metaProxier) OnNodeAdd(node *v1.Node) {
136 proxier.ipv4Proxier.OnNodeAdd(node)
137 proxier.ipv6Proxier.OnNodeAdd(node)
138 }
139
140
141
142 func (proxier *metaProxier) OnNodeUpdate(oldNode, node *v1.Node) {
143 proxier.ipv4Proxier.OnNodeUpdate(oldNode, node)
144 proxier.ipv6Proxier.OnNodeUpdate(oldNode, node)
145 }
146
147
148
149 func (proxier *metaProxier) OnNodeDelete(node *v1.Node) {
150 proxier.ipv4Proxier.OnNodeDelete(node)
151 proxier.ipv6Proxier.OnNodeDelete(node)
152
153 }
154
155
156
157 func (proxier *metaProxier) OnNodeSynced() {
158 proxier.ipv4Proxier.OnNodeSynced()
159 proxier.ipv6Proxier.OnNodeSynced()
160 }
161
162
163
164 func (proxier *metaProxier) OnServiceCIDRsChanged(cidrs []string) {
165 proxier.ipv4Proxier.OnServiceCIDRsChanged(cidrs)
166 proxier.ipv6Proxier.OnServiceCIDRsChanged(cidrs)
167 }
168
View as plain text