func (d *Daemon) getFilteredLabels(allLabels map[string]string) labels.Labels { var ciliumLabels, k8sLabels labels.Labels if podName := k8sDockerLbls.GetPodName(allLabels); podName != "" { k8sNormalLabels, err := d.fetchK8sLabels(allLabels) if err != nil { log.Warningf("Error while getting kubernetes labels: %s", err) } else if k8sNormalLabels != nil { k8sLabels = labels.Map2Labels(k8sNormalLabels, common.K8sLabelSource) } } ciliumLabels = labels.Map2Labels(allLabels, common.CiliumLabelSource) ciliumLabels.MergeLabels(k8sLabels) d.conf.ValidLabelPrefixesMU.RLock() defer d.conf.ValidLabelPrefixesMU.RUnlock() return d.conf.ValidLabelPrefixes.FilterLabels(ciliumLabels) }
func (d *Daemon) fetchK8sLabels(dockerLbls map[string]string) (map[string]string, error) { if !d.conf.IsK8sEnabled() { return nil, nil } ns := k8sDockerLbls.GetPodNamespace(dockerLbls) if ns == "" { ns = "default" } podName := k8sDockerLbls.GetPodName(dockerLbls) if podName == "" { return nil, nil } log.Debugf("Connecting to kubernetes to retrieve labels for pod %s ns %s", podName, ns) result, err := d.k8sClient.Pods(ns).Get(podName) if err != nil { return nil, err } k8sLabels := result.GetLabels() k8sLabels[common.K8sPodNamespaceLabel] = ns return k8sLabels, nil }