in internal/controller/pod_controller.go [109:140]
func findMatchingProxies(ctx context.Context, c client.Client, u *workload.Updater, wl *workload.PodWorkload) ([]*cloudsqlapi.AuthProxyWorkload, error) {
var (
instList = &cloudsqlapi.AuthProxyWorkloadList{}
proxies []*cloudsqlapi.AuthProxyWorkload
l = logf.FromContext(ctx)
)
// List all the AuthProxyWorkloads in the same namespace.
// To avoid privilege escalation, the operator requires that the AuthProxyWorkload
// may only affect pods in the same namespace.
err := c.List(ctx, instList, client.InNamespace(wl.Object().GetNamespace()))
if err != nil {
l.Error(err, "Unable to list CloudSqlClient resources in webhook",
"kind", wl.Pod.Kind, "ns", wl.Pod.Namespace, "name", wl.Pod.Name)
return nil, fmt.Errorf("unable to list AuthProxyWorkloads, %v", err)
}
// List the owners of this pod.
owners, err := listOwners(ctx, c, wl.Object())
if err != nil {
return nil, fmt.Errorf("there is an AuthProxyWorkloadConfiguration error reconciling this workload %v", err)
}
// Find matching AuthProxyWorkloads for this pod
proxies = u.FindMatchingAuthProxyWorkloads(instList, wl, owners)
if len(proxies) == 0 {
return nil, nil // no change
}
return proxies, nil
}