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

Add flag to specify the CRD group

This commit is contained in:
Antoine Legrand 2017-10-11 02:13:35 +02:00
parent 5da727d9f9
commit 59fe4bea39
7 changed files with 62 additions and 22 deletions
Makefile
cmd/operator
pkg
alertmanager
k8sutil
migrator
prometheus
test/migration

View file

@ -13,6 +13,9 @@ all: check-license format build test
build: promu
@$(PROMU) build --prefix $(PREFIX)
short-build:
go install github.com/coreos/prometheus-operator/cmd/operator
crossbuild: promu
@$(PROMU) crossbuild

View file

@ -32,6 +32,7 @@ import (
"github.com/coreos/prometheus-operator/pkg/alertmanager"
"github.com/coreos/prometheus-operator/pkg/api"
monitoringv1 "github.com/coreos/prometheus-operator/pkg/client/monitoring/v1"
"github.com/coreos/prometheus-operator/pkg/k8sutil"
"github.com/coreos/prometheus-operator/pkg/migrator"
prometheuscontroller "github.com/coreos/prometheus-operator/pkg/prometheus"
@ -56,8 +57,10 @@ func init() {
flagset.StringVar(&cfg.AlertmanagerDefaultBaseImage, "alertmanager-default-base-image", "quay.io/prometheus/alertmanager", "Alertmanager default base image")
flagset.StringVar(&cfg.PrometheusDefaultBaseImage, "prometheus-default-base-image", "quay.io/prometheus/prometheus", "Prometheus default base image")
flagset.StringVar(&cfg.Namespace, "namespace", kapi.NamespaceAll, "Namespace to scope the interaction of the Prometheus Operator and the apiserver.")
flagset.Var(&cfg.Labels, "labels", "Labels to be add to all resources created by the operator")
flagset.StringVar(&cfg.CrdGroup, "crd-apigroup", monitoringv1.Group, "prometheus CRD API group name")
flagset.Parse(os.Args[1:])
}
func Main() int {

View file

@ -68,6 +68,8 @@ type Config struct {
ConfigReloaderImage string
AlertmanagerDefaultBaseImage string
Namespace string
Labels prometheusoperator.Labels
CrdGroup string
}
// New creates a new controller.
@ -103,6 +105,8 @@ func New(c prometheusoperator.Config, logger log.Logger) (*Operator, error) {
ConfigReloaderImage: c.ConfigReloaderImage,
AlertmanagerDefaultBaseImage: c.AlertmanagerDefaultBaseImage,
Namespace: c.Namespace,
CrdGroup: c.CrdGroup,
Labels: c.Labels,
},
}
@ -518,7 +522,7 @@ func (c *Operator) createCRDs() error {
}
crds := []*extensionsobj.CustomResourceDefinition{
k8sutil.NewAlertmanagerCustomResourceDefinition(),
k8sutil.NewAlertmanagerCustomResourceDefinition(c.config.CrdGroup, c.config.Labels.LabelsMap),
}
crdClient := c.crdclient.ApiextensionsV1beta1().CustomResourceDefinitions()

View file

@ -205,13 +205,14 @@ func NewAlertmanagerTPRDefinition() *extensionsobjold.ThirdPartyResource {
}
}
func NewPrometheusCustomResourceDefinition() *extensionsobj.CustomResourceDefinition {
func NewPrometheusCustomResourceDefinition(group string, labels map[string]string) *extensionsobj.CustomResourceDefinition {
return &extensionsobj.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
Name: monitoringv1.PrometheusName + "." + monitoringv1.Group,
Name: monitoringv1.PrometheusName + "." + group,
Labels: labels,
},
Spec: extensionsobj.CustomResourceDefinitionSpec{
Group: monitoringv1.Group,
Group: group,
Version: monitoringv1.Version,
Scope: extensionsobj.NamespaceScoped,
Names: extensionsobj.CustomResourceDefinitionNames{
@ -222,13 +223,14 @@ func NewPrometheusCustomResourceDefinition() *extensionsobj.CustomResourceDefini
}
}
func NewServiceMonitorCustomResourceDefinition() *extensionsobj.CustomResourceDefinition {
func NewServiceMonitorCustomResourceDefinition(group string, labels map[string]string) *extensionsobj.CustomResourceDefinition {
return &extensionsobj.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
Name: monitoringv1.ServiceMonitorName + "." + monitoringv1.Group,
Name: monitoringv1.ServiceMonitorName + "." + group,
Labels: labels,
},
Spec: extensionsobj.CustomResourceDefinitionSpec{
Group: monitoringv1.Group,
Group: group,
Version: monitoringv1.Version,
Scope: extensionsobj.NamespaceScoped,
Names: extensionsobj.CustomResourceDefinitionNames{
@ -239,13 +241,14 @@ func NewServiceMonitorCustomResourceDefinition() *extensionsobj.CustomResourceDe
}
}
func NewAlertmanagerCustomResourceDefinition() *extensionsobj.CustomResourceDefinition {
func NewAlertmanagerCustomResourceDefinition(group string, labels map[string]string) *extensionsobj.CustomResourceDefinition {
return &extensionsobj.CustomResourceDefinition{
ObjectMeta: metav1.ObjectMeta{
Name: monitoringv1.AlertmanagerName + "." + monitoringv1.Group,
Name: monitoringv1.AlertmanagerName + "." + group,
Labels: labels,
},
Spec: extensionsobj.CustomResourceDefinitionSpec{
Group: monitoringv1.Group,
Group: group,
Version: monitoringv1.Version,
Scope: extensionsobj.NamespaceScoped,
Names: extensionsobj.CustomResourceDefinitionNames{

View file

@ -179,9 +179,9 @@ func (m *Migrator) migrateTPR2CRD() error {
m.logger.Log("msg", "Creating CRDs.")
err = m.createCRDs(
k8sutil.NewPrometheusCustomResourceDefinition(),
k8sutil.NewServiceMonitorCustomResourceDefinition(),
k8sutil.NewAlertmanagerCustomResourceDefinition(),
k8sutil.NewPrometheusCustomResourceDefinition(monitoringv1.Group, map[string]string{}),
k8sutil.NewServiceMonitorCustomResourceDefinition(monitoringv1.Group, map[string]string{}),
k8sutil.NewAlertmanagerCustomResourceDefinition(monitoringv1.Group, map[string]string{}),
)
if err != nil {
return errors.Wrap(err, "creating CRDs failed")
@ -507,9 +507,9 @@ func (m *Migrator) rollback() error {
if ms.crdCreated {
m.logger.Log("msg", "Deleting CRDs.")
err := m.deleteCRDs(
k8sutil.NewPrometheusCustomResourceDefinition(),
k8sutil.NewServiceMonitorCustomResourceDefinition(),
k8sutil.NewAlertmanagerCustomResourceDefinition(),
k8sutil.NewPrometheusCustomResourceDefinition(monitoringv1.Group, map[string]string{}),
k8sutil.NewServiceMonitorCustomResourceDefinition(monitoringv1.Group, map[string]string{}),
k8sutil.NewAlertmanagerCustomResourceDefinition(monitoringv1.Group, map[string]string{}),
)
if err != nil {
return errors.Wrapf(err, "deleting the CRDs failed")

View file

@ -73,6 +73,31 @@ type Operator struct {
config Config
}
type Labels struct {
LabelsString string
LabelsMap map[string]string
}
// Implement the flag.Value interface
func (labels *Labels) String() string {
return fmt.Sprintf(labels.LabelsString)
}
// Implement the flag.Set interface
func (labels *Labels) Set(value string) error {
m := map[string]string{}
if value != "" {
splited := strings.Split(value, ",")
for _, pair := range splited {
sp := strings.Split(pair, "=")
m[sp[0]] = sp[1]
}
}
(*labels).LabelsMap = m
(*labels).LabelsString = value
return nil
}
// Config defines configuration parameters for the Operator.
type Config struct {
Host string
@ -84,6 +109,8 @@ type Config struct {
AlertmanagerDefaultBaseImage string
PrometheusDefaultBaseImage string
Namespace string
Labels Labels
CrdGroup string
}
type BasicAuthCredentials struct {
@ -978,8 +1005,8 @@ func (c *Operator) createCRDs() error {
}
crds := []*extensionsobj.CustomResourceDefinition{
k8sutil.NewPrometheusCustomResourceDefinition(),
k8sutil.NewServiceMonitorCustomResourceDefinition(),
k8sutil.NewPrometheusCustomResourceDefinition(c.config.CrdGroup, c.config.Labels.LabelsMap),
k8sutil.NewServiceMonitorCustomResourceDefinition(c.config.CrdGroup, c.config.Labels.LabelsMap),
}
crdClient := c.crdclient.ApiextensionsV1beta1().CustomResourceDefinitions()

View file

@ -238,7 +238,7 @@ func checkMigrationDone(ns2 string, framework *operatorFramework.Framework, tprC
}
// Check if CRDs are created.
_, err = crdClient.Get(k8sutil.NewPrometheusCustomResourceDefinition().Name, metav1.GetOptions{})
_, err = crdClient.Get(k8sutil.NewPrometheusCustomResourceDefinition(monitoringv1.Group, map[string]string{}).Name, metav1.GetOptions{})
if err != nil && apierrors.IsNotFound(err) {
fmt.Println("Expected Prometheus CRD definition to be created, but it does not exists.")
return false, nil
@ -247,7 +247,7 @@ func checkMigrationDone(ns2 string, framework *operatorFramework.Framework, tprC
return false, err
}
_, err = crdClient.Get(k8sutil.NewAlertmanagerCustomResourceDefinition().Name, metav1.GetOptions{})
_, err = crdClient.Get(k8sutil.NewAlertmanagerCustomResourceDefinition(monitoringv1.Group, map[string]string{}).Name, metav1.GetOptions{})
if err != nil && apierrors.IsNotFound(err) {
fmt.Println("Expected Alertmanager CRD definition to be created, but it does not exists.")
return false, nil
@ -256,7 +256,7 @@ func checkMigrationDone(ns2 string, framework *operatorFramework.Framework, tprC
return false, err
}
_, err = crdClient.Get(k8sutil.NewServiceMonitorCustomResourceDefinition().Name, metav1.GetOptions{})
_, err = crdClient.Get(k8sutil.NewServiceMonitorCustomResourceDefinition(monitoringv1.Group, map[string]string{}).Name, metav1.GetOptions{})
if err != nil && apierrors.IsNotFound(err) {
fmt.Println("Expected ServiceMonitor CRD definition to be created, but it does not exists.")
return false, nil