Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Telemeter client fixes #109

Merged
merged 4 commits into from
Oct 1, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@
[[constraint]]
name = "k8s.io/client-go"
version = "8.0.0"

[[constraint]]
name = "gopkg.in/yaml.v2"
version = "v2.2.1"
2 changes: 1 addition & 1 deletion assets/prometheus-k8s/prometheus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,4 @@ spec:
matchExpressions:
- key: k8s-app
operator: Exists
version: v2.3.2
version: v2.4.2
9 changes: 0 additions & 9 deletions assets/prometheus-k8s/rules.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -954,15 +954,6 @@ spec:
for: 5m
labels:
severity: critical
- alert: AlertmanagerDownOrMissing
annotations:
message: An unexpected number of Alertmanagers were scraped or disappeared
from discovery.
expr: |
label_replace(prometheus_operator_alertmanager_spec_replicas{job="prometheus-operator"}, "job", "alertmanager-$1", "alertmanager", "(.*)") / ON(job) GROUP_RIGHT() sum(up{job="alertmanager-main"}) BY (job) != 1
for: 5m
labels:
severity: warning
- alert: AlertmanagerFailedReload
annotations:
message: Reloading Alertmanager's configuration has failed for {{ $labels.namespace
Expand Down
6 changes: 1 addition & 5 deletions assets/telemeter-client/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ spec:
secretKeyRef:
key: to
name: telemeter-client
image: openshift/telemeter:v3.11
image: quay.io/openshift/origin-telemeter:v4.0
name: telemeter-client
ports:
- containerPort: 8080
Expand All @@ -45,10 +45,6 @@ spec:
- mountPath: /etc/telemeter
name: credentials
readOnly: false
securityContext:
runAsNonRoot: true
runAsUser: 65534
serviceAccountName: telemeter-client
volumes:
- name: credentials
secret:
Expand Down
8 changes: 4 additions & 4 deletions jsonnet/jsonnetfile.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"subdir": "contrib/kube-prometheus/jsonnet/kube-prometheus"
}
},
"version": "fd3299ce5ceef27c092082f74c0aafcf93a41d64"
"version": "807a9e10cc2387b7bf1bf110fb2bcc27471ce005"
},
{
"name": "ksonnet",
Expand Down Expand Up @@ -48,7 +48,7 @@
"subdir": "grafana-builder"
}
},
"version": "94aef231932810633416bfe596a41dbad2b1ebb9"
"version": "bce24b0b087f7dc09c9e9f066f3e554a851792e9"
},
{
"name": "grafana",
Expand Down Expand Up @@ -78,7 +78,7 @@
"subdir": "Documentation/etcd-mixin"
}
},
"version": "a3e242d80ae1a13ae57904fc12e91fe4c9ecf972"
"version": "1a8c52097971fbc1e0988ab8f807c7bdde1fc3e7"
},
{
"name": "telemeter-client",
Expand All @@ -88,7 +88,7 @@
"subdir": "jsonnet/telemeter/client"
}
},
"version": "45552d0fa00f856ff1b564ab195349029e76dcc0"
"version": "f6385aa775963ad40055e95971d9e3107b9abd81"
}
]
}
10 changes: 5 additions & 5 deletions pkg/manifests/bindata.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pkg/manifests/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ func (c *Config) applyDefaults() {
c.TelemeterClientConfig = &TelemeterClientConfig{}
}
if c.TelemeterClientConfig.BaseImage == "" {
c.TelemeterClientConfig.BaseImage = "openshift/telemeter-client"
c.TelemeterClientConfig.BaseImage = "quay.io/openshift/origin-telemeter"
}
}

Expand Down
47 changes: 40 additions & 7 deletions pkg/manifests/manifests.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,13 @@ var (
ClusterMonitoringOperatorServiceMonitor = "assets/cluster-monitoring-operator/service-monitor.yaml"
ClusterMonitoringClusterRole = "assets/cluster-monitoring-operator/cluster-role.yaml"

TelemeterClientDeployment = "assets/telemeter-client/deployment.yaml"
TelemeterClientService = "assets/telemeter-client/service.yaml"
TelemeterClientServiceMonitor = "assets/telemeter-client/service-monitor.yaml"
TelemeterClientSecret = "assets/telemeter-client/secret.yaml"
TelemeterClientClusterRole = "assets/telemeter-client/cluster-role.yaml"
TelemeterClientClusterRoleBinding = "assets/telemeter-client/cluster-role-binding.yaml"
TelemeterClientDeployment = "assets/telemeter-client/deployment.yaml"
TelemeterClientSecret = "assets/telemeter-client/secret.yaml"
TelemeterClientService = "assets/telemeter-client/service.yaml"
TelemeterClientServiceAccount = "assets/telemeter-client/service-account.yaml"
TelemeterClientServiceMonitor = "assets/telemeter-client/service-monitor.yaml"
)

