Skip to content
Snippets Groups Projects
Commit 889f7cea authored by Frederic Branczyk's avatar Frederic Branczyk Committed by GitHub
Browse files

Merge pull request #859 from brancz/metrics-rbac

kube-prometheus: Add RBAC authorization to metrics endpoints
parents d05a3ac4 4402d451
No related branches found
No related tags found
No related merge requests found
Showing
with 121 additions and 21 deletions
...@@ -28,3 +28,11 @@ rules: ...@@ -28,3 +28,11 @@ rules:
- cronjobs - cronjobs
- jobs - jobs
verbs: ["list", "watch"] verbs: ["list", "watch"]
- apiGroups: ["authentication.k8s.io"]
resources:
- tokenreviews
verbs: ["create"]
- apiGroups: ["authorization.k8s.io"]
resources:
- subjectaccessreviews
verbs: ["create"]
\ No newline at end of file
...@@ -11,17 +11,43 @@ spec: ...@@ -11,17 +11,43 @@ spec:
spec: spec:
serviceAccountName: kube-state-metrics serviceAccountName: kube-state-metrics
containers: containers:
- name: kube-state-metrics - name: kube-rbac-proxy-main
image: quay.io/coreos/kube-state-metrics:v1.0.1 image: quay.io/brancz/kube-rbac-proxy:v0.2.0
args:
- "--secure-listen-address=:8443"
- "--upstream=http://127.0.0.1:8081/"
ports:
- name: https-main
containerPort: 8443
resources:
requests:
memory: 20Mi
cpu: 10m
limits:
memory: 40Mi
cpu: 20m
- name: kube-rbac-proxy-self
image: quay.io/brancz/kube-rbac-proxy:v0.2.0
args:
- "--secure-listen-address=:9443"
- "--upstream=http://127.0.0.1:8082/"
ports: ports:
- name: metrics - name: https-self
containerPort: 8080 containerPort: 9443
readinessProbe: resources:
httpGet: requests:
path: /healthz memory: 20Mi
port: 8080 cpu: 10m
initialDelaySeconds: 5 limits:
timeoutSeconds: 5 memory: 40Mi
cpu: 20m
- name: kube-state-metrics
image: quay.io/coreos/kube-state-metrics:v1.2.0-rc.0
args:
- "--host=127.0.0.1"
- "--port=8081"
- "--telemetry-host=127.0.0.1"
- "--telemetry-port=8082"
- name: addon-resizer - name: addon-resizer
image: gcr.io/google_containers/addon-resizer:1.0 image: gcr.io/google_containers/addon-resizer:1.0
resources: resources:
......
...@@ -6,10 +6,15 @@ metadata: ...@@ -6,10 +6,15 @@ metadata:
k8s-app: kube-state-metrics k8s-app: kube-state-metrics
name: kube-state-metrics name: kube-state-metrics
spec: spec:
clusterIP: None
ports: ports:
- name: http-metrics - name: https-main
port: 8080 port: 8443
targetPort: metrics targetPort: https-main
protocol: TCP
- name: https-self
port: 9443
targetPort: https-self
protocol: TCP protocol: TCP
selector: selector:
app: kube-state-metrics app: kube-state-metrics
......
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: node-exporter
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: node-exporter
subjects:
- kind: ServiceAccount
name: node-exporter
namespace: monitoring
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: node-exporter
rules:
- apiGroups: ["authentication.k8s.io"]
resources:
- tokenreviews
verbs: ["create"]
- apiGroups: ["authorization.k8s.io"]
resources:
- subjectaccessreviews
verbs: ["create"]
...@@ -3,24 +3,26 @@ kind: DaemonSet ...@@ -3,24 +3,26 @@ kind: DaemonSet
metadata: metadata:
name: node-exporter name: node-exporter
spec: spec:
updateStrategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
template: template:
metadata: metadata:
labels: labels:
app: node-exporter app: node-exporter
name: node-exporter name: node-exporter
spec: spec:
serviceAccountName: node-exporter
hostNetwork: true hostNetwork: true
hostPID: true hostPID: true
containers: containers:
- image: quay.io/prometheus/node-exporter:v0.15.0 - image: quay.io/prometheus/node-exporter:v0.15.0
args: args:
- "--web.listen-address=127.0.0.1:9101"
- "--path.procfs=/host/proc" - "--path.procfs=/host/proc"
- "--path.sysfs=/host/sys" - "--path.sysfs=/host/sys"
name: node-exporter name: node-exporter
ports:
- containerPort: 9100
hostPort: 9100
name: scrape
resources: resources:
requests: requests:
memory: 30Mi memory: 30Mi
...@@ -35,6 +37,22 @@ spec: ...@@ -35,6 +37,22 @@ spec:
- name: sys - name: sys
readOnly: true readOnly: true
mountPath: /host/sys mountPath: /host/sys
- name: kube-rbac-proxy
image: quay.io/brancz/kube-rbac-proxy:v0.2.0
args:
- "--secure-listen-address=:9100"
- "--upstream=http://127.0.0.1:9101/"
ports:
- containerPort: 9100
hostPort: 9100
name: https
resources:
requests:
memory: 20Mi
cpu: 10m
limits:
memory: 40Mi
cpu: 20m
tolerations: tolerations:
- effect: NoSchedule - effect: NoSchedule
operator: Exists operator: Exists
......
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-exporter
...@@ -9,7 +9,7 @@ spec: ...@@ -9,7 +9,7 @@ spec:
type: ClusterIP type: ClusterIP
clusterIP: None clusterIP: None
ports: ports:
- name: http-metrics - name: https
port: 9100 port: 9100
protocol: TCP protocol: TCP
selector: selector:
......
...@@ -13,6 +13,16 @@ spec: ...@@ -13,6 +13,16 @@ spec:
matchNames: matchNames:
- monitoring - monitoring
endpoints: endpoints:
- port: http-metrics - port: https-main
scheme: https
interval: 30s interval: 30s
honorLabels: true honorLabels: true
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
- port: https-self
scheme: https
interval: 30s
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
...@@ -13,5 +13,9 @@ spec: ...@@ -13,5 +13,9 @@ spec:
matchNames: matchNames:
- monitoring - monitoring
endpoints: endpoints:
- port: http-metrics - port: https
scheme: https
interval: 30s interval: 30s
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment