Skip to content

Commit 351daf0

Browse files
Merge pull request #1393 from prashbnair/mon-1895
static auth changes for node-exporter
2 parents a346405 + 1c9a14e commit 351daf0

File tree

6 files changed

+65
-0
lines changed

6 files changed

+65
-0
lines changed

assets/node-exporter/daemonset.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ spec:
6565
- --tls-cert-file=/etc/tls/private/tls.crt
6666
- --tls-private-key-file=/etc/tls/private/tls.key
6767
- --client-ca-file=/etc/tls/client/client-ca.crt
68+
- --config-file=/etc/kube-rbac-policy/config.yaml
6869
env:
6970
- name: IP
7071
valueFrom:
@@ -92,6 +93,9 @@ spec:
9293
- mountPath: /etc/tls/client
9394
name: metrics-client-ca
9495
readOnly: false
96+
- mountPath: /etc/kube-rbac-policy
97+
name: node-exporter-kube-rbac-proxy-config
98+
readOnly: true
9599
hostNetwork: true
96100
hostPID: true
97101
initContainers:
@@ -147,6 +151,9 @@ spec:
147151
- configMap:
148152
name: metrics-client-ca
149153
name: metrics-client-ca
154+
- name: node-exporter-kube-rbac-proxy-config
155+
secret:
156+
secretName: node-exporter-kube-rbac-proxy-config
150157
updateStrategy:
151158
rollingUpdate:
152159
maxUnavailable: 10%
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
data: {}
3+
kind: Secret
4+
metadata:
5+
labels:
6+
app.kubernetes.io/part-of: openshift-monitoring
7+
name: node-exporter-kube-rbac-proxy-config
8+
namespace: openshift-monitoring
9+
stringData:
10+
config.yaml: |-
11+
"authorization":
12+
"static":
13+
- "path": "/metrics"
14+
"resourceRequest": false
15+
"user":
16+
"name": "system:serviceaccount:openshift-monitoring:prometheus-k8s"
17+
"verb": "get"
18+
type: Opaque

jsonnet/components/node-exporter.libsonnet

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ local wtmpPath = '/var/log/wtmp';
55
local wtmpVolumeName = 'node-exporter-wtmp';
66

77
local nodeExporter = import 'github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus/components/node-exporter.libsonnet';
8+
local generateSecret = import '../utils/generate-secret.libsonnet';
89

910
function(params)
1011
local cfg = params;
@@ -126,6 +127,7 @@ function(params)
126127
'--tls-cert-file=/etc/tls/private/tls.crt',
127128
'--tls-private-key-file=/etc/tls/private/tls.key',
128129
'--client-ca-file=/etc/tls/client/client-ca.crt',
130+
'--config-file=/etc/kube-rbac-policy/config.yaml',
129131
],
130132
terminationMessagePolicy: 'FallbackToLogsOnError',
131133
volumeMounts: [
@@ -139,6 +141,11 @@ function(params)
139141
name: 'metrics-client-ca',
140142
readOnly: false,
141143
},
144+
{
145+
mountPath: '/etc/kube-rbac-policy',
146+
name: 'node-exporter-kube-rbac-proxy-config',
147+
readOnly: true,
148+
},
142149
],
143150
resources: {
144151
requests: {
@@ -206,6 +213,12 @@ function(params)
206213
name: 'metrics-client-ca',
207214
},
208215
},
216+
{
217+
name: 'node-exporter-kube-rbac-proxy-config',
218+
secret: {
219+
secretName: 'node-exporter-kube-rbac-proxy-config',
220+
},
221+
},
209222
],
210223
securityContext: {},
211224
priorityClassName: 'system-cluster-critical',
@@ -216,4 +229,5 @@ function(params)
216229
},
217230
},
218231
},
232+
kubeRbacProxySecret: generateSecret.staticAuthSecret(cfg.namespace, cfg.commonLabels, 'node-exporter-kube-rbac-proxy-config'),
219233
}

pkg/manifests/manifests.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ var (
9191
NodeExporterSecurityContextConstraints = "node-exporter/security-context-constraints.yaml"
9292
NodeExporterServiceMonitor = "node-exporter/service-monitor.yaml"
9393
NodeExporterPrometheusRule = "node-exporter/prometheus-rule.yaml"
94+
NodeExporterKubeRbacProxySecret = "node-exporter/kube-rbac-proxy-secret.yaml"
9495

9596
PrometheusK8sClusterRoleBinding = "prometheus-k8s/cluster-role-binding.yaml"
9697
PrometheusK8sRoleBindingConfig = "prometheus-k8s/role-binding-config.yaml"
@@ -774,6 +775,17 @@ func (f *Factory) NodeExporterPrometheusRule() (*monv1.PrometheusRule, error) {
774775
return f.NewPrometheusRule(f.assets.MustNewAssetReader(NodeExporterPrometheusRule))
775776
}
776777

778+
func (f *Factory) NodeExporterRBACProxySecret() (*v1.Secret, error) {
779+
s, err := f.NewSecret(f.assets.MustNewAssetReader(NodeExporterKubeRbacProxySecret))
780+
if err != nil {
781+
return nil, err
782+
}
783+
784+
s.Namespace = f.namespace
785+
786+
return s, nil
787+
}
788+
777789
func (f *Factory) PrometheusK8sClusterRoleBinding() (*rbacv1.ClusterRoleBinding, error) {
778790
crb, err := f.NewClusterRoleBinding(f.assets.MustNewAssetReader(PrometheusK8sClusterRoleBinding))
779791
if err != nil {

pkg/manifests/manifests_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,11 @@ func TestUnconfiguredManifests(t *testing.T) {
703703
if err != nil {
704704
t.Fatal(err)
705705
}
706+
707+
_, err = f.NodeExporterRBACProxySecret()
708+
if err != nil {
709+
t.Fatal(err)
710+
}
706711
}
707712

708713
func TestSharingConfig(t *testing.T) {

pkg/tasks/nodeexporter.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,15 @@ func (t *NodeExporterTask) Run(ctx context.Context) error {
7474
return errors.Wrap(err, "reconciling node-exporter ClusterRoleBinding failed")
7575
}
7676

77+
nes, err := t.factory.NodeExporterRBACProxySecret()
78+
if err != nil {
79+
return errors.Wrap(err, "intializing node-exporter rbac proxy secret failed")
80+
}
81+
82+
err = t.client.CreateIfNotExistSecret(ctx, nes)
83+
if err != nil {
84+
return errors.Wrap(err, "creating node-exporter rbac proxy secret failed")
85+
}
7786
svc, err := t.factory.NodeExporterService()
7887
if err != nil {
7988
return errors.Wrap(err, "initializing node-exporter Service failed")

0 commit comments

Comments
 (0)