mirror of
https://github.com/tailscale/tailscale.git
synced 2025-06-28 11:08:40 +00:00
k8s-operator: saving progress on reconciler
Signed-off-by: chaosinthecrd <tom@tmlabs.co.uk>
This commit is contained in:
parent
48c0dc6e39
commit
0eb1ccccce
@ -367,6 +367,31 @@ func runReconcilers(opts reconcilerOpts) {
|
|||||||
startlog.Fatalf("failed setting up indexer for HA Ingresses: %v", err)
|
startlog.Fatalf("failed setting up indexer for HA Ingresses: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// svcProxyGroupFilter := handler.EnqueueRequestsFromMapFunc(ingressesFromIngressProxyGroup(mgr.GetClient(), opts.log))
|
||||||
|
err = builder.
|
||||||
|
ControllerManagedBy(mgr).
|
||||||
|
For(&corev1.Service{}).
|
||||||
|
Named("service-pg-reconciler").
|
||||||
|
Watches(&corev1.Secret{}, handler.EnqueueRequestsFromMapFunc(HAServicesFromSecret(mgr.GetClient(), startlog))).
|
||||||
|
Watches(&tsapi.ProxyGroup{}, ingressProxyGroupFilter).
|
||||||
|
Complete(&HAServiceReconciler{
|
||||||
|
recorder: eventRecorder,
|
||||||
|
tsClient: opts.tsClient,
|
||||||
|
tsnetServer: opts.tsServer,
|
||||||
|
defaultTags: strings.Split(opts.proxyTags, ","),
|
||||||
|
Client: mgr.GetClient(),
|
||||||
|
logger: opts.log.Named("service-pg-reconciler"),
|
||||||
|
lc: lc,
|
||||||
|
operatorID: id,
|
||||||
|
tsNamespace: opts.tailscaleNamespace,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
startlog.Fatalf("could not create service-pg-reconciler: %v", err)
|
||||||
|
}
|
||||||
|
// if err := mgr.GetFieldIndexer().IndexField(context.Background(), new(networkingv1.Ingress), indexIngressProxyGroup, indexPGIngresses); err != nil {
|
||||||
|
// startlog.Fatalf("failed setting up indexer for HA Ingresses: %v", err)
|
||||||
|
// }
|
||||||
|
|
||||||
connectorFilter := handler.EnqueueRequestsFromMapFunc(managedResourceHandlerForType("connector"))
|
connectorFilter := handler.EnqueueRequestsFromMapFunc(managedResourceHandlerForType("connector"))
|
||||||
// If a ProxyClassChanges, enqueue all Connectors that have
|
// If a ProxyClassChanges, enqueue all Connectors that have
|
||||||
// .spec.proxyClass set to the name of this ProxyClass.
|
// .spec.proxyClass set to the name of this ProxyClass.
|
||||||
@ -1098,6 +1123,42 @@ func HAIngressesFromSecret(cl client.Client, logger *zap.SugaredLogger) handler.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HAServiceFromSecret returns a handler that returns reconcile requests for
|
||||||
|
// all HA Services that should be reconciled in response to a Secret event.
|
||||||
|
func HAServicesFromSecret(cl client.Client, logger *zap.SugaredLogger) handler.MapFunc {
|
||||||
|
return func(ctx context.Context, o client.Object) []reconcile.Request {
|
||||||
|
secret, ok := o.(*corev1.Secret)
|
||||||
|
if !ok {
|
||||||
|
logger.Infof("[unexpected] Secret handler triggered for an object that is not a Secret")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !isPGStateSecret(secret) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
_, ok = secret.ObjectMeta.Labels[LabelParentName]
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// svcList := &corev1.ServiceList{}
|
||||||
|
// if err := cl.List(ctx, ingList, client.MatchingFields{indexIngressProxyGroup: pgName}); err != nil {
|
||||||
|
// logger.Infof("error listing Ingresses, skipping a reconcile for event on Secret %s: %v", secret.Name, err)
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
// reqs := make([]reconcile.Request, 0)
|
||||||
|
// for _, ing := range ingList.Items {
|
||||||
|
// reqs = append(reqs, reconcile.Request{
|
||||||
|
// NamespacedName: types.NamespacedName{
|
||||||
|
// Namespace: ing.Namespace,
|
||||||
|
// Name: ing.Name,
|
||||||
|
// },
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// return reqs
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// egressSvcsFromEgressProxyGroup is an event handler for egress ProxyGroups. It returns reconcile requests for all
|
// egressSvcsFromEgressProxyGroup is an event handler for egress ProxyGroups. It returns reconcile requests for all
|
||||||
// user-created ExternalName Services that should be exposed on this ProxyGroup.
|
// user-created ExternalName Services that should be exposed on this ProxyGroup.
|
||||||
func egressSvcsFromEgressProxyGroup(cl client.Client, logger *zap.SugaredLogger) handler.MapFunc {
|
func egressSvcsFromEgressProxyGroup(cl client.Client, logger *zap.SugaredLogger) handler.MapFunc {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,6 @@ type Mapping map[netip.Addr]netip.Addr
|
|||||||
|
|
||||||
// Config is an ingress service configuration.
|
// Config is an ingress service configuration.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
VIPServiceIP netip.Addr `json:"vipServiceIP"`
|
|
||||||
IPv4Mapping Mapping `json:"IPv4Mapping"`
|
IPv4Mapping Mapping `json:"IPv4Mapping"`
|
||||||
IPv6Mapping Mapping `json:"IPv6Mapping"`
|
IPv6Mapping Mapping `json:"IPv6Mapping"`
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user