var (
Expand Down Expand Up @@ -1431,15 +1434,33 @@ func (f *Factory) NewClusterRole(manifest io.Reader) (*rbacv1beta1.ClusterRole,
return NewClusterRole(manifest)
}

// TelemeterClientClusterRole generates a new ClusterRole for Telemeter client.
func (f *Factory) TelemeterClientClusterRole() (*rbacv1beta1.ClusterRole, error) {
cr, err := f.NewClusterRole(MustAssetReader(TelemeterClientClusterRole))
if err != nil {
return nil, err
}

return cr, nil
}

// TelemeterClientClusterRoleBinding generates a new ClusterRoleBinding for Telemeter client.
func (f *Factory) TelemeterClientClusterRoleBinding() (*rbacv1beta1.ClusterRoleBinding, error) {
crb, err := f.NewClusterRoleBinding(MustAssetReader(TelemeterClientClusterRoleBinding))
if err != nil {
return nil, err
}

return crb, nil
}

// TelemeterClientServiceMonitor generates a new ServiceMonitor for Telemeter client.
func (f *Factory) TelemeterClientServiceMonitor() (*monv1.ServiceMonitor, error) {
sm, err := f.NewServiceMonitor(MustAssetReader(TelemeterClientServiceMonitor))
if err != nil {
return nil, err
}

sm.Spec.Endpoints[0].TLSConfig.ServerName = fmt.Sprintf("telemeter.%s.svc", f.namespace)
sm.Spec.Endpoints[1].TLSConfig.ServerName = fmt.Sprintf("telemeter.%s.svc", f.namespace)
sm.Namespace = f.namespace

return sm, nil
Expand All @@ -1453,7 +1474,7 @@ func (f *Factory) TelemeterClientDeployment() (*appsv1.Deployment, error) {
}

if f.config.TelemeterClientConfig.BaseImage != "" {
image, err := imageFromString(d.Spec.Template.Spec.Containers[2].Image)
image, err := imageFromString(d.Spec.Template.Spec.Containers[0].Image)
if err != nil {
return nil, err
}
Expand All @@ -1479,6 +1500,18 @@ func (f *Factory) TelemeterClientService() (*v1.Service, error) {
return s, nil
}

// TelemeterClientServiceAccount generates a new ServiceAccount for Telemeter client.
func (f *Factory) TelemeterClientServiceAccount() (*v1.ServiceAccount, error) {
s, err := f.NewServiceAccount(MustAssetReader(TelemeterClientServiceAccount))
if err != nil {
return nil, err
}

s.Namespace = f.namespace

return s, nil
}

// TelemeterClientSecret generates a new Secret for Telemeter client.
func (f *Factory) TelemeterClientSecret() (*v1.Secret, error) {
s, err := f.NewSecret(MustAssetReader(TelemeterClientSecret))
Expand Down
3 changes: 2 additions & 1 deletion pkg/operator/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/golang/glog"
"github.com/pkg/errors"
"github.com/prometheus/client_golang/prometheus"
"gopkg.in/yaml.v2"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
Expand Down Expand Up @@ -285,7 +286,7 @@ func (o *Operator) Config() *manifests.Config {
return c
}
ic := make(map[string]interface{})
if err := json.Unmarshal(cmap.BinaryData["install-config"], &ic); err != nil {
if err := yaml.Unmarshal([]byte(cmap.Data["install-config"]), &ic); err != nil {
glog.V(4).Infof("Could not parse cluster configuration. Proceeding without it.")
return c
}
Expand Down
30 changes: 30 additions & 0 deletions pkg/tasks/telemeter.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,36 @@ func (t *TelemeterClientTask) Run() error {
return errors.Wrap(err, "reconciling Telemeter client ServiceMonitor failed")
}

sa, err := t.factory.TelemeterClientServiceAccount()
if err != nil {
return errors.Wrap(err, "initializing Telemeter client Service failed")
}

err = t.client.CreateOrUpdateServiceAccount(sa)
if err != nil {
return errors.Wrap(err, "reconciling Telemeter client ServiceAccount failed")
}

cr, err := t.factory.TelemeterClientClusterRole()
if err != nil {
return errors.Wrap(err, "initializing Telemeter client ClusterRole failed")
}

err = t.client.CreateOrUpdateClusterRole(cr)
if err != nil {
return errors.Wrap(err, "reconciling Telemeter client ClusterRole failed")
}

crb, err := t.factory.TelemeterClientClusterRoleBinding()
if err != nil {
return errors.Wrap(err, "initializing Telemeter client ClusterRoleBinding failed")
}

err = t.client.CreateOrUpdateClusterRoleBinding(crb)
if err != nil {
return errors.Wrap(err, "reconciling Telemeter client ClusterRoleBinding failed")
}

svc, err := t.factory.TelemeterClientService()
if err != nil {
return errors.Wrap(err, "initializing Telemeter client Service failed")
Expand Down