1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-21 11:48:53 +00:00

Propagate labels to all managed resources

This commit is contained in:
Antoine Legrand 2017-10-12 12:34:51 +02:00
parent 59fe4bea39
commit 3d496e8d23
4 changed files with 37 additions and 23 deletions

View file

@ -378,7 +378,7 @@ func (c *Operator) sync(key string) error {
// Create governing service if it doesn't exist.
svcClient := c.kclient.Core().Services(am.Namespace)
if err = k8sutil.CreateOrUpdateService(svcClient, makeStatefulSetService(am)); err != nil {
if err = k8sutil.CreateOrUpdateService(svcClient, makeStatefulSetService(am, c.config)); err != nil {
return errors.Wrap(err, "synchronizing governing service failed")
}

View file

@ -72,7 +72,7 @@ func makeStatefulSet(am *monitoringv1.Alertmanager, old *v1beta1.StatefulSet, co
statefulset := &v1beta1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Name: prefixedName(am.Name),
Labels: am.ObjectMeta.Labels,
Labels: config.Labels.Merge(am.ObjectMeta.Labels),
Annotations: am.ObjectMeta.Annotations,
},
Spec: *spec,
@ -106,13 +106,13 @@ func makeStatefulSet(am *monitoringv1.Alertmanager, old *v1beta1.StatefulSet, co
return statefulset, nil
}
func makeStatefulSetService(p *monitoringv1.Alertmanager) *v1.Service {
func makeStatefulSetService(p *monitoringv1.Alertmanager, config Config) *v1.Service {
svc := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: governingServiceName,
Labels: map[string]string{
Labels: config.Labels.Merge(map[string]string{
"operated-alertmanager": "true",
},
}),
},
Spec: v1.ServiceSpec{
ClusterIP: "None",
@ -215,7 +215,7 @@ func makeStatefulSetSpec(a *monitoringv1.Alertmanager, config Config) (*v1beta1.
},
Template: v1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: podLabels,
Labels: config.Labels.Merge(podLabels),
Annotations: podAnnotations,
},
Spec: v1.PodSpec{

View file

@ -80,7 +80,21 @@ type Labels struct {
// Implement the flag.Value interface
func (labels *Labels) String() string {
return fmt.Sprintf(labels.LabelsString)
return labels.LabelsString
}
// Merge labels create a new map with labels merged.
func (labels *Labels) Merge(otherLabels map[string]string) map[string]string {
mergedLabels := map[string]string{}
for key, value := range otherLabels {
mergedLabels[key] = value
}
for key, value := range labels.LabelsMap {
mergedLabels[key] = value
}
return mergedLabels
}
// Implement the flag.Set interface
@ -358,9 +372,9 @@ func (c *Operator) syncNodeEndpoints() error {
eps := &v1.Endpoints{
ObjectMeta: metav1.ObjectMeta{
Name: c.kubeletObjectName,
Labels: map[string]string{
Labels: c.config.Labels.Merge(map[string]string{
"k8s-app": "kubelet",
},
}),
},
Subsets: []v1.EndpointSubset{
{
@ -406,9 +420,9 @@ func (c *Operator) syncNodeEndpoints() error {
svc := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: c.kubeletObjectName,
Labels: map[string]string{
Labels: c.config.Labels.Merge(map[string]string{
"k8s-app": "kubelet",
},
}),
},
Spec: v1.ServiceSpec{
Type: v1.ServiceTypeClusterIP,
@ -670,7 +684,7 @@ func (c *Operator) sync(key string) error {
}
// Create Secret if it doesn't exist.
s, err := makeEmptyConfig(p.Name, ruleFileConfigMaps)
s, err := makeEmptyConfig(p.Name, ruleFileConfigMaps, c.config)
if err != nil {
return errors.Wrap(err, "generating empty config secret failed")
}
@ -680,7 +694,7 @@ func (c *Operator) sync(key string) error {
// Create governing service if it doesn't exist.
svcClient := c.kclient.Core().Services(p.Namespace)
if err := k8sutil.CreateOrUpdateService(svcClient, makeStatefulSetService(p)); err != nil {
if err := k8sutil.CreateOrUpdateService(svcClient, makeStatefulSetService(p, c.config)); err != nil {
return errors.Wrap(err, "synchronizing governing service failed")
}
@ -938,7 +952,7 @@ func (c *Operator) createConfig(p *monitoringv1.Prometheus, ruleFileConfigMaps [
return errors.Wrap(err, "generating config failed")
}
s, err := makeConfigSecret(p.Name, ruleFileConfigMaps)
s, err := makeConfigSecret(p.Name, ruleFileConfigMaps, c.config)
if err != nil {
return errors.Wrap(err, "generating base secret failed")
}

View file

@ -106,7 +106,7 @@ func makeStatefulSet(p monitoringv1.Prometheus, old *v1beta1.StatefulSet, config
statefulset := &v1beta1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Name: prefixedName(p.Name),
Labels: p.ObjectMeta.Labels,
Labels: config.Labels.Merge(p.ObjectMeta.Labels),
Annotations: p.ObjectMeta.Annotations,
},
Spec: *spec,
@ -139,8 +139,8 @@ func makeStatefulSet(p monitoringv1.Prometheus, old *v1beta1.StatefulSet, config
return statefulset, nil
}
func makeEmptyConfig(name string, configMaps []*v1.ConfigMap) (*v1.Secret, error) {
s, err := makeConfigSecret(name, configMaps)
func makeEmptyConfig(name string, configMaps []*v1.ConfigMap, config Config) (*v1.Secret, error) {
s, err := makeConfigSecret(name, configMaps, config)
if err != nil {
return nil, err
}
@ -211,7 +211,7 @@ func makeRuleConfigMapListFile(configMaps []*v1.ConfigMap) ([]byte, error) {
return json.Marshal(cml)
}
func makeConfigSecret(name string, configMaps []*v1.ConfigMap) (*v1.Secret, error) {
func makeConfigSecret(name string, configMaps []*v1.ConfigMap, config Config) (*v1.Secret, error) {
b, err := makeRuleConfigMapListFile(configMaps)
if err != nil {
return nil, err
@ -220,7 +220,7 @@ func makeConfigSecret(name string, configMaps []*v1.ConfigMap) (*v1.Secret, erro
return &v1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: configSecretName(name),
Labels: managedByOperatorLabels,
Labels: config.Labels.Merge(managedByOperatorLabels),
},
Data: map[string][]byte{
configFilename: []byte{},
@ -229,13 +229,13 @@ func makeConfigSecret(name string, configMaps []*v1.ConfigMap) (*v1.Secret, erro
}, nil
}
func makeStatefulSetService(p *monitoringv1.Prometheus) *v1.Service {
func makeStatefulSetService(p *monitoringv1.Prometheus, config Config) *v1.Service {
svc := &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: governingServiceName,
Labels: map[string]string{
Labels: config.Labels.Merge(map[string]string{
"operated-prometheus": "true",
},
}),
},
Spec: v1.ServiceSpec{
ClusterIP: "None",
@ -480,7 +480,7 @@ func makeStatefulSetSpec(p monitoringv1.Prometheus, c *Config, ruleConfigMaps []
},
Template: v1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: podLabels,
Labels: c.Labels.Merge(podLabels),
Annotations: podAnnotations,
},
Spec: v1.PodSpec{