1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-15 16:56:24 +00:00

prometheus-config-reloader: rename from prometheus-watcher

This commit is contained in:
Frederic Branczyk 2017-03-17 08:05:57 +01:00
parent 8f9b4c8bc0
commit 2a14d2aefe
No known key found for this signature in database
GPG key ID: CA14788B1E48B256
13 changed files with 55 additions and 57 deletions

View file

@ -48,8 +48,8 @@ func init() {
flagset.StringVar(&cfg.KubeletObject, "kubelet-object", "", "Endpoints object to write kubelets into in format \"namespace/name\"")
flagset.BoolVar(&cfg.TLSInsecure, "tls-insecure", false, "- NOT RECOMMENDED FOR PRODUCTION - Don't verify API server's CA certificate.")
flagset.BoolVar(&analyticsEnabled, "analytics", true, "Send analytical event (Cluster Created/Deleted etc.) to Google Analytics")
flagset.StringVar(&cfg.PrometheusWatcherImage, "prometheus-watcher-image", "quay.io/coreos/prometheus-watcher:v0.0.1", "Config and rule reload image")
flagset.StringVar(&cfg.ConfigReloaderImage, "config-reloader-image", "jimmidyson/configmap-reload:latest", "Reload Image")
flagset.StringVar(&cfg.PrometheusConfigReloader, "prometheus-config-reloader", "quay.io/coreos/prometheus-config-reloader:v0.0.1", "Config and rule reload image")
flagset.StringVar(&cfg.ConfigReloaderImage, "config-reloader-image", "quay.io/coreos/configmap-reload:v0.0.1", "Reload Image")
flagset.Parse(os.Args[1:])
}

View file

@ -0,0 +1 @@
prometheus-config-reloader

View file

@ -0,0 +1,5 @@
FROM quay.io/prometheus/busybox:latest
ADD prometheus-config-reloader /bin/prometheus-config-reloader
ENTRYPOINT ["/bin/prometheus-config-reloader"]

View file

@ -2,7 +2,7 @@ all: build
FLAGS =
ENVVAR = GOOS=linux GOARCH=amd64 CGO_ENABLED=0
NAME = prometheus-watcher
NAME = prometheus-config-reloader
REPO = quay.io/coreos/$(NAME)
TAG = v0.0.1
IMAGE = $(REPO):$(TAG)

View file

@ -1,26 +1,26 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-watcher-example
name: prometheus-config-reloader-example
data:
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: prometheus-watcher
name: prometheus-config-reloader
spec:
replicas: 1
template:
metadata:
labels:
app: prometheus-watcher
app: prometheus-config-reloader
spec:
volumes:
- name: rules
emptyDir: {}
- name: config
configMap:
name: prometheus-watcher-example
name: prometheus-config-reloader-example
containers:
- name: ubuntu
image: ubuntu
@ -29,8 +29,8 @@ spec:
- name: rules
mountPath: /etc/prometheus/rules
readOnly: true
- name: prometheus-watcher
image: quay.io/coreos/prometheus-watcher:v0.0.1
- name: prometheus-config-reloader
image: quay.io/coreos/prometheus-config-reloader:v0.0.1
args:
- '-config-volume-dir=/etc/prometheus/config'
- '-rule-volume-dir=/etc/prometheus/rules'

View file

@ -1,19 +1,19 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-watcher-example
name: prometheus-config-reloader-example
data:
configmaps.json: |+
{
"items": [
{
"name": "default/test0"
"key": "default/test0"
},
{
"name": "default/test1"
"key": "default/test1"
},
{
"name": "default/test2"
"key": "default/test2"
}
]
}

View file

@ -51,12 +51,12 @@ func newVolumeWatcher(client *k8s.Client, cfg config, logger log.Logger) *volume
}
}
type ConfigMap struct {
type ConfigMapReference struct {
Key string `json:"key"`
}
type ConfigMapList struct {
Items []*ConfigMap `json:"items"`
type ConfigMapReferenceList struct {
Items []*ConfigMapReference `json:"items"`
}
func (w *volumeWatcher) UpdateRuleFiles() error {
@ -66,7 +66,7 @@ func (w *volumeWatcher) UpdateRuleFiles() error {
}
defer file.Close()
configMaps := ConfigMapList{}
configMaps := ConfigMapReferenceList{}
err = json.NewDecoder(file).Decode(&configMaps)
if err != nil {
return err
@ -224,23 +224,6 @@ func (w *volumeWatcher) Run() {
}
defer watcher.Close()
done := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Events:
if event.Op&fsnotify.Create == fsnotify.Create {
if filepath.Base(event.Name) == "..data" {
w.logger.Log("msg", "ConfigMap modified.")
w.Refresh()
}
}
case err := <-watcher.Errors:
w.logger.Log("err", err)
}
}
}()
w.logger.Log("msg", "Starting...")
w.Refresh()
err = watcher.Add(w.cfg.configVolumeDir)
@ -249,7 +232,19 @@ func (w *volumeWatcher) Run() {
os.Exit(1)
}
<-done
for {
select {
case event := <-watcher.Events:
if event.Op&fsnotify.Create == fsnotify.Create {
if filepath.Base(event.Name) == "..data" {
w.logger.Log("msg", "ConfigMap modified.")
w.Refresh()
}
}
case err := <-watcher.Errors:
w.logger.Log("err", err)
}
}
}
func main() {
@ -257,7 +252,7 @@ func main() {
With("ts", log.DefaultTimestampUTC, "caller", log.DefaultCaller)
cfg := config{}
flags := flag.NewFlagSet("prometheus-watcher", flag.ExitOnError)
flags := flag.NewFlagSet("prometheus-config-reloader", flag.ExitOnError)
flags.StringVar(&cfg.configVolumeDir, "config-volume-dir", "", "The directory to watch for changes to reload Prometheus.")
flags.StringVar(&cfg.ruleVolumeDir, "rule-volume-dir", "", "The directory to write rule files to.")
flags.StringVar(&cfg.reloadUrl, "reload-url", "", "The URL to call when intending to reload Prometheus.")

View file

@ -1 +0,0 @@
prometheus-watcher

View file

@ -1,5 +0,0 @@
FROM quay.io/prometheus/busybox:latest
ADD prometheus-watcher /bin/prometheus-watcher
ENTRYPOINT ["/bin/prometheus-watcher"]

3
hack/show-rules.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
kubectl -n prometheus-operator-e2e-tests exec -it prometheus-test-0 -c prometheus '/bin/sh -c "cat /etc/prometheus/rules/rules-0/test.rules"'

View file

@ -74,12 +74,12 @@ type Operator struct {
// Config defines configuration parameters for the Operator.
type Config struct {
Host string
KubeletObject string
TLSInsecure bool
TLSConfig rest.TLSClientConfig
ConfigReloaderImage string
PrometheusWatcherImage string
Host string
KubeletObject string
TLSInsecure bool
TLSConfig rest.TLSClientConfig
ConfigReloaderImage string
PrometheusConfigReloader string
}
// New creates a new controller.

View file

@ -122,30 +122,30 @@ func makeEmptyConfig(name string, configMaps []*v1.ConfigMap) (*v1.Secret, error
return s, nil
}
type ConfigMap struct {
type ConfigMapReference struct {
Key string `json:"key"`
Checksum string `json:"checksum"`
}
type ConfigMapList struct {
Items []*ConfigMap `json:"items"`
type ConfigMapReferenceList struct {
Items []*ConfigMapReference `json:"items"`
}
func makeRuleConfigMap(cm *v1.ConfigMap) (*ConfigMap, error) {
func makeRuleConfigMap(cm *v1.ConfigMap) (*ConfigMapReference, error) {
hash := sha256.New()
err := json.NewEncoder(hash).Encode(cm)
if err != nil {
return nil, err
}
return &ConfigMap{
return &ConfigMapReference{
Key: cm.Namespace + "/" + cm.Name,
Checksum: fmt.Sprintf("%x", hash.Sum(nil)),
}, nil
}
func makeRuleConfigMapListFile(configMaps []*v1.ConfigMap) ([]byte, error) {
cml := &ConfigMapList{}
cml := &ConfigMapReferenceList{}
for _, cm := range configMaps {
configmap, err := makeRuleConfigMap(cm)
@ -341,8 +341,8 @@ func makeStatefulSetSpec(p v1alpha1.Prometheus, c *Config, ruleConfigMaps []*v1.
},
Resources: p.Spec.Resources,
}, {
Name: "prometheus-watcher",
Image: c.PrometheusWatcherImage,
Name: "prometheus-config-reloader",
Image: c.PrometheusConfigReloader,
Args: configReloadArgs,
VolumeMounts: configReloadVolumeMounts,
Resources: v1.ResourceRequirements{

View file

@ -233,7 +233,7 @@ func TestPrometheusReloadRules(t *testing.T) {
// remounting a ConfigMap can take some time
err = framework.Poll(time.Minute*5, time.Second, func() (bool, error) {
logs, err := framework.GetLogs(fmt.Sprintf("prometheus-%s-0", name), "prometheus-watcher")
logs, err := framework.GetLogs(fmt.Sprintf("prometheus-%s-0", name), "prometheus-config-reloader")
if err != nil {
return false, err
}