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:
parent
5da727d9f9
commit
59fe4bea39
7 changed files with 62 additions and 22 deletions
3
Makefile
3
Makefile
|
@ -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
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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{
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue